Skip to content

Commit 5af28f6

Browse files
committed
Optimise frame index elimination with a frame offset of 0
1 parent ee4847a commit 5af28f6

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

llvm/lib/Target/Fero/FeroISelDAGToDAG.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,7 @@ SDNode* FeroDAGToDAGISel::selectBranch(SDNode *Node, unsigned int TargetOp, Fero
8888
}
8989

9090
void FeroDAGToDAGISel::selectConstantAssignment(SDNode *Node) {
91-
Node->dump();
9291
auto Imm = cast<ConstantSDNode>(Node);
93-
Imm->dump();
9492
CurDAG->SelectNodeTo(Node, Fero::LD, Node->getValueType(0), CurDAG->getTargetConstant(Imm->getZExtValue(), SDLoc(Node), MVT::i16));
9593
}
9694

llvm/lib/Target/Fero/FeroRegisterInfo.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,14 @@ void FeroRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
7777
Register FrameReg = Fero::R14;
7878
Register Dest = MI.getOperand(0).getReg();
7979

80-
BuildMI(*MI.getParent(), II, DL, TII->get(Fero::LD), Dest).addImm(Offset);
81-
BuildMI(*MI.getParent(), II, DL, TII->get(Fero::ADD), Dest)
82-
.addReg(Dest)
83-
.addReg(FrameReg);
80+
if (Offset == 0) {
81+
BuildMI(*MI.getParent(), II, DL, TII->get(Fero::MOV), Dest).addReg(FrameReg);
82+
} else {
83+
BuildMI(*MI.getParent(), II, DL, TII->get(Fero::LD), Dest).addImm(Offset);
84+
BuildMI(*MI.getParent(), II, DL, TII->get(Fero::ADD), Dest)
85+
.addReg(Dest)
86+
.addReg(FrameReg);
87+
}
8488
MI.eraseFromParent();
8589
}
8690

0 commit comments

Comments
 (0)