forked from OSchip/llvm-project
[X86] Explicitly add popcnt feature to Intel CPUs with SSE4.2 in the frontend.
Previously we inferred it if sse4.2 ended up being enabled after all feature processing. But writing -march=nehalem -mno-sse4.2 should have popcnt enabled.
This commit is contained in:
parent
b07feef873
commit
20a60f46f5
|
@ -224,6 +224,7 @@ SkylakeCommon:
|
|||
LLVM_FALLTHROUGH;
|
||||
case CK_Nehalem:
|
||||
setFeatureEnabledImpl(Features, "sse4.2", true);
|
||||
setFeatureEnabledImpl(Features, "popcnt", true);
|
||||
LLVM_FALLTHROUGH;
|
||||
case CK_Penryn:
|
||||
setFeatureEnabledImpl(Features, "sse4.1", true);
|
||||
|
@ -281,6 +282,7 @@ SkylakeCommon:
|
|||
setFeatureEnabledImpl(Features, "rdrnd", true);
|
||||
setFeatureEnabledImpl(Features, "pclmul", true);
|
||||
setFeatureEnabledImpl(Features, "sse4.2", true);
|
||||
setFeatureEnabledImpl(Features, "popcnt", true);
|
||||
setFeatureEnabledImpl(Features, "prfchw", true);
|
||||
LLVM_FALLTHROUGH;
|
||||
case CK_Bonnell:
|
||||
|
@ -307,6 +309,7 @@ SkylakeCommon:
|
|||
setFeatureEnabledImpl(Features, "rdseed", true);
|
||||
setFeatureEnabledImpl(Features, "adx", true);
|
||||
setFeatureEnabledImpl(Features, "lzcnt", true);
|
||||
setFeatureEnabledImpl(Features, "popcnt", true);
|
||||
setFeatureEnabledImpl(Features, "bmi", true);
|
||||
setFeatureEnabledImpl(Features, "bmi2", true);
|
||||
setFeatureEnabledImpl(Features, "fma", true);
|
||||
|
|
|
@ -269,6 +269,12 @@
|
|||
|
||||
// NOSSE42POPCNT: #define __POPCNT__ 1
|
||||
|
||||
// RUN: %clang -target i386-unknown-unknown -march=nehalem -mno-sse4.2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=CPUPOPCNT %s
|
||||
// RUN: %clang -target i386-unknown-unknown -march=silvermont -mno-sse4.2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=CPUPOPCNT %s
|
||||
// RUN: %clang -target i386-unknown-unknown -march=knl -mno-sse4.2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=CPUPOPCNT %s
|
||||
|
||||
// CPUPOPCNT: #define __POPCNT__ 1
|
||||
|
||||
// RUN: %clang -target i386-unknown-unknown -march=pentium -msse -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSEMMX %s
|
||||
|
||||
// SSEMMX: #define __MMX__ 1
|
||||
|
|
Loading…
Reference in New Issue