Apply LLVM patches for 21.1

This commit is contained in:
Arina Neshlyaeva
2025-10-14 16:57:43 -07:00
committed by aneshlya
parent eec43c81bc
commit 459d943b00
2 changed files with 160 additions and 0 deletions
+160
View File
@@ -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: {