From b58ce85ecc1e676ec4c38157f2fae293766a0aad Mon Sep 17 00:00:00 2001 From: Hal Finkel Date: Fri, 1 Feb 2013 18:44:19 +0000 Subject: [PATCH] Add -mqpx and -mno-qpx feature flags to toggle use of the PPC QPX vector instruction set I've renamed the altivec test to ppc-features (because now there is more than one feature to test). llvm-svn: 174204 --- clang/include/clang/Driver/Options.td | 2 ++ clang/lib/Basic/Targets.cpp | 4 +++- clang/lib/Driver/Tools.cpp | 5 +++++ clang/test/Driver/{altivec.cpp => ppc-features.cpp} | 6 ++++++ 4 files changed, 16 insertions(+), 1 deletion(-) rename clang/test/Driver/{altivec.cpp => ppc-features.cpp} (91%) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index a3dd71d..2aeffad 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -811,6 +811,8 @@ def mabi_EQ : Joined<["-"], "mabi=">, Group; def march_EQ : Joined<["-"], "march=">, Group; def maltivec : Flag<["-"], "maltivec">, Alias; def mno_altivec : Flag<["-"], "mno-altivec">, Alias; +def mqpx : Flag<["-"], "mqpx">, Group; +def mno_qpx : Flag<["-"], "mno-qpx">, Group; def mcmodel_EQ : Joined<["-"], "mcmodel=">, Group; def mconstant_cfstrings : Flag<["-"], "mconstant-cfstrings">, Group; def mcpu_EQ : Joined<["-"], "mcpu=">, Group; diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 4647970..c225206 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -946,12 +946,14 @@ void PPCTargetInfo::getDefaultFeatures(llvm::StringMap &Features) const { .Case("pwr7", true) .Case("ppc64", true) .Default(false); + + Features["qpx"] = (CPU == "a2q"); } bool PPCTargetInfo::setFeatureEnabled(llvm::StringMap &Features, StringRef Name, bool Enabled) const { - if (Name == "altivec") { + if (Name == "altivec" || Name == "qpx") { Features[Name] = Enabled; return true; } diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 18b49e6..c539216 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -1091,6 +1091,11 @@ void Clang::AddPPCTargetArgs(const ArgList &Args, CmdArgs.push_back("-target-feature"); CmdArgs.push_back("-altivec"); } + + if (Args.hasFlag(options::OPT_mno_qpx, options::OPT_mqpx, false)) { + CmdArgs.push_back("-target-feature"); + CmdArgs.push_back("-qpx"); + } } void Clang::AddSparcTargetArgs(const ArgList &Args, diff --git a/clang/test/Driver/altivec.cpp b/clang/test/Driver/ppc-features.cpp similarity index 91% rename from clang/test/Driver/altivec.cpp rename to clang/test/Driver/ppc-features.cpp index cf70e8d..1918ed7 100644 --- a/clang/test/Driver/altivec.cpp +++ b/clang/test/Driver/ppc-features.cpp @@ -62,3 +62,9 @@ // RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=ppc64 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-15 %s // CHECK-15: "-target-feature" "-altivec" +// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-qpx -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOQPX %s +// CHECK-NOQPX: "-target-feature" "-qpx" + +// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-qpx -mqpx -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-QPX %s +// CHECK-QPX-NOT: "-target-feature" "-qpx" + -- 2.7.4