aboutsummaryrefslogtreecommitdiff
path: root/absl/crc/internal/cpu_detect.cc
diff options
context:
space:
mode:
authorBenjamin Barenblat <bbaren@google.com>2024-05-08 10:59:21 -0400
committerBenjamin Barenblat <bbaren@google.com>2024-05-08 10:59:21 -0400
commitd8e2b896d5e3c1ebf2d6d0d37bd9e7a1b59e0b99 (patch)
tree33d0793fcdd3615f21e5b4f0e50ae20811a5bde5 /absl/crc/internal/cpu_detect.cc
parent57fc09f12cfb9642e7ebd4ca3c64d07154d2de9a (diff)
parentd7aaad83b488fd62bd51c81ecf16cd938532cc0a (diff)
downloadabseil-d8e2b896d5e3c1ebf2d6d0d37bd9e7a1b59e0b99.tar.gz
abseil-d8e2b896d5e3c1ebf2d6d0d37bd9e7a1b59e0b99.tar.bz2
abseil-d8e2b896d5e3c1ebf2d6d0d37bd9e7a1b59e0b99.zip
Merge new upstream LTS 20240116.2
Diffstat (limited to 'absl/crc/internal/cpu_detect.cc')
-rw-r--r--absl/crc/internal/cpu_detect.cc28
1 files changed, 26 insertions, 2 deletions
diff --git a/absl/crc/internal/cpu_detect.cc b/absl/crc/internal/cpu_detect.cc
index 83838085..d7eedd1c 100644
--- a/absl/crc/internal/cpu_detect.cc
+++ b/absl/crc/internal/cpu_detect.cc
@@ -189,8 +189,14 @@ CpuType GetAmdCpuType() {
break;
case 0x19:
switch (model_num) {
+ case 0x0: // Stepping Ax
case 0x1: // Stepping B0
return CpuType::kAmdMilan;
+ case 0x10: // Stepping A0
+ case 0x11: // Stepping B0
+ return CpuType::kAmdGenoa;
+ case 0x44: // Stepping A0
+ return CpuType::kAmdRyzenV3000;
default:
return CpuType::kUnknown;
}
@@ -237,8 +243,26 @@ CpuType GetCpuType() {
ABSL_INTERNAL_AARCH64_ID_REG_READ(MIDR_EL1, midr);
uint32_t implementer = (midr >> 24) & 0xff;
uint32_t part_number = (midr >> 4) & 0xfff;
- if (implementer == 0x41 && part_number == 0xd0c) {
- return CpuType::kArmNeoverseN1;
+ switch (implementer) {
+ case 0x41:
+ switch (part_number) {
+ case 0xd0c: return CpuType::kArmNeoverseN1;
+ case 0xd40: return CpuType::kArmNeoverseV1;
+ case 0xd49: return CpuType::kArmNeoverseN2;
+ case 0xd4f: return CpuType::kArmNeoverseV2;
+ default:
+ return CpuType::kUnknown;
+ }
+ break;
+ case 0xc0:
+ switch (part_number) {
+ case 0xac3: return CpuType::kAmpereSiryn;
+ default:
+ return CpuType::kUnknown;
+ }
+ break;
+ default:
+ return CpuType::kUnknown;
}
}
return CpuType::kUnknown;