[llvm] [RISCV][TII] Add and use new hook to optimize/canonicalize instructions after MachineCopyPropagation (PR #137973)
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Thu May 1 08:09:30 PDT 2025
================
@@ -3850,6 +3865,207 @@ MachineInstr *RISCVInstrInfo::commuteInstructionImpl(MachineInstr &MI,
return TargetInstrInfo::commuteInstructionImpl(MI, NewMI, OpIdx1, OpIdx2);
}
+bool RISCVInstrInfo::optimizeInstruction(MachineInstr &MI) const {
+ switch (MI.getOpcode()) {
+ default:
+ break;
+ case RISCV::OR:
+ case RISCV::XOR:
+ // Normalize:
+ // [x]or rd, zero, rs => [x]or rd, rs, zero
+ if (MI.getOperand(1).getReg() == RISCV::X0) {
+ MachineOperand MO1 = MI.getOperand(1);
+ MI.removeOperand(1);
+ MI.addOperand(MO1);
+ }
----------------
preames wrote:
You have "Normalize" as a comment, maybe "Normalize (so we hit the next if-clause)". Or something along those lines. I didn't spot the fallthrough on first glance, though I agree it's easier to see after the use of commuteInstruction.
https://github.com/llvm/llvm-project/pull/137973
More information about the llvm-commits
mailing list