[llvm] [RISCV][GISel] Implement instruction selection for G_PHI and G_BRCOND. (PR #66970)
Amara Emerson via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 22 01:04:52 PDT 2023
================
@@ -205,6 +231,15 @@ bool RISCVInstructionSelector::select(MachineInstr &MI) {
if (!selectConstant(MI, MIB, MRI))
return false;
break;
+ case TargetOpcode::G_BRCOND: {
+ // TODO: Fold with G_ICMP.
+ auto Bcc = MIB.buildInstr(RISCV::BNE)
+ .addReg(MI.getOperand(0).getReg())
+ .addReg(RISCV::X0)
+ .addMBB(MI.getOperand(1).getMBB());
----------------
aemerson wrote:
I think you can do something like this:
```
auto Bcc =
MIB.buildInstr(RISCV::BNE, {}, {MI.getOperand(0), Register(RISCV::X0)})
.addMBB(MI.getOperand(1).getMBB());
```
MachineIRBuilder's `SrcOp` can interpret MachineOperands as register implicitly. You can also pass it `RegisterClass`es if you need to implicitly create a vreg.
https://github.com/llvm/llvm-project/pull/66970
More information about the llvm-commits
mailing list