x86/x86asm: support AVX instructions

This CL adds support for AVX(1, 2, 512) instructions. A new, XED
data-based decoding path is added. For now, the new code path is
used only for VEX- and EVEX-prefixed instructions.

Test cases are generated from running the assembler tests
(cmd/asm/internal/asm/testdata) in reverse for the Go syntax. For
GNU and Intel syntaxes, the expected strings are extracted from
the system objdump output.

For golang/go#78065.

Change-Id: Ib9c7ff480432ec19a28989c33f32d7db4a45357a
Reviewed-on: https://go-review.googlesource.com/c/arch/+/762640
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
12 files changed
tree: 2234d772d2b8dd4e5cf3b1648f5886cc34ffd723
  1. arm/
  2. arm64/
  3. loong64/
  4. ppc64/
  5. riscv64/
  6. s390x/
  7. x86/
  8. codereview.cfg
  9. CONTRIBUTING.md
  10. go.mod
  11. go.sum
  12. LICENSE
  13. PATENTS
  14. README.md
README.md

arch

Go Reference

This repository holds machine architecture information used by the Go toolchain. The parts needed in the main Go repository are copied in.

Report Issues / Send Patches

This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://go.dev/doc/contribute.

The git repository is https://go.googlesource.com/arch.

The main issue tracker for the arch repository is located at https://go.dev/issues. Prefix your issue with “x/arch:” in the subject line, so it is easy to find.