Commit Graph

29 Commits

Author SHA1 Message Date
Michael McLoughlin
b758297525 .github: upgrade setup-go action (#259)
Upgrade to v3.0.0. Set check-latest option.
2022-04-23 21:01:50 -07:00
Michael McLoughlin
77ce540158 tests/thirdparty: add mmcloughlin/md4 (#249) 2022-04-17 14:08:30 -07:00
Michael McLoughlin
a25e011a06 tests/thirdparty: add oasisprotocol/deoxysii (#247)
Fixes #246
2022-04-16 21:25:22 -07:00
Michael McLoughlin
b0c64b2e52 ci: bump to go 1.18 (#239) 2022-04-10 21:03:05 -07:00
Michael McLoughlin
af3e578ab4 tests/thirdparty: re-enable segmentio/asm (#232)
Fixes #229
2021-11-13 13:36:54 -08:00
Michael McLoughlin
68350e4e08 tests/thirdparty: add lukechampine/blake3 (#231)
Fixes #164
2021-11-12 22:22:50 -08:00
Michael McLoughlin
b76e849b5c 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 19:02:39 -08:00
Michael McLoughlin
6c0ed1c4e8 tests/thirdparty: add filippo.io/edwards25519 (#227)
Updates #226
2021-11-07 18:29:47 -08:00
Michael McLoughlin
f355d27b13 tests/thirdparty: package metadata (#223)
Fetches third-party package metadata from Github.
2021-11-07 16:13:33 -08:00
Michael McLoughlin
afe2d539b8 tests/thirdparty: golang.org/x/crypto/curve25519 (#222) 2021-11-07 01:39:03 -07:00
Michael McLoughlin
14c87c7da2 tests/thirdparty: add oasisprotocol/curve25519-voi (#220)
Fixes #202
2021-11-06 22:42:31 -07:00
Michael McLoughlin
2ca6e5e9f6 tests/thirdparty: add ericlagergren/lwcrypto (#219)
Fixes #188
2021-11-06 22:30:43 -07:00
Michael McLoughlin
9c70781236 all: go 1.17 (#197)
Bump CI Go versions to 1.16 and 1.17.
Update build tags with `go:build` equivalents.
Upgrade asmfmt tool for new `go:build` support.

Updates #183
2021-10-29 01:18:34 -07:00
Michael McLoughlin
9c815a0581 tests/thirdparty: fix phoreproject-bls (#204)
This started failing under Go 1.17.2 due to a missing go mod tidy in the
root of the respository.
2021-10-27 23:03:23 -07:00
Michael McLoughlin
5e686673b2 tests/thirdparty: add segmentio/asm (#201)
Adds third-party test for https://github.com/segmentio/asm.

Fixes #200
2021-09-15 23:49:08 -07:00
Michael McLoughlin
8ff8e3b751 tests/thirdparty: fix and run as github workflow (#198)
As part of fixing failing third-party tests, this PR significantly
rearchitects their specification and execution.

Third-party tests are now specified in a much more flexible format allowing
more customization on a per-package level. In addition, third-party tests are
now used to auto-generate a Github Actions workflow to perform the tests in
parallel. This not only gives faster feedback on PRs, but will also allow us
to more quickly narrow down on which packages are failing. An additional
workflow also confirms that local execution of third-party tests is consistent
with the Github Actions version. This workflow only runs when tests/thirdparty
itself is changed.
2021-09-15 23:25:51 -07:00
Michael McLoughlin
b935256fa5 ci: upgrade codecov action (#196)
Upgrades codecov-action in order to fix codecov errors CI, for example:

https://github.com/mmcloughlin/avo/runs/3389170262?check_suite_focus=true#step:10:11

See codecov/codecov-action#322.
2021-08-21 14:56:26 -07:00
Michael McLoughlin
3a219c8d3a ci: github actions hardening (#190)
Restrict permissions of github token. Pin action versions.

Following advice in briansmith/untrusted#50.
2021-04-27 21:42:09 -07:00
Michael McLoughlin
6bad393fdc ci: bump to go 1.16 (#166)
Required updates to the thirdparty test suite due to modules changes in go toolchain.
2021-04-19 14:34:35 -07:00
Michael McLoughlin
45c8ae10fd ci: switch to env files (#160)
Switch to env files following the deprecation of set-env and add-path commands.

https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/
2020-11-29 17:27:00 -08:00
Michael McLoughlin
fea6accff2 ci: upgrade to go 1.15 (#158) 2020-11-04 23:04:25 -08:00
Michael McLoughlin
f891fe8d97 ci: test on go 1.14 (#138)
Add go 1.14 to CI testing. Upgrade golang.org/x/tools dependency to resolve golang/go#37617.
2020-04-25 01:27:57 -07:00
Michael McLoughlin
d51141dc8f tests/thirdparty: add klauspost/compress/s2 (#131)
Adds @klauspost's S2 implementation to the third party test suite.

The full klauspost/compress tests are slow but we only care about the S2 sub-package. Therefore this PR also adds the option to only run a subset of the package tests, controlled by a "test" parameter in the JSON configuration.

Closes #130
2020-01-28 23:27:12 -05:00
Michael McLoughlin
205fc6a3d7 tests: integration tests for third-party packages (#112)
Closes #103
2020-01-06 22:56:38 -05:00
Michael McLoughlin
49adad921f ci: change schedule (#110)
Schedule CI early morning every Saturday. Trigger only on pushes to master.

Updates #106
2020-01-03 22:49:38 -08:00
Michael McLoughlin
9f9d2ca8cf Revert "ci: go version 1.x"
This reverts commit 5c45f0f96c.
2020-01-03 22:40:05 -08:00
Michael McLoughlin
5c45f0f96c ci: go version 1.x 2020-01-03 22:37:11 -08:00
Michael McLoughlin
3d189f08a9 ci: separate lint job (#109)
Updates #106
2020-01-03 22:06:24 -08:00
Michael McLoughlin
3426f8bd2d ci: github actions (#107)
Github actions workflow for CI.

Updates #106
2020-01-03 17:32:09 -08:00