Apply LLVM patches for 21.1
This commit is contained in:
committed by
aneshlya
parent
eec43c81bc
commit
459d943b00
@@ -0,0 +1,160 @@
|
||||
From 64626feb1c35d51e38f5ba47021bafc7e2825578 Mon Sep 17 00:00:00 2001
|
||||
From: Aleksei Nurmukhametov <aleksei.nurmukhametov@intel.com>
|
||||
Date: Wed, 16 Apr 2025 10:37:29 -0700
|
||||
Subject: Revert be6c752e157638849f1f59f7e2b7ecbe11a022fe
|
||||
|
||||
See https://github.com/llvm/llvm-project/issues/135998
|
||||
|
||||
---
|
||||
.../Target/X86/X86FixupVectorConstants.cpp | 119 +++++-------------
|
||||
1 file changed, 29 insertions(+), 90 deletions(-)
|
||||
|
||||
diff --git a/llvm/lib/Target/X86/X86FixupVectorConstants.cpp b/llvm/lib/Target/X86/X86FixupVectorConstants.cpp
|
||||
index 6fe39c67897..6317e4f091f 100644
|
||||
--- a/llvm/lib/Target/X86/X86FixupVectorConstants.cpp
|
||||
+++ b/llvm/lib/Target/X86/X86FixupVectorConstants.cpp
|
||||
@@ -346,7 +346,6 @@ bool X86FixupVectorConstantsPass::processInstruction(MachineFunction &MF,
|
||||
bool HasDQI = ST->hasDQI();
|
||||
bool HasBWI = ST->hasBWI();
|
||||
bool HasVLX = ST->hasVLX();
|
||||
- bool MultiDomain = ST->hasAVX512() || ST->hasNoDomainDelayMov();
|
||||
bool OptSize = MF.getFunction().hasOptSize();
|
||||
|
||||
struct FixupEntry {
|
||||
@@ -447,107 +446,47 @@ bool X86FixupVectorConstantsPass::processInstruction(MachineFunction &MF,
|
||||
case X86::VMOVAPDrm:
|
||||
case X86::VMOVAPSrm:
|
||||
case X86::VMOVUPDrm:
|
||||
- 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},
|
||||
- {X86::VMOVSDrm, 1, 64, rebuildZeroUpperCst},
|
||||
- {X86::VMOVDDUPrm, 1, 64, rebuildSplatCst},
|
||||
- {MultiDomain ? X86::VPMOVSXWDrm : 0, 4, 16, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXWDrm : 0, 4, 16, rebuildZExtCst},
|
||||
- {MultiDomain ? X86::VPMOVSXDQrm : 0, 2, 32, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXDQrm : 0, 2, 32, rebuildZExtCst}};
|
||||
- return FixupConstant(Fixups, 128, 1);
|
||||
- }
|
||||
+ 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::VMOVAPDYrm:
|
||||
case X86::VMOVAPSYrm:
|
||||
case X86::VMOVUPDYrm:
|
||||
- case X86::VMOVUPSYrm: {
|
||||
- FixupEntry Fixups[] = {
|
||||
- {X86::VBROADCASTSSYrm, 1, 32, rebuildSplatCst},
|
||||
- {HasAVX2 && MultiDomain ? X86::VPMOVSXBQYrm : 0, 4, 8, rebuildSExtCst},
|
||||
- {HasAVX2 && MultiDomain ? X86::VPMOVZXBQYrm : 0, 4, 8, rebuildZExtCst},
|
||||
- {X86::VBROADCASTSDYrm, 1, 64, rebuildSplatCst},
|
||||
- {HasAVX2 && MultiDomain ? X86::VPMOVSXBDYrm : 0, 8, 8, rebuildSExtCst},
|
||||
- {HasAVX2 && MultiDomain ? X86::VPMOVZXBDYrm : 0, 8, 8, rebuildZExtCst},
|
||||
- {HasAVX2 && MultiDomain ? X86::VPMOVSXWQYrm : 0, 4, 16, rebuildSExtCst},
|
||||
- {HasAVX2 && MultiDomain ? X86::VPMOVZXWQYrm : 0, 4, 16, rebuildZExtCst},
|
||||
- {X86::VBROADCASTF128rm, 1, 128, rebuildSplatCst},
|
||||
- {HasAVX2 && MultiDomain ? X86::VPMOVSXWDYrm : 0, 8, 16, rebuildSExtCst},
|
||||
- {HasAVX2 && MultiDomain ? X86::VPMOVZXWDYrm : 0, 8, 16, rebuildZExtCst},
|
||||
- {HasAVX2 && MultiDomain ? X86::VPMOVSXDQYrm : 0, 4, 32, rebuildSExtCst},
|
||||
- {HasAVX2 && MultiDomain ? X86::VPMOVZXDQYrm : 0, 4, 32,
|
||||
- rebuildZExtCst}};
|
||||
- return FixupConstant(Fixups, 256, 1);
|
||||
- }
|
||||
+ case X86::VMOVUPSYrm:
|
||||
+ return FixupConstant({{X86::VBROADCASTSSYrm, 1, 32, rebuildSplatCst},
|
||||
+ {X86::VBROADCASTSDYrm, 1, 64, rebuildSplatCst},
|
||||
+ {X86::VBROADCASTF128rm, 1, 128, rebuildSplatCst}},
|
||||
+ 256, 1);
|
||||
case X86::VMOVAPDZ128rm:
|
||||
case X86::VMOVAPSZ128rm:
|
||||
case X86::VMOVUPDZ128rm:
|
||||
- case X86::VMOVUPSZ128rm: {
|
||||
- FixupEntry Fixups[] = {
|
||||
- {MultiDomain ? X86::VPMOVSXBQZ128rm : 0, 2, 8, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXBQZ128rm : 0, 2, 8, rebuildZExtCst},
|
||||
- {X86::VMOVSSZrm, 1, 32, rebuildZeroUpperCst},
|
||||
- {X86::VBROADCASTSSZ128rm, 1, 32, rebuildSplatCst},
|
||||
- {MultiDomain ? X86::VPMOVSXBDZ128rm : 0, 4, 8, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXBDZ128rm : 0, 4, 8, rebuildZExtCst},
|
||||
- {MultiDomain ? X86::VPMOVSXWQZ128rm : 0, 2, 16, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXWQZ128rm : 0, 2, 16, rebuildZExtCst},
|
||||
- {X86::VMOVSDZrm, 1, 64, rebuildZeroUpperCst},
|
||||
- {X86::VMOVDDUPZ128rm, 1, 64, rebuildSplatCst},
|
||||
- {MultiDomain ? X86::VPMOVSXWDZ128rm : 0, 4, 16, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXWDZ128rm : 0, 4, 16, rebuildZExtCst},
|
||||
- {MultiDomain ? X86::VPMOVSXDQZ128rm : 0, 2, 32, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXDQZ128rm : 0, 2, 32, rebuildZExtCst}};
|
||||
- return FixupConstant(Fixups, 128, 1);
|
||||
- }
|
||||
+ case X86::VMOVUPSZ128rm:
|
||||
+ return FixupConstant({{X86::VMOVSSZrm, 1, 32, rebuildZeroUpperCst},
|
||||
+ {X86::VBROADCASTSSZ128rm, 1, 32, rebuildSplatCst},
|
||||
+ {X86::VMOVSDZrm, 1, 64, rebuildZeroUpperCst},
|
||||
+ {X86::VMOVDDUPZ128rm, 1, 64, rebuildSplatCst}},
|
||||
+ 128, 1);
|
||||
case X86::VMOVAPDZ256rm:
|
||||
case X86::VMOVAPSZ256rm:
|
||||
case X86::VMOVUPDZ256rm:
|
||||
- case X86::VMOVUPSZ256rm: {
|
||||
- FixupEntry Fixups[] = {
|
||||
- {X86::VBROADCASTSSZ256rm, 1, 32, rebuildSplatCst},
|
||||
- {MultiDomain ? X86::VPMOVSXBQZ256rm : 0, 4, 8, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXBQZ256rm : 0, 4, 8, rebuildZExtCst},
|
||||
- {X86::VBROADCASTSDZ256rm, 1, 64, rebuildSplatCst},
|
||||
- {MultiDomain ? X86::VPMOVSXBDZ256rm : 0, 8, 8, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXBDZ256rm : 0, 8, 8, rebuildZExtCst},
|
||||
- {MultiDomain ? X86::VPMOVSXWQZ256rm : 0, 4, 16, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXWQZ256rm : 0, 4, 16, rebuildZExtCst},
|
||||
- {X86::VBROADCASTF32X4Z256rm, 1, 128, rebuildSplatCst},
|
||||
- {MultiDomain ? X86::VPMOVSXWDZ256rm : 0, 8, 16, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXWDZ256rm : 0, 8, 16, rebuildZExtCst},
|
||||
- {MultiDomain ? X86::VPMOVSXDQZ256rm : 0, 4, 32, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXDQZ256rm : 0, 4, 32, rebuildZExtCst}};
|
||||
- return FixupConstant(Fixups, 256, 1);
|
||||
- }
|
||||
+ case X86::VMOVUPSZ256rm:
|
||||
+ return FixupConstant(
|
||||
+ {{X86::VBROADCASTSSZ256rm, 1, 32, rebuildSplatCst},
|
||||
+ {X86::VBROADCASTSDZ256rm, 1, 64, rebuildSplatCst},
|
||||
+ {X86::VBROADCASTF32X4Z256rm, 1, 128, rebuildSplatCst}},
|
||||
+ 256, 1);
|
||||
case X86::VMOVAPDZrm:
|
||||
case X86::VMOVAPSZrm:
|
||||
case X86::VMOVUPDZrm:
|
||||
- case X86::VMOVUPSZrm: {
|
||||
- FixupEntry Fixups[] = {
|
||||
- {X86::VBROADCASTSSZrm, 1, 32, rebuildSplatCst},
|
||||
- {X86::VBROADCASTSDZrm, 1, 64, rebuildSplatCst},
|
||||
- {MultiDomain ? X86::VPMOVSXBQZrm : 0, 8, 8, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXBQZrm : 0, 8, 8, rebuildZExtCst},
|
||||
- {X86::VBROADCASTF32X4Zrm, 1, 128, rebuildSplatCst},
|
||||
- {MultiDomain ? X86::VPMOVSXBDZrm : 0, 16, 8, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXBDZrm : 0, 16, 8, rebuildZExtCst},
|
||||
- {MultiDomain ? X86::VPMOVSXWQZrm : 0, 8, 16, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXWQZrm : 0, 8, 16, rebuildZExtCst},
|
||||
- {X86::VBROADCASTF64X4Zrm, 1, 256, rebuildSplatCst},
|
||||
- {MultiDomain ? X86::VPMOVSXWDZrm : 0, 16, 16, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXWDZrm : 0, 16, 16, rebuildZExtCst},
|
||||
- {MultiDomain ? X86::VPMOVSXDQZrm : 0, 8, 32, rebuildSExtCst},
|
||||
- {MultiDomain ? X86::VPMOVZXDQZrm : 0, 8, 32, rebuildZExtCst}};
|
||||
- return FixupConstant(Fixups, 512, 1);
|
||||
- }
|
||||
+ case X86::VMOVUPSZrm:
|
||||
+ return FixupConstant({{X86::VBROADCASTSSZrm, 1, 32, rebuildSplatCst},
|
||||
+ {X86::VBROADCASTSDZrm, 1, 64, rebuildSplatCst},
|
||||
+ {X86::VBROADCASTF32X4Zrm, 1, 128, rebuildSplatCst},
|
||||
+ {X86::VBROADCASTF64X4Zrm, 1, 256, rebuildSplatCst}},
|
||||
+ 512, 1);
|
||||
/* Integer Loads */
|
||||
case X86::MOVDQArm:
|
||||
case X86::MOVDQUrm: {
|
||||
Reference in New Issue
Block a user