Files
avo/.golangci.yml

97 lines
2.2 KiB
YAML
Raw Normal View History

all: AVX-512 (#217) Extends avo to support most AVX-512 instruction sets. The instruction type is extended to support suffixes. The K family of opmask registers is added to the register package, and the operand package is updated to support the new operand types. Move instruction deduction in `Load` and `Store` is extended to support KMOV* and VMOV* forms. Internal code generation packages were overhauled. Instruction database loading required various messy changes to account for the additional complexities of the AVX-512 instruction sets. The internal/api package was added to introduce a separation between instruction forms in the database, and the functions avo provides to create them. This was required since with instruction suffixes there is no longer a one-to-one mapping between instruction constructors and opcodes. AVX-512 bloated generated source code size substantially, initially increasing compilation and CI test times to an unacceptable level. Two changes were made to address this: 1. Instruction constructors in the `x86` package moved to an optab-based approach. This compiles substantially faster than the verbose code generation we had before. 2. The most verbose code-generated tests are moved under build tags and limited to a stress test mode. Stress test builds are run on schedule but not in regular CI. An example of AVX-512 accelerated 16-lane MD5 is provided to demonstrate and test the new functionality. Updates #20 #163 #229 Co-authored-by: Vaughn Iverson <vsivsi@yahoo.com>
2021-11-12 18:35:36 -08:00
run:
timeout: 5m
2018-12-05 00:49:12 -08:00
linters:
2019-01-09 22:31:14 -08:00
enable-all: true
disable:
- cyclop
- dupword
- err113
- errname
- exhaustruct
- forbidigo
- forcetypeassert
- funlen
- gochecknoglobals
- gochecknoinits
- goconst
- godox
- gosec
- iface
- inamedparam
- ireturn
- lll
- mnd
- nlreturn
- nonamedreturns
- paralleltest
- perfsprint
- prealloc
- recvcheck
- rowserrcheck
- tagliatelle
- testpackage
- unparam
- varnamelen
- wastedassign
- wrapcheck
- wsl
2018-12-05 00:49:12 -08:00
linters-settings:
depguard:
rules:
main:
allow:
- github.com/mmcloughlin/avo
- golang.org/x/
- $gostd
gci:
sections:
- standard
- default
- prefix(github.com/mmcloughlin/avo)
revive:
enable-all-rules: true
rules:
- name: add-constant
disabled: true
- name: confusing-results
disabled: true
- name: cognitive-complexity
disabled: true
- name: cyclomatic
disabled: true
- name: deep-exit
disabled: true
- name: empty-block
disabled: true
- name: flag-parameter
disabled: true
- name: function-length
disabled: true
- name: if-return
disabled: true
- name: line-length-limit
disabled: true
- name: max-public-structs
disabled: true
- name: modifies-value-receiver
disabled: true
- name: unexported-naming
disabled: true
- name: unhandled-error
arguments:
- 'fmt\.(P|Fp)rint(ln|f)?'
- 'text/tabwriter\.Writer\.Flush'
- name: unused-parameter
disabled: true
- name: unused-receiver
disabled: true
issues:
exclude-use-default: false
exclude:
# errcheck: Almost all programs ignore errors on these functions and in most cases it's ok
- Error return value of .((os\.)?std(out|err)\..*|.*Close|.*Flush|os\.Remove(All)?|.*printf?|os\.(Un)?Setenv). is not checked
2019-01-13 11:09:37 -08:00
# gocritic: https://github.com/go-critic/go-critic/issues/762
- " with `(len|cap|real|imag)`"
all: AVX-512 (#217) Extends avo to support most AVX-512 instruction sets. The instruction type is extended to support suffixes. The K family of opmask registers is added to the register package, and the operand package is updated to support the new operand types. Move instruction deduction in `Load` and `Store` is extended to support KMOV* and VMOV* forms. Internal code generation packages were overhauled. Instruction database loading required various messy changes to account for the additional complexities of the AVX-512 instruction sets. The internal/api package was added to introduce a separation between instruction forms in the database, and the functions avo provides to create them. This was required since with instruction suffixes there is no longer a one-to-one mapping between instruction constructors and opcodes. AVX-512 bloated generated source code size substantially, initially increasing compilation and CI test times to an unacceptable level. Two changes were made to address this: 1. Instruction constructors in the `x86` package moved to an optab-based approach. This compiles substantially faster than the verbose code generation we had before. 2. The most verbose code-generated tests are moved under build tags and limited to a stress test mode. Stress test builds are run on schedule but not in regular CI. An example of AVX-512 accelerated 16-lane MD5 is provided to demonstrate and test the new functionality. Updates #20 #163 #229 Co-authored-by: Vaughn Iverson <vsivsi@yahoo.com>
2021-11-12 18:35:36 -08:00
# We want to allow all caps in certain cases.
- "ALL_CAPS in Go names"