llvm-project
410764cf - [RISCV] Commute True in foldVMergeToMask (#156499)

Commit
197 days ago
[RISCV] Commute True in foldVMergeToMask (#156499) In order to fold a vmerge into a pseudo, the pseudo's passthru needs to be the same as vmerge's false operand. If they don't match we can try and commute the instruction if possible, e.g. here we can commute v9 and v8 to fold the vmerge: vsetvli zero, a0, e32, m1, ta, ma vfmadd.vv v9, v10, v8 vsetvli zero, zero, e32, m1, tu, ma vmerge.vvm v8, v8, v9, v0 vsetvli zero, a0, e32, m1, tu, mu vfmacc.vv v8, v9, v10, v0.t Previously this wasn't possible because we did the peephole in SelectionDAG, but now that it's been migrated to MachineInstr in #144076 we can reuse the commuting infrastructure in TargetInstrInfo. This fixes the extra vmv.v.v in the "mul" example here: https://github.com/llvm/llvm-project/issues/123069#issuecomment-3137997141 It should also allow us to remove the isel patterns described in #141885 later.
Author
Parents
Loading