[PowerPC] Complete setting the baseline for ppc64le
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Thu, 29 Jan 2015 15:59:09 +0000 (15:59 +0000)
committerBill Schmidt <wschmidt@linux.vnet.ibm.com>
Thu, 29 Jan 2015 15:59:09 +0000 (15:59 +0000)
Patch by Nemanja Ivanovic.

As was uncovered by the failing test case (when run on non-PPC
platforms), the feature set when compiling with -march=ppc64le was not
being picked up. This change ensures that if the -mcpu option is not
specified, the correct feature set is picked up regardless of whether
we are on PPC or not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227455 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCSubtarget.cpp
test/CodeGen/PowerPC/ppc64le-aggregates.ll

index 115c7b49427461398dc1961895d73886c6e0e5a8..c753e68fe3952b87759d367451988d8930aed481 100644 (file)
@@ -95,8 +95,13 @@ void PPCSubtarget::initializeEnvironment() {
 void PPCSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) {
   // Determine default and user specified characteristics
   std::string CPUName = CPU;
-  if (CPUName.empty())
-    CPUName = "generic";
+  if (CPUName.empty()) {
+    // If cross-compiling with -march=ppc64le without -mcpu
+    if (TargetTriple.getArch() == Triple::ppc64le)
+      CPUName = "ppc64le";
+    else
+      CPUName = "generic";
+  }
 #if (defined(__APPLE__) || defined(__linux__)) && \
     (defined(__ppc__) || defined(__powerpc__))
   if (CPUName == "generic")
index 4edd8d59e5261fd260f788eca66873f8a45ae5c7..4fe6f8db33fa77f8e300312a1ba5f62d9337bc04 100644 (file)
@@ -1,8 +1,11 @@
 ; RUN: llc < %s -march=ppc64le -mcpu=pwr8 -mattr=+altivec -mattr=-vsx | FileCheck %s
+; RUN: llc < %s -march=ppc64le -mattr=+altivec -mattr=-vsx | FileCheck %s
 
 ; Currently VSX support is disabled for this test because we generate lxsdx
 ; instead of lfd, and stxsdx instead of stfd.  That is a poor choice when we
 ; have reg+imm addressing, and is on the list of things to be fixed.
+; The second run step is to ensure that -march=ppc64le is adequate to select
+; the same feature set as with -mcpu=pwr8 since that is the baseline for ppc64le.
 
 target datalayout = "e-m:e-i64:64-n32:64"
 target triple = "powerpc64le-unknown-linux-gnu"