diff options
| -rw-r--r-- | clang/lib/Basic/Targets.cpp | 5 | ||||
| -rw-r--r-- | clang/test/Preprocessor/x86_target_features.c | 10 |
2 files changed, 14 insertions, 1 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index c2ba84b225a..b31ec78c7ea 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -2172,7 +2172,7 @@ void X86TargetInfo::setSSELevel(llvm::StringMap<bool> &Features, case SSE42: Features["sse4.2"] = false; case AVX: - Features["fma"] = Features["avx"] = false; + Features["fma"] = Features["avx"] = Features["f16c"] = false; setXOPLevel(Features, FMA4, false); case AVX2: Features["avx2"] = false; @@ -2290,6 +2290,9 @@ void X86TargetInfo::setFeatureEnabled(llvm::StringMap<bool> &Features, setXOPLevel(Features, XOP, Enabled); } else if (Name == "sse4a") { setXOPLevel(Features, SSE4A, Enabled); + } else if (Name == "f16c") { + if (Enabled) + setSSELevel(Features, AVX, Enabled); } } diff --git a/clang/test/Preprocessor/x86_target_features.c b/clang/test/Preprocessor/x86_target_features.c index 517f5c6e830..58af2185810 100644 --- a/clang/test/Preprocessor/x86_target_features.c +++ b/clang/test/Preprocessor/x86_target_features.c @@ -152,3 +152,13 @@ // RUN: %clang -target i386-unknown-unknown -march=atom -msse -mno-mmx -x c -E -dM -o - %s | FileCheck --check-prefix=SSENOMMX %s // SSENOMMX-NOT: #define __MMX__ 1 + +// RUN: %clang -target i386-unknown-unknown -march=atom -mf16c -x c -E -dM -o - %s | FileCheck --check-prefix=F16C %s + +// F16C: #define __AVX__ 1 +// F16C: #define __F16C__ 1 + +// RUN: %clang -target i386-unknown-unknown -march=atom -mf16c -mno-avx -x c -E -dM -o - %s | FileCheck --check-prefix=F16CNOAVX %s + +// F16CNOAVX-NOT: #define __AVX__ 1 +// F16CNOAVX-NOT: #define __F16C__ 1 |

