forked from OSchip/llvm-project
[PowerPC] Guard XSRSP in P8 for FastISel
This is exposed by enabling FastIsel on 64bit AIX. We are generating XSRSP regardless of the arch, which may be wrong when -mcpu=pwr7. The fix is to guard the generation in P8 only. Reviewed By: qiucf Differential Revision: https://reviews.llvm.org/D109365
This commit is contained in:
parent
61d8e27193
commit
042a6564d3
|
@ -987,15 +987,16 @@ bool PPCFastISel::SelectFPTrunc(const Instruction *I) {
|
||||||
auto RC = MRI.getRegClass(SrcReg);
|
auto RC = MRI.getRegClass(SrcReg);
|
||||||
if (Subtarget->hasSPE()) {
|
if (Subtarget->hasSPE()) {
|
||||||
DestReg = createResultReg(&PPC::GPRCRegClass);
|
DestReg = createResultReg(&PPC::GPRCRegClass);
|
||||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc,
|
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::EFSCFD),
|
||||||
TII.get(PPC::EFSCFD), DestReg)
|
DestReg)
|
||||||
.addReg(SrcReg);
|
.addReg(SrcReg);
|
||||||
} else if (isVSFRCRegClass(RC)) {
|
} else if (Subtarget->hasP8Vector() && isVSFRCRegClass(RC)) {
|
||||||
DestReg = createResultReg(&PPC::VSSRCRegClass);
|
DestReg = createResultReg(&PPC::VSSRCRegClass);
|
||||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc,
|
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::XSRSP),
|
||||||
TII.get(PPC::XSRSP), DestReg)
|
DestReg)
|
||||||
.addReg(SrcReg);
|
.addReg(SrcReg);
|
||||||
} else {
|
} else {
|
||||||
|
SrcReg = copyRegToRegClass(&PPC::F8RCRegClass, SrcReg);
|
||||||
DestReg = createResultReg(&PPC::F4RCRegClass);
|
DestReg = createResultReg(&PPC::F4RCRegClass);
|
||||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc,
|
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc,
|
||||||
TII.get(PPC::FRSP), DestReg)
|
TII.get(PPC::FRSP), DestReg)
|
||||||
|
|
|
@ -2,6 +2,10 @@
|
||||||
; RUN: -verify-machineinstrs | FileCheck %s --check-prefix=GENERIC
|
; RUN: -verify-machineinstrs | FileCheck %s --check-prefix=GENERIC
|
||||||
; RUN: llc -mcpu=ppc -mtriple=powerpc64le-unknown-unknown -O0 < %s \
|
; RUN: llc -mcpu=ppc -mtriple=powerpc64le-unknown-unknown -O0 < %s \
|
||||||
; RUN: -verify-machineinstrs | FileCheck %s
|
; RUN: -verify-machineinstrs | FileCheck %s
|
||||||
|
; RUN: llc -mcpu=pwr7 -mtriple=powerpc64-ibm-aix-xcoff -O0 < %s \
|
||||||
|
; RUN: -verify-machineinstrs | FileCheck %s
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
define float @testRSP(double %x) {
|
define float @testRSP(double %x) {
|
||||||
entry:
|
entry:
|
||||||
|
|
Loading…
Reference in New Issue