internal/cpu: add a detection for Neoverse(N3, V3, V3ae) cores

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>
This commit is contained in:
fanzha02 2025-04-07 10:12:06 +00:00 committed by Keith Randall
parent e278a789b6
commit adf21a9b56

View File

@ -67,12 +67,17 @@ 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) {
// d8e - NeoverseN3
// d84 - NeoverseV3
// d83 - NeoverseV3ae
if implementer == 'A' {
switch part_num {
case 0xd0c, 0xd40, 0xd49, 0xd4f, 0xd8e, 0xd84, 0xd83:
ARM64.IsNeoverse = true
}
}
}
}
func isSet(hwc uint, value uint) bool {
return hwc&value != 0