[llvm] b8014b5 - [RISCV][GISel] Simplify selectSelect. NFC (#70846)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 31 12:09:34 PDT 2023
Author: Craig Topper
Date: 2023-10-31T12:09:30-07:00
New Revision: b8014b5837847407a2c843329da92c75fddb2610
URL: https://github.com/llvm/llvm-project/commit/b8014b5837847407a2c843329da92c75fddb2610
DIFF: https://github.com/llvm/llvm-project/commit/b8014b5837847407a2c843329da92c75fddb2610.diff
LOG: [RISCV][GISel] Simplify selectSelect. NFC (#70846)
Use GSelect and reduce number of temporaries.
Added:
Modified:
llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp b/llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp
index b03be71ed7b2a6f..698168f6a8012e9 100644
--- a/llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp
+++ b/llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp
@@ -776,27 +776,24 @@ static void getICMPOperandsForBranch(MachineInstr &MI, MachineIRBuilder &MIB,
bool RISCVInstructionSelector::selectSelect(MachineInstr &MI,
MachineIRBuilder &MIB,
MachineRegisterInfo &MRI) const {
- assert(MI.getOpcode() == TargetOpcode::G_SELECT);
+ auto &SelectMI = cast<GSelect>(MI);
// If MI is a G_SELECT(G_ICMP(tst, A, B), C, D) then we can use (A, B, tst)
// as the (LHS, RHS, CC) of the Select_GPR_Using_CC_GPR.
- Register MIOp1Reg = MI.getOperand(1).getReg();
- bool Op1IsICMP = mi_match(MIOp1Reg, MRI, m_GICmp(m_Pred(), m_Reg(), m_Reg()));
- RISCVCC::CondCode CC;
- Register LHS, RHS;
- if (Op1IsICMP)
- getICMPOperandsForBranch(*MRI.getVRegDef(MIOp1Reg), MIB, MRI, CC, LHS, RHS);
-
- Register Op1 = Op1IsICMP ? LHS : MI.getOperand(1).getReg();
- Register Op2 = Op1IsICMP ? RHS : RISCV::X0;
- unsigned Op3 = Op1IsICMP ? CC : RISCVCC::COND_NE;
+ Register LHS = SelectMI.getCondReg();
+ Register RHS = RISCV::X0;
+ RISCVCC::CondCode CC = RISCVCC::COND_NE;
+
+ if (mi_match(LHS, MRI, m_GICmp(m_Pred(), m_Reg(), m_Reg())))
+ getICMPOperandsForBranch(*MRI.getVRegDef(LHS), MIB, MRI, CC, LHS, RHS);
+
MachineInstr *Result = MIB.buildInstr(RISCV::Select_GPR_Using_CC_GPR)
- .addDef(MI.getOperand(0).getReg())
- .addReg(Op1)
- .addReg(Op2)
- .addImm(Op3)
- .addReg(MI.getOperand(2).getReg())
- .addReg(MI.getOperand(3).getReg());
+ .addDef(SelectMI.getReg(0))
+ .addReg(LHS)
+ .addReg(RHS)
+ .addImm(CC)
+ .addReg(SelectMI.getTrueReg())
+ .addReg(SelectMI.getFalseReg());
MI.eraseFromParent();
return constrainSelectedInstRegOperands(*Result, TII, TRI, RBI);
}
More information about the llvm-commits
mailing list