[compiler-rt] [llvm] [X86] Add CPU detection for more znver2 CPUs (PR #74955)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 26 21:47:25 PST 2023
================
@@ -647,35 +647,59 @@ static const char *getAMDProcessorTypeAndSubtype(unsigned Family,
case 23:
CPU = "znver1";
*Type = AMDFAM17H;
- if ((Model >= 0x30 && Model <= 0x3f) || Model == 0x71) {
+ if ((Model >= 0x30 && Model <= 0x3f) || (Model == 0x47) ||
+ (Model >= 0x60 && Model <= 0x67) || (Model >= 0x68 && Model <= 0x6f) ||
+ (Model >= 0x70 && Model <= 0x7f) || (Model >= 0x84 && Model <= 0x87) ||
+ (Model >= 0x90 && Model <= 0x97) || (Model >= 0x98 && Model <= 0x9f) ||
+ (Model >= 0xa0 && Model <= 0xaf)) {
+ // Family 17h Models 30h-3Fh (Starship) Zen 2
+ // Family 17h Models 47h (Cardinal) Zen 2
+ // Family 17h Models 60h-67h (Renoir) Zen 2
+ // Family 17h Models 68h-6Fh (Lucienne) Zen 2
+ // Family 17h Models 70h-7Fh (Matisse) Zen 2
+ // Family 17h Models 84h-87h (ProjectX) Zen 2
+ // Family 17h Models 90h-97h (VanGogh) Zen 2
+ // Family 17h Models 98h-9Fh (Mero) Zen 2
+ // Family 17h Models A0h-AFh (Mendocino) Zen 2
CPU = "znver2";
*Subtype = AMDFAM17H_ZNVER2;
- break; // 30h-3fh, 71h: Zen2
+ break;
}
- if (Model <= 0x0f) {
+ if ((Model >= 0x10 && Model <= 0x1f) || (Model >= 0x20 && Model <= 0x2f)) {
+ // Family 17h Models 10h-1Fh (Raven1) Zen
+ // Family 17h Models 10h-1Fh (Picasso) Zen+
+ // Family 17h Models 20h-2Fh (Raven2 x86) Zen
*Subtype = AMDFAM17H_ZNVER1;
- break; // 00h-0Fh: Zen1
+ break;
}
break;
case 25:
CPU = "znver3";
*Type = AMDFAM19H;
- if (Model <= 0x0f || (Model >= 0x20 && Model <= 0x5f)) {
- // Family 19h Models 00h-0Fh - Zen3
- // Family 19h Models 20h-2Fh - Zen3
- // Family 19h Models 30h-3Fh - Zen3
- // Family 19h Models 40h-4Fh - Zen3+
- // Family 19h Models 50h-5Fh - Zen3+
+ if ((Model >= 0x00 && Model <= 0x0f) || (Model >= 0x20 && Model <= 0x2f) ||
----------------
mikaelholmen wrote:
Since ```Model``` is unsigned ```Model >= 0x00``` is always true.
gcc even warns about it
```
../lib/TargetParser/Host.cpp:1163:16: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
1163 | if ((Model >= 0x00 && Model <= 0x0f) || (Model >= 0x20 && Model <= 0x2f) ||
| ~~~~~~^~~~~~~
```
https://github.com/llvm/llvm-project/pull/74955
More information about the llvm-commits
mailing list