From: Craig Topper Date: Thu, 19 Sep 2013 00:01:05 +0000 (+0000) Subject: Disabling sse2 should disable aes and pclmul support. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a6cbc2701237c89a8d6fd9897066ebca798664dc;p=clang Disabling sse2 should disable aes and pclmul support. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190977 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index 56068b7d36..cc53b0f090 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -2166,7 +2166,7 @@ void X86TargetInfo::setSSELevel(llvm::StringMap &Features, case SSE1: Features["sse"] = false; case SSE2: - Features["sse2"] = false; + Features["sse2"] = Features["pclmul"] = Features["aes"] = false; case SSE3: Features["sse3"] = false; setXOPLevel(Features, NoXOP, false); diff --git a/test/Preprocessor/x86_target_features.c b/test/Preprocessor/x86_target_features.c index 58af218581..acffb18e4e 100644 --- a/test/Preprocessor/x86_target_features.c +++ b/test/Preprocessor/x86_target_features.c @@ -162,3 +162,27 @@ // F16CNOAVX-NOT: #define __AVX__ 1 // F16CNOAVX-NOT: #define __F16C__ 1 + +// RUN: %clang -target i386-unknown-unknown -march=pentiumpro -mpclmul -x c -E -dM -o - %s | FileCheck --check-prefix=PCLMUL %s + +// PCLMUL: #define __PCLMUL__ 1 +// PCLMUL: #define __SSE2__ 1 +// PCLMUL-NOT: #define __SSE3__ 1 + +// RUN: %clang -target i386-unknown-unknown -march=pentiumpro -mpclmul -mno-sse2 -x c -E -dM -o - %s | FileCheck --check-prefix=PCLMULNOSSE2 %s + +// PCLMULNOSSE2-NOT: #define __PCLMUL__ 1 +// PCLMULNOSSE2-NOT: #define __SSE2__ 1 +// PCLMULNOSSE2-NOT: #define __SSE3__ 1 + +// RUN: %clang -target i386-unknown-unknown -march=pentiumpro -maes -x c -E -dM -o - %s | FileCheck --check-prefix=AES %s + +// AES: #define __AES__ 1 +// AES: #define __SSE2__ 1 +// AES-NOT: #define __SSE3__ 1 + +// RUN: %clang -target i386-unknown-unknown -march=pentiumpro -maes -mno-sse2 -x c -E -dM -o - %s | FileCheck --check-prefix=AESNOSSE2 %s + +// AESNOSSE2-NOT: #define __AES__ 1 +// AESNOSSE2-NOT: #define __SSE2__ 1 +// AESNOSSE2-NOT: #define __SSE3__ 1