Author: nemanjai Date: Thu Jul 27 01:58:28 2017 New Revision: 309256 URL: http://llvm.org/viewvc/llvm-project?rev=309256&view=rev Log: [PowerPC] Pass CPU to assembler with -no-integrated-as
This just adds the CPU to a list of commands passed to GAS when not using the integrated assembler. Differential Revision: https://reviews.llvm.org/D33820 Modified: cfe/trunk/lib/Driver/ToolChains/Arch/PPC.cpp cfe/trunk/lib/Driver/ToolChains/Arch/PPC.h cfe/trunk/lib/Driver/ToolChains/Gnu.cpp cfe/trunk/test/Driver/linux-as.c cfe/trunk/test/Driver/ppc-features.cpp Modified: cfe/trunk/lib/Driver/ToolChains/Arch/PPC.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Arch/PPC.cpp?rev=309256&r1=309255&r2=309256&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains/Arch/PPC.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Arch/PPC.cpp Thu Jul 27 01:58:28 2017 @@ -86,6 +86,18 @@ std::string ppc::getPPCTargetCPU(const A return ""; } +const char *ppc::getPPCAsmModeForCPU(StringRef Name) { + return llvm::StringSwitch<const char *>(Name) + .Case("pwr7", "-mpower7") + .Case("power7", "-mpower7") + .Case("pwr8", "-mpower8") + .Case("power8", "-mpower8") + .Case("ppc64le", "-mpower8") + .Case("pwr9", "-mpower9") + .Case("power9", "-mpower9") + .Default("-many"); +} + void ppc::getPPCTargetFeatures(const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector<StringRef> &Features) { Modified: cfe/trunk/lib/Driver/ToolChains/Arch/PPC.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Arch/PPC.h?rev=309256&r1=309255&r2=309256&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains/Arch/PPC.h (original) +++ cfe/trunk/lib/Driver/ToolChains/Arch/PPC.h Thu Jul 27 01:58:28 2017 @@ -32,6 +32,7 @@ enum class FloatABI { FloatABI getPPCFloatABI(const Driver &D, const llvm::opt::ArgList &Args); std::string getPPCTargetCPU(const llvm::opt::ArgList &Args); +const char *getPPCAsmModeForCPU(StringRef Name); void getPPCTargetFeatures(const Driver &D, const llvm::Triple &Triple, const llvm::opt::ArgList &Args, Modified: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Gnu.cpp?rev=309256&r1=309255&r2=309256&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Gnu.cpp Thu Jul 27 01:58:28 2017 @@ -11,6 +11,7 @@ #include "Linux.h" #include "Arch/ARM.h" #include "Arch/Mips.h" +#include "Arch/PPC.h" #include "Arch/Sparc.h" #include "Arch/SystemZ.h" #include "CommonArgs.h" @@ -695,22 +696,28 @@ void tools::gnutools::Assembler::Constru else CmdArgs.push_back("--64"); break; - case llvm::Triple::ppc: + case llvm::Triple::ppc: { CmdArgs.push_back("-a32"); CmdArgs.push_back("-mppc"); - CmdArgs.push_back("-many"); + CmdArgs.push_back( + ppc::getPPCAsmModeForCPU(getCPUName(Args, getToolChain().getTriple()))); break; - case llvm::Triple::ppc64: + } + case llvm::Triple::ppc64: { CmdArgs.push_back("-a64"); CmdArgs.push_back("-mppc64"); - CmdArgs.push_back("-many"); + CmdArgs.push_back( + ppc::getPPCAsmModeForCPU(getCPUName(Args, getToolChain().getTriple()))); break; - case llvm::Triple::ppc64le: + } + case llvm::Triple::ppc64le: { CmdArgs.push_back("-a64"); CmdArgs.push_back("-mppc64"); - CmdArgs.push_back("-many"); CmdArgs.push_back("-mlittle-endian"); + CmdArgs.push_back( + ppc::getPPCAsmModeForCPU(getCPUName(Args, getToolChain().getTriple()))); break; + } case llvm::Triple::sparc: case llvm::Triple::sparcel: { CmdArgs.push_back("-32"); Modified: cfe/trunk/test/Driver/linux-as.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/linux-as.c?rev=309256&r1=309255&r2=309256&view=diff ============================================================================== --- cfe/trunk/test/Driver/linux-as.c (original) +++ cfe/trunk/test/Driver/linux-as.c Thu Jul 27 01:58:28 2017 @@ -174,3 +174,18 @@ // RUN: -no-integrated-as -c %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK-Z-ARCH-Z196 %s // CHECK-Z-ARCH-Z196: as{{.*}} "-march=z196" +// +// RUN: %clang -target powerpc64le-linux -### \ +// RUN: -no-integrated-as -c %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-PPC64LE %s +// CHECK-PPC64LE: as{{.*}} "-mpower8" +// +// RUN: %clang -target powerpc64-linux -mcpu=pwr7 -### \ +// RUN: -no-integrated-as -c %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-PPC64 %s +// CHECK-PPC64: as{{.*}} "-mpower7" +// +// RUN: %clang -target powerpc-linux -mcpu=pwr9 -### \ +// RUN: -no-integrated-as -c %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-PPC32 %s +// CHECK-PPC32: as{{.*}} "-mpower9" Modified: cfe/trunk/test/Driver/ppc-features.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/ppc-features.cpp?rev=309256&r1=309255&r2=309256&view=diff ============================================================================== --- cfe/trunk/test/Driver/ppc-features.cpp (original) +++ cfe/trunk/test/Driver/ppc-features.cpp Thu Jul 27 01:58:28 2017 @@ -171,8 +171,8 @@ // RUN: %clang -target powerpc64le-unknown-linux-gnu %s -### -o %t.o -no-integrated-as 2>&1 | FileCheck -check-prefix=CHECK_LE_AS_ARGS %s // CHECK_LE_AS_ARGS: "-mppc64" -// CHECK_LE_AS_ARGS: "-many" // CHECK_LE_AS_ARGS: "-mlittle-endian" +// CHECK_LE_AS_ARGS: "-mpower8" // linker features // RUN: %clang -target powerpc64-unknown-linux-gnu %s -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK_BE_LD_ARGS %s _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits