[llvm] [X86] Use X86FixupInstTunings to select between (V)MOVSS/D and (V)BLENDPS/D (PR #143312)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 9 00:29:12 PDT 2025
================
@@ -221,8 +221,41 @@ bool X86FixupInstTuningPass::processInstruction(
auto ProcessUNPCKPS = [&](unsigned NewOpc) -> bool {
return ProcessUNPCKToIntDomain(NewOpc);
};
+
+ auto ProcessBLENDToMOV = [&](unsigned MovOpc) -> bool {
+ if (!MI.getOperand(NumOperands - 1).isImm() ||
+ MI.getOperand(NumOperands - 1).getImm() != 1)
+ return false;
+
+ bool Force = MF.getFunction().hasOptSize();
+ if (!Force && !NewOpcPreferable(MovOpc))
+ return false;
+ MI.setDesc(TII->get(MovOpc));
+ MI.removeOperand(NumOperands - 1);
+ return true;
+ };
switch (Opc) {
+ case X86::VBLENDPSrri:
+ case X86::VBLENDPSYrri:
+ case X86::VBLENDMPSZ128rrkz:
+ case X86::VBLENDMPSZ256rrkz:
+ case X86::VBLENDMPSZrrkz: {
+ int Imm = MI.getOperand(NumOperands - 1).getImm();
+ if (Imm != 1)
+ return false;
+ return ProcessBLENDToMOV(X86::VMOVSSrr);
+ }
+ case X86::VBLENDPDrri:
+ case X86::VBLENDPDYrri:
+ case X86::VBLENDMPDZ128rrkz:
+ case X86::VBLENDMPDZ256rrkz:
+ case X86::VBLENDMPDZrrkz: {
----------------
RKSimon wrote:
same - only VBLENDPDrri is safe
https://github.com/llvm/llvm-project/pull/143312
More information about the llvm-commits
mailing list