[llvm] 29475e0 - [X86] Add scheduler classes for zmm vector reg-reg move instructions
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 27 04:13:52 PST 2021
Author: Simon Pilgrim
Date: 2021-12-27T12:13:42Z
New Revision: 29475e02865b0ecad5f184f413382a68b9040047
URL: https://github.com/llvm/llvm-project/commit/29475e02865b0ecad5f184f413382a68b9040047
DIFF: https://github.com/llvm/llvm-project/commit/29475e02865b0ecad5f184f413382a68b9040047.diff
LOG: [X86] Add scheduler classes for zmm vector reg-reg move instructions
Basic zmm reg-reg moves (with predication) are more port limited than xmm/ymm moves, so we need to add a separate class for them.
We still appear to be missing move-elimination patterns for most of the intel models, which looks to be one of the main diffs for basic codegen analysis between llvm-mca and uops.info
Load/stores are a bit messier and might be better handled as overrides.
Added:
Modified:
llvm/lib/Target/X86/X86SchedBroadwell.td
llvm/lib/Target/X86/X86SchedHaswell.td
llvm/lib/Target/X86/X86SchedIceLake.td
llvm/lib/Target/X86/X86SchedSandyBridge.td
llvm/lib/Target/X86/X86SchedSkylakeClient.td
llvm/lib/Target/X86/X86SchedSkylakeServer.td
llvm/lib/Target/X86/X86Schedule.td
llvm/lib/Target/X86/X86ScheduleAtom.td
llvm/lib/Target/X86/X86ScheduleBdVer2.td
llvm/lib/Target/X86/X86ScheduleBtVer2.td
llvm/lib/Target/X86/X86ScheduleSLM.td
llvm/lib/Target/X86/X86ScheduleZnver1.td
llvm/lib/Target/X86/X86ScheduleZnver2.td
llvm/lib/Target/X86/X86ScheduleZnver3.td
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512.s
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bw.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bw.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86SchedBroadwell.td b/llvm/lib/Target/X86/X86SchedBroadwell.td
index a6ff472aac6f7..a47abf1e83a0c 100644
--- a/llvm/lib/Target/X86/X86SchedBroadwell.td
+++ b/llvm/lib/Target/X86/X86SchedBroadwell.td
@@ -255,6 +255,7 @@ defm : X86WriteRes<WriteFMaskedStore64Y, [BWPort0,BWPort4,BWPort237,BWPort15], 5
defm : X86WriteRes<WriteFMove, [BWPort5], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveX, [BWPort5], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveY, [BWPort5], 1, [1], 1>;
+defm : X86WriteResUnsupported<WriteFMoveZ>;
defm : X86WriteRes<WriteEMMS, [BWPort01,BWPort15,BWPort015,BWPort0156], 31, [8,1,21,1], 31>;
defm : BWWriteResPair<WriteFAdd, [BWPort1], 3, [1], 1, 5>; // Floating point add/sub.
@@ -418,6 +419,7 @@ defm : X86WriteRes<WriteVecMaskedStore64Y, [BWPort0,BWPort4,BWPort237,BWPort15],
defm : X86WriteRes<WriteVecMove, [BWPort015], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveX, [BWPort015], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveY, [BWPort015], 1, [1], 1>;
+defm : X86WriteResUnsupported<WriteVecMoveZ>;
defm : X86WriteRes<WriteVecMoveToGpr, [BWPort0], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveFromGpr, [BWPort5], 1, [1], 1>;
diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td
index 371a9571ae392..278e11dfa727c 100644
--- a/llvm/lib/Target/X86/X86SchedHaswell.td
+++ b/llvm/lib/Target/X86/X86SchedHaswell.td
@@ -257,6 +257,7 @@ defm : X86WriteRes<WriteFMaskedStore64Y, [HWPort0,HWPort4,HWPort237,HWPort15], 5
defm : X86WriteRes<WriteFMove, [HWPort5], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveX, [HWPort5], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveY, [HWPort5], 1, [1], 1>;
+defm : X86WriteResUnsupported<WriteFMoveZ>;
defm : X86WriteRes<WriteEMMS, [HWPort01,HWPort15,HWPort015,HWPort0156], 31, [8,1,21,1], 31>;
defm : HWWriteResPair<WriteFAdd, [HWPort1], 3, [1], 1, 5>;
@@ -416,6 +417,7 @@ defm : X86WriteRes<WriteVecMaskedStore64Y, [HWPort0,HWPort4,HWPort237,HWPort15],
defm : X86WriteRes<WriteVecMove, [HWPort015], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveX, [HWPort015], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveY, [HWPort015], 1, [1], 1>;
+defm : X86WriteResUnsupported<WriteVecMoveZ>;
defm : X86WriteRes<WriteVecMoveToGpr, [HWPort0], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveFromGpr, [HWPort5], 1, [1], 1>;
diff --git a/llvm/lib/Target/X86/X86SchedIceLake.td b/llvm/lib/Target/X86/X86SchedIceLake.td
index 789de9eb57517..7a6bedf3d748a 100644
--- a/llvm/lib/Target/X86/X86SchedIceLake.td
+++ b/llvm/lib/Target/X86/X86SchedIceLake.td
@@ -252,6 +252,7 @@ defm : X86WriteRes<WriteFMaskedStore64Y, [ICXPort237,ICXPort0], 2, [1,1], 2>;
defm : X86WriteRes<WriteFMove, [ICXPort015], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveX, [ICXPort015], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveY, [ICXPort015], 1, [1], 1>;
+defm : X86WriteRes<WriteFMoveZ, [ICXPort05], 1, [1], 1>;
defm : X86WriteRes<WriteEMMS, [ICXPort05,ICXPort0156], 10, [9,1], 10>;
defm : ICXWriteResPair<WriteFAdd, [ICXPort01], 4, [1], 1, 5>; // Floating point add/sub.
@@ -367,6 +368,7 @@ defm : X86WriteRes<WriteVecMaskedStore64Y, [ICXPort237,ICXPort0], 2, [1,1], 2>;
defm : X86WriteRes<WriteVecMove, [ICXPort05], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveX, [ICXPort015], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveY, [ICXPort015], 1, [1], 1>;
+defm : X86WriteRes<WriteVecMoveZ, [ICXPort05], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveToGpr, [ICXPort0], 2, [1], 1>;
defm : X86WriteRes<WriteVecMoveFromGpr, [ICXPort5], 1, [1], 1>;
diff --git a/llvm/lib/Target/X86/X86SchedSandyBridge.td b/llvm/lib/Target/X86/X86SchedSandyBridge.td
index af5c0540deb54..e2599e04d6358 100644
--- a/llvm/lib/Target/X86/X86SchedSandyBridge.td
+++ b/llvm/lib/Target/X86/X86SchedSandyBridge.td
@@ -223,6 +223,7 @@ defm : X86WriteRes<WriteFMaskedStore64Y, [SBPort4,SBPort01,SBPort23], 5, [1,1,1]
defm : X86WriteRes<WriteFMove, [SBPort5], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveX, [SBPort5], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveY, [SBPort5], 1, [1], 1>;
+defm : X86WriteRes<WriteFMoveZ, [SBPort5], 1, [1], 1>;
defm : X86WriteRes<WriteEMMS, [SBPort015], 31, [31], 31>;
defm : SBWriteResPair<WriteFAdd, [SBPort1], 3, [1], 1, 6>;
@@ -380,6 +381,7 @@ defm : X86WriteRes<WriteVecMaskedStore64Y, [SBPort4,SBPort01,SBPort23], 5, [1,1,
defm : X86WriteRes<WriteVecMove, [SBPort05], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveX, [SBPort015], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveY, [SBPort05], 1, [1], 1>;
+defm : X86WriteRes<WriteVecMoveZ, [SBPort05], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveToGpr, [SBPort0], 2, [1], 1>;
defm : X86WriteRes<WriteVecMoveFromGpr, [SBPort5], 1, [1], 1>;
diff --git a/llvm/lib/Target/X86/X86SchedSkylakeClient.td b/llvm/lib/Target/X86/X86SchedSkylakeClient.td
index b3c13c72dd014..d7d18da7dde90 100644
--- a/llvm/lib/Target/X86/X86SchedSkylakeClient.td
+++ b/llvm/lib/Target/X86/X86SchedSkylakeClient.td
@@ -244,6 +244,7 @@ defm : X86WriteRes<WriteFMaskedStore64Y, [SKLPort237,SKLPort0], 2, [1,1], 2>;
defm : X86WriteRes<WriteFMove, [SKLPort015], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveX, [SKLPort015], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveY, [SKLPort015], 1, [1], 1>;
+defm : X86WriteResUnsupported<WriteFMoveZ>;
defm : X86WriteRes<WriteEMMS, [SKLPort05,SKLPort0156], 10, [9,1], 10>;
defm : SKLWriteResPair<WriteFAdd, [SKLPort01], 4, [1], 1, 5>; // Floating point add/sub.
@@ -359,6 +360,7 @@ defm : X86WriteRes<WriteVecMaskedStore64Y, [SKLPort237,SKLPort0], 2, [1,1], 2>;
defm : X86WriteRes<WriteVecMove, [SKLPort05], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveX, [SKLPort015], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveY, [SKLPort015], 1, [1], 1>;
+defm : X86WriteResUnsupported<WriteVecMoveZ>;
defm : X86WriteRes<WriteVecMoveToGpr, [SKLPort0], 2, [1], 1>;
defm : X86WriteRes<WriteVecMoveFromGpr, [SKLPort5], 1, [1], 1>;
diff --git a/llvm/lib/Target/X86/X86SchedSkylakeServer.td b/llvm/lib/Target/X86/X86SchedSkylakeServer.td
index 74f9da1583536..f8d5f484dca89 100644
--- a/llvm/lib/Target/X86/X86SchedSkylakeServer.td
+++ b/llvm/lib/Target/X86/X86SchedSkylakeServer.td
@@ -244,6 +244,7 @@ defm : X86WriteRes<WriteFMaskedStore64Y, [SKXPort237,SKXPort0], 2, [1,1], 2>;
defm : X86WriteRes<WriteFMove, [SKXPort015], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveX, [SKXPort015], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveY, [SKXPort015], 1, [1], 1>;
+defm : X86WriteRes<WriteFMoveZ, [SKXPort05], 1, [1], 1>;
defm : X86WriteRes<WriteEMMS, [SKXPort05,SKXPort0156], 10, [9,1], 10>;
defm : SKXWriteResPair<WriteFAdd, [SKXPort01], 4, [1], 1, 5>; // Floating point add/sub.
@@ -359,6 +360,7 @@ defm : X86WriteRes<WriteVecMaskedStore64Y, [SKXPort237,SKXPort0], 2, [1,1], 2>;
defm : X86WriteRes<WriteVecMove, [SKXPort05], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveX, [SKXPort015], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveY, [SKXPort015], 1, [1], 1>;
+defm : X86WriteRes<WriteVecMoveZ, [SKXPort05], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveToGpr, [SKXPort0], 2, [1], 1>;
defm : X86WriteRes<WriteVecMoveFromGpr, [SKXPort5], 1, [1], 1>;
diff --git a/llvm/lib/Target/X86/X86Schedule.td b/llvm/lib/Target/X86/X86Schedule.td
index 1cb48175260a8..d57e14715a4e2 100644
--- a/llvm/lib/Target/X86/X86Schedule.td
+++ b/llvm/lib/Target/X86/X86Schedule.td
@@ -239,6 +239,7 @@ def WriteFMaskedStore64Y : SchedWrite;
def WriteFMove : SchedWrite;
def WriteFMoveX : SchedWrite;
def WriteFMoveY : SchedWrite;
+def WriteFMoveZ : SchedWrite;
defm WriteFAdd : X86SchedWritePair<ReadAfterVecLd>; // Floating point add/sub.
defm WriteFAddX : X86SchedWritePair<ReadAfterVecXLd>; // Floating point add/sub (XMM).
@@ -354,6 +355,7 @@ def WriteVecMaskedStore64Y : SchedWrite;
def WriteVecMove : SchedWrite;
def WriteVecMoveX : SchedWrite;
def WriteVecMoveY : SchedWrite;
+def WriteVecMoveZ : SchedWrite;
def WriteVecMoveToGpr : SchedWrite;
def WriteVecMoveFromGpr : SchedWrite;
@@ -516,9 +518,11 @@ def WriteFMoveLSX
: X86SchedWriteMoveLS<WriteFMoveX, WriteFLoadX, WriteFStoreX>;
def WriteFMoveLSY
: X86SchedWriteMoveLS<WriteFMoveY, WriteFLoadY, WriteFStoreY>;
+def WriteFMoveLSZ
+ : X86SchedWriteMoveLS<WriteFMoveZ, WriteFLoadY, WriteFStoreY>;
def SchedWriteFMoveLS
: X86SchedWriteMoveLSWidths<WriteFMoveLS, WriteFMoveLSX,
- WriteFMoveLSY, WriteFMoveLSY>;
+ WriteFMoveLSY, WriteFMoveLSZ>;
def WriteFMoveLSNT
: X86SchedWriteMoveLS<WriteFMove, WriteFLoad, WriteFStoreNT>;
@@ -536,9 +540,11 @@ def WriteVecMoveLSX
: X86SchedWriteMoveLS<WriteVecMoveX, WriteVecLoadX, WriteVecStoreX>;
def WriteVecMoveLSY
: X86SchedWriteMoveLS<WriteVecMoveY, WriteVecLoadY, WriteVecStoreY>;
+def WriteVecMoveLSZ
+ : X86SchedWriteMoveLS<WriteVecMoveZ, WriteVecLoadY, WriteVecStoreY>;
def SchedWriteVecMoveLS
: X86SchedWriteMoveLSWidths<WriteVecMoveLS, WriteVecMoveLSX,
- WriteVecMoveLSY, WriteVecMoveLSY>;
+ WriteVecMoveLSY, WriteVecMoveLSZ>;
def WriteVecMoveLSNT
: X86SchedWriteMoveLS<WriteVecMove, WriteVecLoadNT, WriteVecStoreNT>;
diff --git a/llvm/lib/Target/X86/X86ScheduleAtom.td b/llvm/lib/Target/X86/X86ScheduleAtom.td
index 0fedfc01092c8..8ae8e574f87a3 100644
--- a/llvm/lib/Target/X86/X86ScheduleAtom.td
+++ b/llvm/lib/Target/X86/X86ScheduleAtom.td
@@ -229,6 +229,7 @@ defm : X86WriteResUnsupported<WriteFMaskedStore64Y>;
def : WriteRes<WriteFMove, [AtomPort01]>;
def : WriteRes<WriteFMoveX, [AtomPort01]>;
defm : X86WriteResUnsupported<WriteFMoveY>;
+defm : X86WriteResUnsupported<WriteFMoveZ>;
defm : X86WriteRes<WriteEMMS, [AtomPort01], 5, [5], 1>;
@@ -382,6 +383,7 @@ defm : X86WriteResUnsupported<WriteVecMaskedStore64Y>;
def : WriteRes<WriteVecMove, [AtomPort0]>;
def : WriteRes<WriteVecMoveX, [AtomPort01]>;
defm : X86WriteResUnsupported<WriteVecMoveY>;
+defm : X86WriteResUnsupported<WriteVecMoveZ>;
defm : X86WriteRes<WriteVecMoveToGpr, [AtomPort0], 3, [3], 1>;
defm : X86WriteRes<WriteVecMoveFromGpr, [AtomPort0], 1, [1], 1>;
diff --git a/llvm/lib/Target/X86/X86ScheduleBdVer2.td b/llvm/lib/Target/X86/X86ScheduleBdVer2.td
index 0f6f24f9f1feb..cb75c3660728d 100644
--- a/llvm/lib/Target/X86/X86ScheduleBdVer2.td
+++ b/llvm/lib/Target/X86/X86ScheduleBdVer2.td
@@ -772,6 +772,7 @@ defm : PdWriteRes<WriteFMaskedStore64Y, [PdStore, PdFPU01, PdFPFMA], 6, [2, 2
defm : PdWriteRes<WriteFMove, [PdFPU01, PdFPFMA]>;
defm : PdWriteRes<WriteFMoveX, [PdFPU01, PdFPFMA], 1, [1, 2]>;
defm : PdWriteRes<WriteFMoveY, [PdFPU01, PdFPFMA], 2, [2, 2], 2>;
+defm : X86WriteResUnsupported<WriteFMoveZ>;
defm : PdWriteRes<WriteEMMS, [PdFPU01, PdFPFMA], 2>;
@@ -1107,6 +1108,7 @@ defm : X86WriteResUnsupported<WriteVecMaskedStore64Y>;
defm : PdWriteRes<WriteVecMove, [PdFPU01, PdFPMAL], 2>;
defm : PdWriteRes<WriteVecMoveX, [PdFPU01, PdFPMAL], 1, [1, 2]>;
defm : PdWriteRes<WriteVecMoveY, [PdFPU01, PdFPMAL], 2, [2, 2], 2>;
+defm : X86WriteResUnsupported<WriteVecMoveZ>;
def PdWriteMOVDQArr : SchedWriteRes<[PdFPU01, PdFPMAL]> {
}
diff --git a/llvm/lib/Target/X86/X86ScheduleBtVer2.td b/llvm/lib/Target/X86/X86ScheduleBtVer2.td
index a070da34cab50..4b2fa87a25b57 100644
--- a/llvm/lib/Target/X86/X86ScheduleBtVer2.td
+++ b/llvm/lib/Target/X86/X86ScheduleBtVer2.td
@@ -525,6 +525,7 @@ defm : X86WriteRes<WriteFMaskedStore64Y, [JFPU0, JFPA, JFPU1, JSTC, JLAGU, JSAGU
defm : X86WriteRes<WriteFMove, [JFPU01, JFPX], 1, [1, 1], 1>;
defm : X86WriteRes<WriteFMoveX, [JFPU01, JFPX], 1, [1, 1], 1>;
defm : X86WriteRes<WriteFMoveY, [JFPU01, JFPX], 1, [2, 2], 2>;
+defm : X86WriteResUnsupported<WriteFMoveZ>;
defm : X86WriteRes<WriteEMMS, [JFPU01, JFPX], 2, [1, 1], 1>;
@@ -682,6 +683,7 @@ defm : X86WriteResUnsupported<WriteVecMaskedStore64Y>;
defm : X86WriteRes<WriteVecMove, [JFPU01, JVALU], 1, [1, 1], 1>;
defm : X86WriteRes<WriteVecMoveX, [JFPU01, JVALU], 1, [1, 1], 1>;
defm : X86WriteRes<WriteVecMoveY, [JFPU01, JVALU], 1, [2, 2], 2>;
+defm : X86WriteResUnsupported<WriteVecMoveZ>;
defm : X86WriteRes<WriteVecMoveToGpr, [JFPU0, JFPA, JALU0], 4, [1, 1, 1], 1>;
defm : X86WriteRes<WriteVecMoveFromGpr, [JFPU01, JFPX], 8, [1, 1], 2>;
diff --git a/llvm/lib/Target/X86/X86ScheduleSLM.td b/llvm/lib/Target/X86/X86ScheduleSLM.td
index 36e5b55a41944..43cf5c9f98a40 100644
--- a/llvm/lib/Target/X86/X86ScheduleSLM.td
+++ b/llvm/lib/Target/X86/X86ScheduleSLM.td
@@ -200,6 +200,7 @@ def : WriteRes<WriteFMaskedStore64Y, [SLM_MEC_RSV]>;
def : WriteRes<WriteFMove, [SLM_FPC_RSV01]>;
def : WriteRes<WriteFMoveX, [SLM_FPC_RSV01]>;
def : WriteRes<WriteFMoveY, [SLM_FPC_RSV01]>;
+defm : X86WriteResUnsupported<WriteFMoveZ>;
defm : X86WriteRes<WriteEMMS, [SLM_FPC_RSV01], 10, [10], 9>;
defm : SLMWriteResPair<WriteFAdd, [SLM_FPC_RSV1], 3>;
@@ -345,6 +346,7 @@ def : WriteRes<WriteVecMaskedStore64Y, [SLM_MEC_RSV]>;
def : WriteRes<WriteVecMove, [SLM_FPC_RSV01]>;
def : WriteRes<WriteVecMoveX, [SLM_FPC_RSV01]>;
def : WriteRes<WriteVecMoveY, [SLM_FPC_RSV01]>;
+defm : X86WriteResUnsupported<WriteVecMoveZ>;
def : WriteRes<WriteVecMoveToGpr, [SLM_IEC_RSV01]>;
def : WriteRes<WriteVecMoveFromGpr, [SLM_IEC_RSV01]>;
diff --git a/llvm/lib/Target/X86/X86ScheduleZnver1.td b/llvm/lib/Target/X86/X86ScheduleZnver1.td
index 4343e1ed45d18..9655ed987733d 100644
--- a/llvm/lib/Target/X86/X86ScheduleZnver1.td
+++ b/llvm/lib/Target/X86/X86ScheduleZnver1.td
@@ -286,6 +286,7 @@ defm : X86WriteRes<WriteFMaskedStore64Y, [ZnAGU,ZnFPU01], 5, [1,2], 2>;
defm : X86WriteRes<WriteFMove, [ZnFPU], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveX, [ZnFPU], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveY, [ZnFPU], 1, [1], 1>;
+defm : X86WriteResUnsupported<WriteFMoveZ>;
defm : ZnWriteResFpuPair<WriteFAdd, [ZnFPU0], 3>;
defm : ZnWriteResFpuPair<WriteFAddX, [ZnFPU0], 3>;
@@ -404,6 +405,7 @@ defm : X86WriteRes<WriteVecMaskedStore64Y, [ZnAGU,ZnFPU01], 5, [1,2], 2>;
defm : X86WriteRes<WriteVecMove, [ZnFPU], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveX, [ZnFPU], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveY, [ZnFPU], 2, [1], 2>;
+defm : X86WriteResUnsupported<WriteVecMoveZ>;
defm : X86WriteRes<WriteVecMoveToGpr, [ZnFPU2], 2, [1], 1>;
defm : X86WriteRes<WriteVecMoveFromGpr, [ZnFPU2], 3, [1], 1>;
defm : X86WriteRes<WriteEMMS, [ZnFPU], 2, [1], 1>;
diff --git a/llvm/lib/Target/X86/X86ScheduleZnver2.td b/llvm/lib/Target/X86/X86ScheduleZnver2.td
index 96d2837880c70..249cbfff5dc62 100644
--- a/llvm/lib/Target/X86/X86ScheduleZnver2.td
+++ b/llvm/lib/Target/X86/X86ScheduleZnver2.td
@@ -274,6 +274,7 @@ defm : X86WriteRes<WriteFStoreNTY, [Zn2AGU], 1, [1], 1>;
defm : X86WriteRes<WriteFMove, [Zn2FPU], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveX, [Zn2FPU], 1, [1], 1>;
defm : X86WriteRes<WriteFMoveY, [Zn2FPU], 1, [1], 1>;
+defm : X86WriteResUnsupported<WriteFMoveZ>;
defm : Zn2WriteResFpuPair<WriteFAdd, [Zn2FPU0], 3>;
defm : Zn2WriteResFpuPair<WriteFAddX, [Zn2FPU0], 3>;
@@ -388,6 +389,7 @@ defm : X86WriteRes<WriteVecMaskedStore64Y, [Zn2AGU,Zn2FPU01], 5, [1,2], 2>;
defm : X86WriteRes<WriteVecMove, [Zn2FPU], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveX, [Zn2FPU], 1, [1], 1>;
defm : X86WriteRes<WriteVecMoveY, [Zn2FPU], 2, [1], 2>;
+defm : X86WriteResUnsupported<WriteVecMoveZ>;
defm : X86WriteRes<WriteVecMoveToGpr, [Zn2FPU2], 2, [1], 1>;
defm : X86WriteRes<WriteVecMoveFromGpr, [Zn2FPU2], 3, [1], 1>;
defm : X86WriteRes<WriteEMMS, [Zn2FPU], 2, [1], 1>;
diff --git a/llvm/lib/Target/X86/X86ScheduleZnver3.td b/llvm/lib/Target/X86/X86ScheduleZnver3.td
index f4e03ac11f0b9..02f7f8376fdb7 100644
--- a/llvm/lib/Target/X86/X86ScheduleZnver3.td
+++ b/llvm/lib/Target/X86/X86ScheduleZnver3.td
@@ -1446,10 +1446,12 @@ defm : Zn3WriteResInt<WriteXCHG, [Zn3ALU0123], 0, [8], 2>; // Compare+Exc
defm : Zn3WriteResXMM<WriteFMove, [Zn3FPVMisc0123], 1, [1], 1>; // Empty sched class
defm : Zn3WriteResXMM<WriteFMoveX, [], 0, [], 1>;
defm : Zn3WriteResYMM<WriteFMoveY, [], 0, [], 1>;
+defm : X86WriteResUnsupported<WriteFMoveZ>;
defm : Zn3WriteResXMM<WriteVecMove, [Zn3FPFMisc0123], 1, [1], 1>; // MMX
defm : Zn3WriteResXMM<WriteVecMoveX, [], 0, [], 1>;
defm : Zn3WriteResYMM<WriteVecMoveY, [], 0, [], 1>;
+defm : X86WriteResUnsupported<WriteVecMoveZ>;
def : IsOptimizableRegisterMove<[
InstructionEquivalenceClass<[
diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512.s
index ebf3dd4eac976..13327794d2b4e 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512.s
@@ -1068,21 +1068,21 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: 1 4 0.50 vminps %zmm16, %zmm17, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 11 0.50 * vminps (%rax), %zmm17, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 11 0.50 * vminps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovapd %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovapd %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovapd (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovapd %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovapd %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovapd %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovapd (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovapd %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovapd %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovapd %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovapd (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovaps %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovaps %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovaps (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovaps %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovaps %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovaps %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovaps (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovaps %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovaps %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovaps %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovaps (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: 1 1 1.00 vmovddup %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovddup (%rax), %zmm19
@@ -1090,37 +1090,37 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: 2 8 0.50 * vmovddup (%rax), %zmm19 {%k1}
# CHECK-NEXT: 1 1 1.00 vmovddup %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovddup (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovdqa32 %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovdqa32 %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovdqa32 (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovdqa32 %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovdqa32 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovdqa32 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovdqa32 (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovdqa32 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovdqa32 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovdqa32 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovdqa32 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovdqa64 %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovdqa64 %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovdqa64 (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovdqa64 %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovdqa64 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovdqa64 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovdqa64 (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovdqa64 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovdqa64 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovdqa64 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovdqa64 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovdqu32 %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovdqu32 %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovdqu32 (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovdqu32 %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovdqu32 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovdqu32 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovdqu32 (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovdqu32 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovdqu32 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovdqu32 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovdqu32 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovdqu64 %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovdqu64 %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovdqu64 (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovdqu64 %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovdqu64 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovdqu64 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovdqu64 (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovdqu64 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovdqu64 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovdqu64 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovdqu64 (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: 1 1 1.00 vmovshdup %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovshdup (%rax), %zmm19
@@ -1134,21 +1134,21 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: 2 8 0.50 * vmovsldup (%rax), %zmm19 {%k1}
# CHECK-NEXT: 1 1 1.00 vmovsldup %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovsldup (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovupd %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovupd %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovupd (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovupd %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovupd %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovupd %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovupd (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovupd %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovupd %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovupd %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovupd (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovups %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovups %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovups (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovups %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovups %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovups %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovups (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovups %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovups %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovups %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovups (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: 1 4 0.50 vmulpd %zmm16, %zmm17, %zmm19
# CHECK-NEXT: 2 11 0.50 * vmulpd (%rax), %zmm17, %zmm19
@@ -1671,7 +1671,7 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
-# CHECK-NEXT: - 612.00 236.67 57.67 278.83 278.83 16.00 555.67 2.00 5.33 - -
+# CHECK-NEXT: - 612.00 240.67 49.67 278.83 278.83 16.00 559.67 2.00 5.33 - -
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -1859,21 +1859,21 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vminps %zmm16, %zmm17, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.50 - 0.50 0.50 - 0.50 - - - - vminps (%rax), %zmm17, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.50 - 0.50 0.50 - 0.50 - - - - vminps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovapd %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovapd %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovapd (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovapd %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovapd %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovapd %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovapd (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovapd %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovapd %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovapd %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovapd (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovaps %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovaps %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovaps (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovaps %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovaps %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovaps %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovaps (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovaps %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovaps %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovaps %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovaps (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovddup %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovddup (%rax), %zmm19
@@ -1881,37 +1881,37 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovddup (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovddup %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovddup (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqa32 %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqa32 %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqa32 (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovdqa32 %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqa32 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqa32 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqa32 (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovdqa32 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqa32 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqa32 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqa32 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqa64 %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqa64 %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqa64 (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovdqa64 %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqa64 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqa64 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqa64 (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovdqa64 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqa64 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqa64 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqa64 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqu32 %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqu32 %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqu32 (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovdqu32 %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqu32 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqu32 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqu32 (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovdqu32 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqu32 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqu32 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqu32 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqu64 %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqu64 %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqu64 (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovdqu64 %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqu64 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqu64 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqu64 (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovdqu64 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqu64 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqu64 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqu64 (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovshdup (%rax), %zmm19
@@ -1925,21 +1925,21 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovsldup (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovsldup (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovupd %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovupd %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovupd (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovupd %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovupd %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovupd %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovupd (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovupd %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovupd %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovupd %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovupd (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovups %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovups %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovups (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovups %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovups %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovups %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovups (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovups %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovups %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovups %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovups (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmulpd %zmm16, %zmm17, %zmm19
# CHECK-NEXT: - - 0.50 - 0.50 0.50 - 0.50 - - - - vmulpd (%rax), %zmm17, %zmm19
diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bw.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bw.s
index d98738fc9352a..9a41974014fff 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bw.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bw.s
@@ -298,21 +298,21 @@ vpmovw2m %zmm0, %k0
# CHECK-NEXT: 1 4 1.00 kshiftrq $2, %k1, %k2
# CHECK-NEXT: 1 4 1.00 kunpckdq %k0, %k1, %k2
# CHECK-NEXT: 1 4 1.00 kunpckwd %k0, %k1, %k2
-# CHECK-NEXT: 1 1 0.33 vmovdqu8 %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovdqu8 %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovdqu8 (%rax), %zmm19
# CHECK-NEXT: 5 2 2.00 * vmovdqu8 %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovdqu8 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovdqu8 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovdqu8 (%rax), %zmm19 {%k1}
# CHECK-NEXT: 5 2 2.00 * vmovdqu8 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovdqu8 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovdqu8 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovdqu8 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovdqu16 %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovdqu16 %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovdqu16 (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovdqu16 %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovdqu16 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovdqu16 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovdqu16 (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovdqu16 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovdqu16 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovdqu16 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovdqu16 (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: 1 1 1.00 vpabsb %zmm16, %zmm19
# CHECK-NEXT: 2 8 1.00 * vpabsb (%rax), %zmm19
@@ -525,7 +525,7 @@ vpmovw2m %zmm0, %k0
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
-# CHECK-NEXT: - - 36.50 13.50 52.50 52.50 6.00 181.50 0.50 2.00 - -
+# CHECK-NEXT: - - 37.50 11.50 52.50 52.50 6.00 182.50 0.50 2.00 - -
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -547,21 +547,21 @@ vpmovw2m %zmm0, %k0
# CHECK-NEXT: - - - - - - - 1.00 - - - - kshiftrq $2, %k1, %k2
# CHECK-NEXT: - - - - - - - 1.00 - - - - kunpckdq %k0, %k1, %k2
# CHECK-NEXT: - - - - - - - 1.00 - - - - kunpckwd %k0, %k1, %k2
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqu8 %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqu8 %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqu8 (%rax), %zmm19
# CHECK-NEXT: - - - 0.50 0.67 0.67 2.00 0.50 - 0.67 - - vmovdqu8 %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqu8 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqu8 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqu8 (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - 0.50 0.67 0.67 2.00 0.50 - 0.67 - - vmovdqu8 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqu8 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqu8 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqu8 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqu16 %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqu16 %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqu16 (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovdqu16 %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqu16 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqu16 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqu16 (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovdqu16 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovdqu16 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vmovdqu16 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovdqu16 (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: - - 1.00 - - - - - - - - - vpabsb %zmm16, %zmm19
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - - - vpabsb (%rax), %zmm19
diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s
index 919129d30f99f..127be91c0deae 100644
--- a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s
+++ b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s
@@ -1068,21 +1068,21 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: 1 4 0.50 vminps %zmm16, %zmm17, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 11 0.50 * vminps (%rax), %zmm17, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 11 0.50 * vminps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovapd %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovapd %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovapd (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovapd %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovapd %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovapd %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovapd (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovapd %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovapd %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovapd %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovapd (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovaps %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovaps %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovaps (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovaps %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovaps %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovaps %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovaps (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovaps %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovaps %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovaps %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovaps (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: 1 1 1.00 vmovddup %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovddup (%rax), %zmm19
@@ -1090,37 +1090,37 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: 2 8 0.50 * vmovddup (%rax), %zmm19 {%k1}
# CHECK-NEXT: 1 1 1.00 vmovddup %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovddup (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovdqa32 %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovdqa32 %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovdqa32 (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovdqa32 %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovdqa32 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovdqa32 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovdqa32 (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovdqa32 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovdqa32 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovdqa32 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovdqa32 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovdqa64 %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovdqa64 %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovdqa64 (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovdqa64 %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovdqa64 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovdqa64 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovdqa64 (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovdqa64 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovdqa64 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovdqa64 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovdqa64 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovdqu32 %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovdqu32 %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovdqu32 (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovdqu32 %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovdqu32 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovdqu32 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovdqu32 (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovdqu32 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovdqu32 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovdqu32 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovdqu32 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovdqu64 %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovdqu64 %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovdqu64 (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovdqu64 %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovdqu64 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovdqu64 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovdqu64 (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovdqu64 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovdqu64 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovdqu64 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovdqu64 (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: 1 1 1.00 vmovshdup %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovshdup (%rax), %zmm19
@@ -1134,21 +1134,21 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: 2 8 0.50 * vmovsldup (%rax), %zmm19 {%k1}
# CHECK-NEXT: 1 1 1.00 vmovsldup %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovsldup (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovupd %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovupd %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovupd (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovupd %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovupd %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovupd %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovupd (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovupd %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovupd %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovupd %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovupd (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovups %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovups %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovups (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovups %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovups %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovups %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovups (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovups %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovups %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovups %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovups (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: 1 4 0.50 vmulpd %zmm16, %zmm17, %zmm19
# CHECK-NEXT: 2 11 0.50 * vmulpd (%rax), %zmm17, %zmm19
@@ -1669,7 +1669,7 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
-# CHECK-NEXT: - 612.00 236.67 57.67 278.83 278.83 16.00 555.67 2.00 5.33
+# CHECK-NEXT: - 612.00 240.67 49.67 278.83 278.83 16.00 559.67 2.00 5.33
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -1857,21 +1857,21 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vminps %zmm16, %zmm17, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.50 - 0.50 0.50 - 0.50 - - vminps (%rax), %zmm17, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.50 - 0.50 0.50 - 0.50 - - vminps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovapd %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovapd %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovapd (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovapd %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovapd %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovapd %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovapd (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovapd %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovapd %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovapd %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovapd (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovaps %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovaps %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovaps (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovaps %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovaps %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovaps %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovaps (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovaps %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovaps %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovaps %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovaps (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: - - - - - - - 1.00 - - vmovddup %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovddup (%rax), %zmm19
@@ -1879,37 +1879,37 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovddup (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - - - - 1.00 - - vmovddup %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovddup (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqa32 %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqa32 %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqa32 (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovdqa32 %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqa32 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqa32 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqa32 (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovdqa32 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqa32 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqa32 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqa32 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqa64 %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqa64 %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqa64 (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovdqa64 %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqa64 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqa64 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqa64 (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovdqa64 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqa64 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqa64 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqa64 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqu32 %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqu32 %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqu32 (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovdqu32 %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqu32 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqu32 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqu32 (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovdqu32 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqu32 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqu32 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqu32 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqu64 %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqu64 %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqu64 (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovdqu64 %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqu64 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqu64 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqu64 (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovdqu64 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqu64 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqu64 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqu64 (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: - - - - - - - 1.00 - - vmovshdup %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovshdup (%rax), %zmm19
@@ -1923,21 +1923,21 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovsldup (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - - - - 1.00 - - vmovsldup %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovsldup (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovupd %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovupd %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovupd (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovupd %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovupd %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovupd %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovupd (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovupd %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovupd %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovupd %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovupd (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovups %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovups %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovups (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovups %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovups %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovups %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovups (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovups %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovups %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovups %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovups (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmulpd %zmm16, %zmm17, %zmm19
# CHECK-NEXT: - - 0.50 - 0.50 0.50 - 0.50 - - vmulpd (%rax), %zmm17, %zmm19
diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bw.s b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bw.s
index 9e4d4cd654f77..a7899881a1353 100644
--- a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bw.s
+++ b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bw.s
@@ -298,21 +298,21 @@ vpmovw2m %zmm0, %k0
# CHECK-NEXT: 1 4 1.00 kshiftrq $2, %k1, %k2
# CHECK-NEXT: 1 4 1.00 kunpckdq %k0, %k1, %k2
# CHECK-NEXT: 1 4 1.00 kunpckwd %k0, %k1, %k2
-# CHECK-NEXT: 1 1 0.33 vmovdqu8 %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovdqu8 %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovdqu8 (%rax), %zmm19
# CHECK-NEXT: 5 2 2.00 * vmovdqu8 %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovdqu8 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovdqu8 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovdqu8 (%rax), %zmm19 {%k1}
# CHECK-NEXT: 5 2 2.00 * vmovdqu8 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovdqu8 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovdqu8 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovdqu8 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 0.33 vmovdqu16 %zmm16, %zmm19
+# CHECK-NEXT: 1 1 0.50 vmovdqu16 %zmm16, %zmm19
# CHECK-NEXT: 2 8 0.50 * vmovdqu16 (%rax), %zmm19
# CHECK-NEXT: 2 1 1.00 * vmovdqu16 %zmm16, (%rax)
-# CHECK-NEXT: 1 1 0.33 vmovdqu16 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovdqu16 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovdqu16 (%rax), %zmm19 {%k1}
# CHECK-NEXT: 2 1 1.00 * vmovdqu16 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: 1 1 0.33 vmovdqu16 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovdqu16 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovdqu16 (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: 1 1 1.00 vpabsb %zmm16, %zmm19
# CHECK-NEXT: 2 8 1.00 * vpabsb (%rax), %zmm19
@@ -523,7 +523,7 @@ vpmovw2m %zmm0, %k0
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
-# CHECK-NEXT: - - 36.50 13.50 52.50 52.50 6.00 181.50 0.50 2.00
+# CHECK-NEXT: - - 37.50 11.50 52.50 52.50 6.00 182.50 0.50 2.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -545,21 +545,21 @@ vpmovw2m %zmm0, %k0
# CHECK-NEXT: - - - - - - - 1.00 - - kshiftrq $2, %k1, %k2
# CHECK-NEXT: - - - - - - - 1.00 - - kunpckdq %k0, %k1, %k2
# CHECK-NEXT: - - - - - - - 1.00 - - kunpckwd %k0, %k1, %k2
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqu8 %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqu8 %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqu8 (%rax), %zmm19
# CHECK-NEXT: - - - 0.50 0.67 0.67 2.00 0.50 - 0.67 vmovdqu8 %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqu8 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqu8 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqu8 (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - 0.50 0.67 0.67 2.00 0.50 - 0.67 vmovdqu8 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqu8 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqu8 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqu8 (%rax), %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqu16 %zmm16, %zmm19
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqu16 %zmm16, %zmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqu16 (%rax), %zmm19
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovdqu16 %zmm16, (%rax)
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqu16 %zmm16, %zmm19 {%k1}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqu16 %zmm16, %zmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqu16 (%rax), %zmm19 {%k1}
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmovdqu16 %zmm16, (%rax) {%k1}
-# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vmovdqu16 %zmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT: - - 0.50 - - - - 0.50 - - vmovdqu16 %zmm16, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmovdqu16 (%rax), %zmm19 {%k1} {z}
# CHECK-NEXT: - - 1.00 - - - - - - - vpabsb %zmm16, %zmm19
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - vpabsb (%rax), %zmm19
More information about the llvm-commits
mailing list