diff options
author | Phoebe Wang <phoebe.wang@intel.com> | 2024-08-02 12:10:50 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-02 12:10:50 +0800 |
commit | 10bad2c8d7be1bbb726c536dd306da3cae2247b4 (patch) | |
tree | 4dcf574e2cda0a0a58205d11342b092878d2e6e1 /llvm/lib/TargetParser/Host.cpp | |
parent | 96e6255e8b8b4e9e7bf0846df94dddcb79ced6f5 (diff) | |
download | llvm-10bad2c8d7be1bbb726c536dd306da3cae2247b4.zip llvm-10bad2c8d7be1bbb726c536dd306da3cae2247b4.tar.gz llvm-10bad2c8d7be1bbb726c536dd306da3cae2247b4.tar.bz2 |
[X86][AVX10.2] Support AVX10.2 option and VMPSADBW/VADDP[D,H,S] new instructions (#101452)
Ref.: https://cdrdv2.intel.com/v1/dl/getContent/828965
Diffstat (limited to 'llvm/lib/TargetParser/Host.cpp')
-rw-r--r-- | llvm/lib/TargetParser/Host.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/TargetParser/Host.cpp b/llvm/lib/TargetParser/Host.cpp index 68aed69..986b9a2 100644 --- a/llvm/lib/TargetParser/Host.cpp +++ b/llvm/lib/TargetParser/Host.cpp @@ -1819,7 +1819,7 @@ const StringMap<bool> sys::getHostCPUFeatures() { Features["avxvnniint16"] = HasLeaf7Subleaf1 && ((EDX >> 10) & 1) && HasAVXSave; Features["prefetchi"] = HasLeaf7Subleaf1 && ((EDX >> 14) & 1); Features["usermsr"] = HasLeaf7Subleaf1 && ((EDX >> 15) & 1); - Features["avx10.1-256"] = HasLeaf7Subleaf1 && ((EDX >> 19) & 1); + bool HasAVX10 = HasLeaf7Subleaf1 && ((EDX >> 19) & 1); bool HasAPXF = HasLeaf7Subleaf1 && ((EDX >> 21) & 1); Features["egpr"] = HasAPXF; Features["push2pop2"] = HasAPXF; @@ -1849,8 +1849,13 @@ const StringMap<bool> sys::getHostCPUFeatures() { bool HasLeaf24 = MaxLevel >= 0x24 && !getX86CpuIDAndInfo(0x24, &EAX, &EBX, &ECX, &EDX); - Features["avx10.1-512"] = - Features["avx10.1-256"] && HasLeaf24 && ((EBX >> 18) & 1); + + int AVX10Ver = HasLeaf24 && (EBX & 0xff); + int Has512Len = HasLeaf24 && ((EBX >> 18) & 1); + Features["avx10.1-256"] = HasAVX10 && AVX10Ver >= 1; + Features["avx10.1-512"] = HasAVX10 && AVX10Ver >= 1 && Has512Len; + Features["avx10.2-256"] = HasAVX10 && AVX10Ver >= 2; + Features["avx10.2-512"] = HasAVX10 && AVX10Ver >= 2 && Has512Len; return Features; } |