29 Commits

Author SHA1 Message Date
33208a2356 update 2026-03-06 20:14:02 +00:00
Michael McLoughlin
11e0a2138b all: enable use-any revive rule (#417)
Enable the `use-any` `revive` rule which requires replacing the empty
interface `interface{}` with `any`.
2024-01-07 13:16:59 -08:00
Michael McLoughlin
8f726c0f4d doc: fix README ci badge (#352)
Update URL for CI status badge in README.

See badges/shields#8671
2023-01-07 10:46:51 -08:00
Michael McLoughlin
e788b7675f all: upgrade to golangci-lint v1.49.0 (#329)
Fixes #242
2022-09-05 17:25:03 -07:00
Michael McLoughlin
88c126385a doc: report project metadata update time (#286) 2022-05-09 00:34:16 +00:00
Michael McLoughlin
bdaad2bb98 internal/cmd/docgen: use "missingkey=error" (#287) 2022-05-09 00:23:31 +00:00
Michael McLoughlin
62c71109a4 tests/thirdparty: use Suite type for configuration (#285) 2022-05-08 16:55:51 -07:00
Michael McLoughlin
4ca3d8a29f doc: format stars count (#281)
Use the k format for thousands, just like Github itself.
2022-05-08 15:22:26 -07:00
Michael McLoughlin
84071ae4f9 tests/thirdparty: multiple packages per project (#262) 2022-04-24 20:20:11 -07:00
Michael McLoughlin
3d25f4574c doc: rounded avatars (#256)
Use weserv service to format avatars with circle masks. Make size configurable.

Tweak readme and adopters pages.

Updates #101
2022-04-18 00:49:52 -07:00
Michael McLoughlin
1cbd35f134 doc: Adopters page (#254)
Adds page with full list of `avo` adopters. Linked to from README.

Updates #101
2022-04-17 23:57:05 -07:00
Michael McLoughlin
57ea8119b7 doc: Adopters list in README (#252)
Adds a list of most popular projects using avo, based on Github Stars.

Auto-generated from the third-party packages list using docgen.

Updates #101
2022-04-17 22:38:54 -07:00
Michael McLoughlin
9fee3b0ead doc: generate README with docgen tool (#251)
Introduces a docgen tool for templated documentation generation, and uses it
to generate the README.

At the moment this change makes minimal difference to generating it with
embedmd. The difference is that docgen opens up the possibility to generate
documentation with more elaborate templating. The specific use case currently
in mind is including an adopters list that's kept in sync with the third-party
packages file.

Updates #101
2022-04-17 19:41:29 -07:00
Michael McLoughlin
72b8db9c80 all: upgrade golangci-lint and formatters (#240) 2022-03-27 15:31:26 -07: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
f295bde84c pass: ensure frame pointer register is saved (#174)
Currently `avo` uses `BP` as a standard general-purpose register. However, `BP` is used for the frame pointer and should be callee-save. Under some circumstances, the Go assembler will do this automatically, but not always. At the moment `avo` can produce code that clobbers the `BP` register. Since Go 1.16 this code will also fail a new `go vet` check.

This PR provides a (currently sub-optimal) fix for the issue. It introduces an `EnsureBasePointerCalleeSaved` pass which will check if the base pointer is written to by a function, and if so will artificially ensure that the function has a non-zero frame size. This will trigger the Go assembler to automatically save and restore the BP register.

In addition, we update the `asmdecl` tool to `asmvet`, which includes the `framepointer` vet check.

Updates #156
2021-04-18 18:37:56 -07:00
Josh Bleecher Snyder
599bdd1269 internal/cmd/avogen: write output file even when gofmt fails (#165)
This makes it easier to debug avogen: when you emit invalid syntax, you can inspect the generated file to determine what went wrong, instead of having only gofmt's error to work with.
2021-01-03 19:29:11 -08:00
Michael McLoughlin
a23fe8ee57 internal/cmd/asmdecl: standalone asmdecl checker
Updates #24
2019-01-13 11:40:47 -08:00
Michael McLoughlin
b0b4b88db4 avogen: package-level comment (#9) 2019-01-05 11:46:51 -08:00
Michael McLoughlin
ca5c7e7454 printer: add generated code warnings 2018-12-18 22:57:26 -08:00
Michael McLoughlin
c882e52510 printing: commit some refactors (probably broken) 2018-12-11 00:18:22 -08:00
Michael McLoughlin
69ee0e39cb parameter loading 2018-12-08 20:14:51 -08:00
Michael McLoughlin
9b9f5b7e0c first pass at a "builder" interface 2018-11-30 20:43:31 -08:00
Michael McLoughlin
4395adacc8 x86: rel types and generated tests 2018-11-27 22:08:11 -08:00
Michael McLoughlin
af02be06ba add skeleton for instruction constructors 2018-11-25 21:50:46 -08:00
Michael McLoughlin
09848512cc add -bootstrap option to avogen 2018-11-25 17:11:24 -08:00
Michael McLoughlin
6d3e3be578 generate test to ensure code generation worked 2018-11-24 17:53:17 -08:00
Michael McLoughlin
70dcf2b611 generate the instruction table 2018-11-24 13:47:30 -08:00
Michael McLoughlin
f1e1da6387 refactors to code generation 2018-11-24 13:00:27 -08:00