arm64/instgen: add assembler code generator for SVE This CL implements the code generation logic. It generates 4 files to the assembler: - inst_gen.go: this file contains the instruction table for these new SVE instructions. - goops_gen.go: this file contains the go op constants for these new SVE instructions. - anames_gen.go: this file contains the anames (debugger symbols) for these new SVE instructions. - encoding_gen.go: this file contains the encoding functions for parts (elements) of these new SVE instructions. They are emitted with their natural language specification and we need to fill up their logic, which will be in the next CL. This CL generated files into CL 747180 This CL adds logic to allow only certain AClasses to be generated. This CL also merged PREGZ and PREGM, and defer its check to encoding phase. This is required to distinguish <P>/<ZM> cases. This CL also filters out the generation of aliased encodings, as they are not fully specified. This CL also added encoding specifications for another weird encoding defined in the decoding section, please see the added code in `extractBinary` for details. An example instruction is "Unsigned divide (predicated)". It is useful for partial code gen for assembler without all AClasses support. This CL added a generation target that generates e2e test data, it uses the GNU toolchain as an oracle. This CL assumes the toolchain version 2.45. There currently exists a bleeding edge new toolchain 2.46, some special cases in `constructInstance` might be removed if we upgrade the GNU toolchain. This CL also rearranged the types. XML types are parsed data types are in different files now. Change-Id: Ia7e30e1d1da17ad6aff5d963cf90fe76bc1a76fd Reviewed-on: https://go-review.googlesource.com/c/arch/+/755180 Reviewed-by: David Chase <drchase@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This repository holds machine architecture information used by the Go toolchain. The parts needed in the main Go repository are copied in.
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.