mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-07 12:28:24 +00:00
[PowerPC] Complete setting the baseline for ppc64le
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
This commit is contained in:
@@ -95,8 +95,13 @@ void PPCSubtarget::initializeEnvironment() {
|
|||||||
void PPCSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) {
|
void PPCSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) {
|
||||||
// Determine default and user specified characteristics
|
// Determine default and user specified characteristics
|
||||||
std::string CPUName = CPU;
|
std::string CPUName = CPU;
|
||||||
if (CPUName.empty())
|
if (CPUName.empty()) {
|
||||||
CPUName = "generic";
|
// If cross-compiling with -march=ppc64le without -mcpu
|
||||||
|
if (TargetTriple.getArch() == Triple::ppc64le)
|
||||||
|
CPUName = "ppc64le";
|
||||||
|
else
|
||||||
|
CPUName = "generic";
|
||||||
|
}
|
||||||
#if (defined(__APPLE__) || defined(__linux__)) && \
|
#if (defined(__APPLE__) || defined(__linux__)) && \
|
||||||
(defined(__ppc__) || defined(__powerpc__))
|
(defined(__ppc__) || defined(__powerpc__))
|
||||||
if (CPUName == "generic")
|
if (CPUName == "generic")
|
||||||
|
@@ -1,8 +1,11 @@
|
|||||||
; RUN: llc < %s -march=ppc64le -mcpu=pwr8 -mattr=+altivec -mattr=-vsx | FileCheck %s
|
; 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
|
; 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
|
; 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.
|
; 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 datalayout = "e-m:e-i64:64-n32:64"
|
||||||
target triple = "powerpc64le-unknown-linux-gnu"
|
target triple = "powerpc64le-unknown-linux-gnu"
|
||||||
|
Reference in New Issue
Block a user