Skip to content

Releases: mmcloughlin/avo

v0.6.0

07 Jan 21:34
11e0a21
Compare
Choose a tag to compare

Extends instruction set support to include the extensions:

Third-party test suite now includes the standard library package crypto/internal/bigmod.

Fixes issue reported in #387 where integer float data was printed incorrectly and therefore parsed as the wrong type by the Go assembler.

Includes miscellaneous tweaks to support Go 1.20 and 1.21 releases. The go.mod file bumps the minimum Go version to 1.18.

What's Changed

Full Changelog: v0.5.0...v0.6.0

v0.5.0

27 Nov 04:47
fa3cfb0
Compare
Choose a tag to compare

Fixes issue reported in #336 where automatic load/store generation does not work for boolean function arguments or return values.

Adds an Adopters README section and full adopters list to showcase exciting uses of avo across the Go ecosystem. The list is auto-generated from the third-party test suite. If you'd like to see your project listed, please reach out.

The third-party test suite now includes:

Includes small tweaks to support Go 1.18 and 1.19 releases. The go.mod file bumps the minimum Go version to 1.16.

Implements bot automation for upgrading direct module dependencies and keeping third-party package metadata up-to-date.

What's Changed

Full Changelog: v0.4.0...v0.5.0

v0.4.0

13 Nov 03:22
Compare
Choose a tag to compare

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 instruciton 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.

Third-party test suite now also includes:

Changelog

Full Changelog: v0.3.1...v0.4.0

v0.3.1

31 Oct 01:56
6acd6a0
Compare
Choose a tag to compare
  • Fix argument size computation bug reported in #191 and #195. Previously avo would incorrectly add padding to the end of function arguments in the case where the function has no return values, triggering an asmdecl vet error.
  • Add extensive test case with randomly generated function signatures.
  • Upgrade direct module dependencies.

Changelog

Full Changelog: v0.3.0...v0.3.1

v0.3.0

31 Oct 01:51
1d235fb
Compare
Choose a tag to compare
  • Support for outputting go:build constraints: avo will output +build, go:build or both depending on the Go version.
  • Third-party test suite refactored for stability and parallel execution in Github actions

Changelog

Full Changelog: v0.2.0...v0.3.0