]> Cypherpunks repositories - gostls13.git/commitdiff
internal/cpu: add a detection for Neoverse(N3, V3, V3ae) cores
authorfanzha02 <fannie.zhang@arm.com>
Mon, 7 Apr 2025 10:12:06 +0000 (10:12 +0000)
committerKeith Randall <khr@google.com>
Mon, 14 Apr 2025 16:26:16 +0000 (09:26 -0700)
The memmove implementation relies on the variable
runtime.arm64UseAlignedLoads to select fastest code
path. Considering Neoverse N3, V3 and V3ae cores
prefer aligned loads, this patch adds code to detect
them for memmove performance.

Change-Id: I7266fc35d8b2c15ff516c592b987bafacb82b620
Reviewed-on: https://go-review.googlesource.com/c/go/+/664038
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Keith Randall <khr@google.com>
src/internal/cpu/cpu_arm64_hwcap.go

index cdc1d89c9e42be44b5d4bef23924376e85404b66..e6711ae275a0f2e5ab50fc67d19acbbdfe710544 100644 (file)
@@ -67,9 +67,14 @@ func hwcapInit(os string) {
                // d40 - NeoverseV1
                // d49 - NeoverseN2
                // d4f - NeoverseV2
-               if implementer == 'A' && (part_num == 0xd0c || part_num == 0xd40 ||
-                       part_num == 0xd49 || part_num == 0xd4f) {
-                       ARM64.IsNeoverse = true
+               // d8e - NeoverseN3
+               // d84 - NeoverseV3
+               // d83 - NeoverseV3ae
+               if implementer == 'A' {
+                       switch part_num {
+                       case 0xd0c, 0xd40, 0xd49, 0xd4f, 0xd8e, 0xd84, 0xd83:
+                               ARM64.IsNeoverse = true
+                       }
                }
        }
 }