Skip to content

Commit a0e6248

Browse files
committed
[Xtensa] Fix MOVSP pseudo operation.
1 parent 5bbdb8a commit a0e6248

File tree

3 files changed

+7
-9
lines changed

3 files changed

+7
-9
lines changed

llvm/lib/Target/Xtensa/XtensaISelLowering.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -900,7 +900,6 @@ SDValue XtensaTargetLowering::LowerSTACKRESTORE(SDValue Op,
900900

901901
if (Subtarget.isWindowedABI()) {
902902
return DAG.getNode(XtensaISD::MOVSP, SDLoc(Op), MVT::Other, Chain,
903-
DAG.getRegister(Xtensa::SP, NewSP.getValueType()),
904903
NewSP);
905904
}
906905

@@ -947,7 +946,7 @@ SDValue XtensaTargetLowering::LowerDYNAMIC_STACKALLOC(SDValue Op,
947946
SDValue NewSP = DAG.getNode(ISD::SUB, DL, VT, SP, SizeRoundUp); // Value
948947
if (Subtarget.isWindowedABI()) {
949948
Chain = DAG.getNode(XtensaISD::MOVSP, SDLoc(Op), MVT::Other, SP.getValue(1),
950-
DAG.getRegister(SPReg, NewSP.getValueType()), NewSP);
949+
NewSP);
951950
} else {
952951
Chain = DAG.getCopyToReg(SP.getValue(1), DL, SPReg, NewSP); // Output chain
953952
}
@@ -1390,10 +1389,9 @@ MachineBasicBlock *XtensaTargetLowering::EmitInstrWithCustomInserter(
13901389
return MBB;
13911390
}
13921391
case Xtensa::MOVSP_P: {
1393-
MachineOperand SP = MI.getOperand(0);
1394-
MachineOperand NewSP = MI.getOperand(1);
1392+
MachineOperand &NewSP = MI.getOperand(0);
13951393

1396-
BuildMI(*MBB, MI, DL, TII.get(Xtensa::MOVSP), SP.getReg())
1394+
BuildMI(*MBB, MI, DL, TII.get(Xtensa::MOVSP), Xtensa::SP)
13971395
.addReg(NewSP.getReg());
13981396
MI.eraseFromParent();
13991397

llvm/lib/Target/Xtensa/XtensaInstrInfo.td

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -725,9 +725,9 @@ def MOVSP : RRR_Inst<0x00, 0x00, 0x00, (outs AR:$t), (ins AR:$s),
725725

726726
// Use this pseudo operation instead of getCopyToReg function to
727727
// update SP register.
728-
let usesCustomInserter = 1, Predicates = [HasWindowed] in {
729-
def MOVSP_P : Pseudo<(outs), (ins AR:$t, AR:$s),
730-
"!movsp_p\t$t, $s", [(Xtensa_movsp AR:$t, AR:$s)]>;
728+
let usesCustomInserter = 1, Defs = [SP], Predicates = [HasWindowed] in {
729+
def MOVSP_P : Pseudo<(outs), (ins AR:$s),
730+
"!movsp_p\tsp, $s", [(Xtensa_movsp AR:$s)]>;
731731
}
732732

733733
let isReturn = 1, isTerminator = 1,

llvm/lib/Target/Xtensa/XtensaOperators.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def SDT_XtensaSRC : SDTypeProfile<1, 3, [SDTCisVT<0, i32>, SDTCi
3131
def SDT_XtensaEXTUI : SDTypeProfile<1, 3, [SDTCisVT<0, i32>, SDTCisVT<1, i32>,
3232
SDTCisVT<2, i32>, SDTCisVT<3, i32>]>;
3333

34-
def SDT_XtensaMOVSP : SDTypeProfile<0, 2, [SDTCisSameAs<0, 1>, SDTCisVT<0, i32>]>;
34+
def SDT_XtensaMOVSP : SDTypeProfile<0, 1, [SDTCisVT<0, i32>]>;
3535

3636
//===----------------------------------------------------------------------===//
3737
// Node definitions

0 commit comments

Comments
 (0)