Commit Graph

95 Commits

Author SHA1 Message Date
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
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
ec9535c905 doc: link to Filippo's live stream in README (#187)
Link to Filippo's live stream of rewriting the filippo.io/edwards25519 assembly with avo.

Reformat the "learn more" links in a list.
2021-04-21 22:03:43 -07:00
Michael McLoughlin
039ef47f4f doc: mention #assembly slack channel (#161) 2020-12-16 15:13:06 -08:00
Michael McLoughlin
fb157e1de8 doc: point at go.dev 2020-02-01 15:50:37 -05:00
Michael McLoughlin
5a144d9b53 doc: link to gophercon talk 2020-01-27 13:35:45 -08:00
Michael McLoughlin
07e91579e2 meta: remove build link
Removing link since the "Actions" tab returns 404 when not logged in.

Updates #106
2020-01-03 22:29:23 -08:00
Michael McLoughlin
03ee750ed2 ci: disable travis (#108)
Deletes travis config and updates build badge.

Updates #106
2020-01-03 21:42:19 -08:00
Michael McLoughlin
c8004ba627 ir,build: pragma support (#97)
Adds support for arbitrary compiler directives.

Fixes #15
2019-09-16 11:01:48 -07:00
Michael McLoughlin
83fbad1a6b doc: add links to dotgo talk and slides 2019-05-14 21:00:33 -07:00
Michael McLoughlin
1735441939 all: apply gofumpt (#79)
Apply @mvdan's opinionated gofumpt formatter across the codebase.
2019-04-13 22:53:13 -05:00
Michael McLoughlin
eb225e9d2c gotypes,build: add Implement (#58)
By using Implement you can provide a definition of a function, taking the signature from a stub in the package. One major benefit of this approach is it makes it easy to handle external types in the function signature.

Updates #55
2019-01-22 22:35:01 -08:00
Michael McLoughlin
f1e854a1c0 doc: change travis badge to master branch
Previously it would show failing if there was a failing pull request.
2019-01-21 22:49:52 -08:00
Michael McLoughlin
5dc9498dac doc: go report badge 2019-01-13 12:06:47 -08:00
Michael McLoughlin
475a241446 operand: include '+0' in named symbol references
Intended to address an asmdecl error.

  [amd64] Butterfly: use of unnamed argument 0(FP); offset 0 is x0+0(FP)

Updates #24
2019-01-13 12:00:57 -08:00
Michael McLoughlin
943d5f0ced examples/sum: attempt to avoid asmfmt mismatch
Updates #41
Updates #8
2019-01-11 11:06:10 -08:00
Michael McLoughlin
3ca82be16c examples/sum: use Comment (#41) 2019-01-11 10:57:38 -08:00
Michael McLoughlin
f77a2e3b9e printer: use tabwriter to align instructions (#8) 2019-01-10 21:21:41 -08:00
Michael McLoughlin
7e94f6fb5c doc: switch to travis badge
#26
2019-01-08 13:19:52 -08:00
Michael McLoughlin
34d153690a doc: extra credit
@dgryski 

#13
2019-01-08 08:54:56 -08:00
Michael McLoughlin
ac9624a6b5 doc: link to porting issue
#13
2019-01-08 00:19:46 -08:00
Michael McLoughlin
0a3dff4d5a doc: link to examples instead (#13) 2019-01-07 22:21:36 -08:00
Michael McLoughlin
f41ad5fb77 doc: tweak bullet point
#13
2019-01-06 22:39:07 -08:00
Michael McLoughlin
e18d405027 doc: README tweaks
Thanks to @jsgoller1 

#13
2019-01-06 22:37:27 -08:00
Michael McLoughlin
ea3d101f08 examples/sha1: use loops where possible 2019-01-06 20:26:04 -08:00
Michael McLoughlin
4f73a6ea72 doc: forgot to regenerate on last commit 2019-01-06 20:16:26 -08:00
Michael McLoughlin
ff7d8afefe doc,examples/sum: improve doc on sum example
Updates #13
2019-01-06 18:09:37 -08:00
Michael McLoughlin
efb45b6500 doc: link to sha1 directory
Updates #13
2019-01-06 17:34:07 -08:00
Michael McLoughlin
294a7ac89b doc: add sha1 example to README 2019-01-06 17:31:45 -08:00
Michael McLoughlin
022d24d186 doc: suggest pinning a version
Updates #9
2019-01-06 15:59:23 -08:00
Michael McLoughlin
602bb5197c build: unify Label function signatures
The Context.Label method and LABEL global function did not agree. Also
breaks the convention I'd like to set that capitalized functions must
agree with existing Go assembly syntax.

To help avoid a conflict with `avo.Label`, attributes were moved to
their own package.

Fixes #35
2019-01-05 18:18:49 -08:00
Michael McLoughlin
87ffa6823a examples: forgot to regenerate
Sync READMEs with example code.

Updates #31
2019-01-05 17:44:10 -08:00
Michael McLoughlin
d54d413e54 doc: fix broken links in README
Updates #13
2019-01-05 00:36:14 -08:00
Michael McLoughlin
672b77a441 reg,build: remove "v" from virtual register ctors
Fixes #30
2019-01-04 18:23:44 -08:00
Michael McLoughlin
52b6e2c03b doc: link to examples directory in README
Updates #13
2019-01-03 22:23:51 -08:00
Michael McLoughlin
fa7b5ed1dd doc: show more examples in README 2019-01-03 22:20:25 -08:00
Michael McLoughlin
91e048ff29 doc: add description to README
Updates #13
2019-01-03 22:02:02 -08:00
Michael McLoughlin
0594af978f doc: "Contributing" section in README
Updates #13
2019-01-03 20:49:03 -08:00
Michael McLoughlin
e0c1ed5776 doc: add quick start to README
Updates #13
2019-01-03 20:02:36 -08:00
Michael McLoughlin
ce1b0bb850 doc: move badges
Updates #13
2019-01-03 18:39:59 -08:00
Michael McLoughlin
a88262712f meta: adjust logo size
Updates #13
2019-01-03 00:46:06 -08:00
Michael McLoughlin
8a820aced1 meta: add logo
Update #13
2019-01-03 00:36:38 -08:00
Michael McLoughlin
0ceb1c55a4 Update README.md 2018-11-30 21:57:14 -08:00
Michael McLoughlin
099f29d941 link to PeachPy 2018-11-04 09:47:49 -08:00
Michael McLoughlin
9098bcc87e Initial commit 2018-11-04 09:44:22 -08:00