@@ -18418,6 +18418,15 @@ static MachineBasicBlock *emitSelectPseudo(MachineInstr &MI,
18418
18418
// Select_FPRX_ (rs1, rs2, imm, rs4, (Select_FPRX_ rs1, rs2, imm, rs4, rs5))
18419
18419
// is checked here and handled by a separate function -
18420
18420
// EmitLoweredCascadedSelect.
18421
+
18422
+ auto Next = next_nodbg(MI.getIterator(), BB->instr_end());
18423
+ if ((MI.getOpcode() != RISCV::Select_GPR_Using_CC_GPR &&
18424
+ MI.getOpcode() != RISCV::Select_GPR_Using_CC_Imm) &&
18425
+ Next != BB->end() && Next->getOpcode() == MI.getOpcode() &&
18426
+ Next->getOperand(5).getReg() == MI.getOperand(0).getReg() &&
18427
+ Next->getOperand(5).isKill())
18428
+ return EmitLoweredCascadedSelect(MI, *Next, BB, Subtarget);
18429
+
18421
18430
Register LHS = MI.getOperand(1).getReg();
18422
18431
Register RHS;
18423
18432
if (MI.getOperand(2).isReg())
@@ -18429,15 +18438,6 @@ static MachineBasicBlock *emitSelectPseudo(MachineInstr &MI,
18429
18438
SelectDests.insert(MI.getOperand(0).getReg());
18430
18439
18431
18440
MachineInstr *LastSelectPseudo = &MI;
18432
- auto Next = next_nodbg(MI.getIterator(), BB->instr_end());
18433
- if ((MI.getOpcode() != RISCV::Select_GPR_Using_CC_GPR &&
18434
- MI.getOpcode() != RISCV::Select_GPR_Using_CC_Imm) &&
18435
- Next != BB->end() && Next->getOpcode() == MI.getOpcode() &&
18436
- Next->getOperand(5).getReg() == MI.getOperand(0).getReg() &&
18437
- Next->getOperand(5).isKill()) {
18438
- return EmitLoweredCascadedSelect(MI, *Next, BB, Subtarget);
18439
- }
18440
-
18441
18441
for (auto E = BB->end(), SequenceMBBI = MachineBasicBlock::iterator(MI);
18442
18442
SequenceMBBI != E; ++SequenceMBBI) {
18443
18443
if (SequenceMBBI->isDebugInstr())
0 commit comments