From 84f007b17399ef90f234ef0cef6e3f2495a12f10 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Mon, 16 Sep 2013 04:54:13 +0000 Subject: [PATCH] Make F16C feature imply AVX. Matches GCC behavior. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190776 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Basic/Targets.cpp | 5 ++++- test/Preprocessor/x86_target_features.c | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index c2ba84b225..b31ec78c7e 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -2172,7 +2172,7 @@ void X86TargetInfo::setSSELevel(llvm::StringMap &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 &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/test/Preprocessor/x86_target_features.c b/test/Preprocessor/x86_target_features.c index 517f5c6e83..58af218581 100644 --- a/test/Preprocessor/x86_target_features.c +++ b/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 -- 2.40.0