internal/cpu: fix and cleanup ARM64 cpu feature fields and options

Remove all cpu features from the ARM64 struct that are not initialized
to reduce cache lines used and to avoid those features being
accidentially used without actual detection if they are present.

Add missing option to mask the CPUID feature.

Change-Id: I94bf90c0655de1af2218ac72117ac6c52adfc289
Reviewed-on: https://go-review.googlesource.com/c/go/+/267658
Run-TryBot: Martin Möhrmann <moehrmann@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
Trust: Martin Möhrmann <moehrmann@google.com>
diff --git a/src/internal/cpu/cpu.go b/src/internal/cpu/cpu.go
index 0ceedcd..dab5d06 100644
--- a/src/internal/cpu/cpu.go
+++ b/src/internal/cpu/cpu.go
@@ -57,30 +57,13 @@
 // The struct is padded to avoid false sharing.
 var ARM64 struct {
 	_            CacheLinePad
-	HasFP        bool
-	HasASIMD     bool
-	HasEVTSTRM   bool
 	HasAES       bool
 	HasPMULL     bool
 	HasSHA1      bool
 	HasSHA2      bool
 	HasCRC32     bool
 	HasATOMICS   bool
-	HasFPHP      bool
-	HasASIMDHP   bool
 	HasCPUID     bool
-	HasASIMDRDM  bool
-	HasJSCVT     bool
-	HasFCMA      bool
-	HasLRCPC     bool
-	HasDCPOP     bool
-	HasSHA3      bool
-	HasSM3       bool
-	HasSM4       bool
-	HasASIMDDP   bool
-	HasSHA512    bool
-	HasSVE       bool
-	HasASIMDFHM  bool
 	IsNeoverseN1 bool
 	IsZeus       bool
 	_            CacheLinePad
diff --git a/src/internal/cpu/cpu_arm64.go b/src/internal/cpu/cpu_arm64.go
index 8fde39f..4e9ea8c 100644
--- a/src/internal/cpu/cpu_arm64.go
+++ b/src/internal/cpu/cpu_arm64.go
@@ -29,6 +29,7 @@
 		{Name: "sha2", Feature: &ARM64.HasSHA2},
 		{Name: "crc32", Feature: &ARM64.HasCRC32},
 		{Name: "atomics", Feature: &ARM64.HasATOMICS},
+		{Name: "cpuid", Feature: &ARM64.HasCPUID},
 		{Name: "isNeoverseN1", Feature: &ARM64.IsNeoverseN1},
 		{Name: "isZeus", Feature: &ARM64.IsZeus},
 	}