[llvm] [X86] X86FixupVectorConstantsPass - use VPMOVSX/ZX extensions for PS/PD domain moves (PR #122601)
Phoebe Wang via llvm-commits
llvm-commits at lists.llvm.org
Sat Jan 11 17:48:13 PST 2025
================
@@ -401,47 +402,107 @@ bool X86FixupVectorConstantsPass::processInstruction(MachineFunction &MF,
case X86::VMOVAPDrm:
case X86::VMOVAPSrm:
case X86::VMOVUPDrm:
- case X86::VMOVUPSrm:
- return FixupConstant({{X86::VMOVSSrm, 1, 32, rebuildZeroUpperCst},
- {X86::VBROADCASTSSrm, 1, 32, rebuildSplatCst},
- {X86::VMOVSDrm, 1, 64, rebuildZeroUpperCst},
- {X86::VMOVDDUPrm, 1, 64, rebuildSplatCst}},
- 128, 1);
+ case X86::VMOVUPSrm: {
+ FixupEntry Fixups[] = {
+ {MultiDomain ? X86::VPMOVSXBQrm : 0, 2, 8, rebuildSExtCst},
+ {MultiDomain ? X86::VPMOVZXBQrm : 0, 2, 8, rebuildZExtCst},
+ {X86::VMOVSSrm, 1, 32, rebuildZeroUpperCst},
+ {X86::VBROADCASTSSrm, 1, 32, rebuildSplatCst},
+ {MultiDomain ? X86::VPMOVSXBDrm : 0, 4, 8, rebuildSExtCst},
+ {MultiDomain ? X86::VPMOVZXBDrm : 0, 4, 8, rebuildZExtCst},
+ {MultiDomain ? X86::VPMOVSXWQrm : 0, 2, 16, rebuildSExtCst},
+ {MultiDomain ? X86::VPMOVZXWQrm : 0, 2, 16, rebuildZExtCst},
----------------
phoebewang wrote:
Do we need check hasAVX2?
https://github.com/llvm/llvm-project/pull/122601
More information about the llvm-commits
mailing list