[llvm] 67cce1c - [X86] Adjust some IceLake fp shuffle schedule classes (PR48110)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Sun Dec 19 05:00:27 PST 2021
Author: Simon Pilgrim
Date: 2021-12-19T13:00:11Z
New Revision: 67cce1ceee2d15a570535aabed0aef2bd1314be3
URL: https://github.com/llvm/llvm-project/commit/67cce1ceee2d15a570535aabed0aef2bd1314be3
DIFF: https://github.com/llvm/llvm-project/commit/67cce1ceee2d15a570535aabed0aef2bd1314be3.diff
LOG: [X86] Adjust some IceLake fp shuffle schedule classes (PR48110)
The IceLake scheduler model is still mainly a copy of the SkylakeServer model.
This patch adjusts the fp shuffle classes to account for most instructions now working on Port 1 as well as Port 5.
This is based off Agner + uops.info as well as the PR48110 report.
Differential Revision: https://reviews.llvm.org/D115752
Added:
Modified:
llvm/lib/Target/X86/X86SchedIceLake.td
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse1.s
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse2.s
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse3.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86SchedIceLake.td b/llvm/lib/Target/X86/X86SchedIceLake.td
index 35723399100a4..789de9eb57517 100644
--- a/llvm/lib/Target/X86/X86SchedIceLake.td
+++ b/llvm/lib/Target/X86/X86SchedIceLake.td
@@ -331,12 +331,12 @@ defm : ICXWriteResPair<WriteFLogicZ, [ICXPort05], 1, [1], 1, 7>;
defm : ICXWriteResPair<WriteFTest, [ICXPort0], 2, [1], 1, 6>; // Floating point TEST instructions.
defm : ICXWriteResPair<WriteFTestY, [ICXPort0], 2, [1], 1, 7>;
defm : ICXWriteResPair<WriteFTestZ, [ICXPort0], 2, [1], 1, 7>;
-defm : ICXWriteResPair<WriteFShuffle, [ICXPort5], 1, [1], 1, 6>; // Floating point vector shuffles.
-defm : ICXWriteResPair<WriteFShuffleY, [ICXPort5], 1, [1], 1, 7>;
-defm : ICXWriteResPair<WriteFShuffleZ, [ICXPort5], 1, [1], 1, 7>;
-defm : ICXWriteResPair<WriteFVarShuffle, [ICXPort5], 1, [1], 1, 6>; // Floating point vector variable shuffles.
-defm : ICXWriteResPair<WriteFVarShuffleY, [ICXPort5], 1, [1], 1, 7>;
-defm : ICXWriteResPair<WriteFVarShuffleZ, [ICXPort5], 1, [1], 1, 7>;
+defm : ICXWriteResPair<WriteFShuffle, [ICXPort15], 1, [1], 1, 6>; // Floating point vector shuffles.
+defm : ICXWriteResPair<WriteFShuffleY, [ICXPort15], 1, [1], 1, 7>;
+defm : ICXWriteResPair<WriteFShuffleZ, [ICXPort5], 1, [1], 1, 7>;
+defm : ICXWriteResPair<WriteFVarShuffle, [ICXPort15], 1, [1], 1, 6>; // Floating point vector variable shuffles.
+defm : ICXWriteResPair<WriteFVarShuffleY, [ICXPort15], 1, [1], 1, 7>;
+defm : ICXWriteResPair<WriteFVarShuffleZ, [ICXPort5], 1, [1], 1, 7>;
defm : ICXWriteResPair<WriteFBlend, [ICXPort015], 1, [1], 1, 6>; // Floating point vector blends.
defm : ICXWriteResPair<WriteFBlendY,[ICXPort015], 1, [1], 1, 7>;
defm : ICXWriteResPair<WriteFBlendZ,[ICXPort015], 1, [1], 1, 7>;
@@ -665,8 +665,14 @@ def: InstRW<[ICXWriteResGroup3], (instregex "COM(P?)_FST0r",
"KMOV(B|D|Q|W)kr",
"UCOM_F(P?)r",
"VPBROADCAST(D|Q)rr",
+ "(V?)INSERTPS(Z?)rr",
+ "(V?)MOV(HL|LH)PS(Z?)rr",
+ "(V?)MOVDDUP(Y|Z|Z128|Z256)?rr",
"(V?)PALIGNR(Y|Z|Z128|Z256)?rri",
- "(V?)PACK(U|S)S(DW|WB)(Y|Z|Z128|Z256)?rr")>;
+ "(V?)PERMIL(PD|PS)(Y|Z|Z128|Z256)?ri",
+ "(V?)PERMIL(PD|PS)(Y|Z|Z128|Z256)?rr",
+ "(V?)PACK(U|S)S(DW|WB)(Y|Z|Z128|Z256)?rr",
+ "(V?)UNPCK(L|H)(PD|PS)(Y|Z|Z128|Z256)?rr")>;
def ICXWriteResGroup4 : SchedWriteRes<[ICXPort6]> {
let Latency = 1;
@@ -705,6 +711,7 @@ def: InstRW<[ICXWriteResGroup9], (instregex "VBLENDMPD(Z128|Z256)rr",
"VBLENDMPS(Z128|Z256)rr",
"VPADD(B|D|Q|W)(Y|Z|Z128|Z256)rr",
"(V?)PADD(B|D|Q|W)rr",
+ "(V?)MOV(SD|SS)(Z?)rr",
"VPBLENDD(Y?)rri",
"VPBLENDMB(Z128|Z256)rr",
"VPBLENDMD(Z128|Z256)rr",
@@ -1298,11 +1305,14 @@ def ICXWriteResGroup92 : SchedWriteRes<[ICXPort5,ICXPort23]> {
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
-def: InstRW<[ICXWriteResGroup92], (instregex "VMOVSDZrm(b?)",
- "VMOVSSZrm(b?)",
+def: InstRW<[ICXWriteResGroup92], (instregex "VMOV(SD|SS)Zrm(b?)",
"VPBROADCAST(B|W)(Z128)?rm",
+ "(V?)INSERTPS(Z?)rm",
"(V?)PALIGNR(Z128)?rmi",
- "(V?)PACK(U|S)S(DW|WB)(Z128)?rm")>;
+ "(V?)PERMIL(PD|PS)(Z128)?m(b?)i",
+ "(V?)PERMIL(PD|PS)(Z128)?rm",
+ "(V?)PACK(U|S)S(DW|WB)(Z128)?rm",
+ "(V?)UNPCK(L|H)(PD|PS)(Z128)?rm")>;
def ICXWriteResGroup93 : SchedWriteRes<[ICXPort5,ICXPort015]> {
let Latency = 7;
@@ -1542,7 +1552,10 @@ def: InstRW<[ICXWriteResGroup119], (instregex "FCOM(P?)(32|64)m",
"VPBROADCASTB(Z|Z256)rm(b?)",
"VPBROADCASTW(Z|Z256)rm(b?)",
"(V?)PALIGNR(Y|Z|Z256)rmi",
- "(V?)PACK(U|S)S(DW|WB)(Y|Z|Z256)rm")>;
+ "(V?)PERMIL(PD|PS)(Y|Z|Z256)m(b?)i",
+ "(V?)PERMIL(PD|PS)(Y|Z|Z256)rm",
+ "(V?)PACK(U|S)S(DW|WB)(Y|Z|Z256)rm",
+ "(V?)UNPCK(L|H)(PD|PS)(Y|Z|Z256)rm")>;
def: InstRW<[ICXWriteResGroup119], (instrs VPBROADCASTBYrm,
VPBROADCASTWYrm,
VPMOVSXBDYrm,
diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s
index 1c0ec56d4cec5..26966616068e6 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s
@@ -1311,18 +1311,18 @@ vzeroupper
# CHECK-NEXT: 1 5 0.50 * vmovq (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 vmovq %xmm0, %rcx
# CHECK-NEXT: 2 1 1.00 * vmovq %xmm0, (%rax)
-# CHECK-NEXT: 1 1 1.00 vmovsd %xmm0, %xmm1, %xmm2
+# CHECK-NEXT: 1 1 0.33 vmovsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 1 1.00 * vmovsd %xmm0, (%rax)
# CHECK-NEXT: 1 5 0.50 * vmovsd (%rax), %xmm2
-# CHECK-NEXT: 1 1 1.00 vmovshdup %xmm0, %xmm2
+# CHECK-NEXT: 1 1 0.50 vmovshdup %xmm0, %xmm2
# CHECK-NEXT: 1 6 0.50 * vmovshdup (%rax), %xmm2
-# CHECK-NEXT: 1 1 1.00 vmovshdup %ymm0, %ymm2
+# CHECK-NEXT: 1 1 0.50 vmovshdup %ymm0, %ymm2
# CHECK-NEXT: 1 7 0.50 * vmovshdup (%rax), %ymm2
-# CHECK-NEXT: 1 1 1.00 vmovsldup %xmm0, %xmm2
+# CHECK-NEXT: 1 1 0.50 vmovsldup %xmm0, %xmm2
# CHECK-NEXT: 1 6 0.50 * vmovsldup (%rax), %xmm2
-# CHECK-NEXT: 1 1 1.00 vmovsldup %ymm0, %ymm2
+# CHECK-NEXT: 1 1 0.50 vmovsldup %ymm0, %ymm2
# CHECK-NEXT: 1 7 0.50 * vmovsldup (%rax), %ymm2
-# CHECK-NEXT: 1 1 1.00 vmovss %xmm0, %xmm1, %xmm2
+# CHECK-NEXT: 1 1 0.33 vmovss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 1 1.00 * vmovss %xmm0, (%rax)
# CHECK-NEXT: 1 5 0.50 * vmovss (%rax), %xmm2
# CHECK-NEXT: 1 1 0.33 vmovupd %xmm0, %xmm2
@@ -1650,14 +1650,14 @@ vzeroupper
# CHECK-NEXT: 2 11 1.00 * vrsqrtps (%rax), %ymm2
# CHECK-NEXT: 1 4 1.00 vrsqrtss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vrsqrtss (%rax), %xmm1, %xmm2
-# CHECK-NEXT: 1 1 1.00 vshufpd $1, %xmm0, %xmm1, %xmm2
-# CHECK-NEXT: 2 7 1.00 * vshufpd $1, (%rax), %xmm1, %xmm2
-# CHECK-NEXT: 1 1 1.00 vshufpd $1, %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 2 8 1.00 * vshufpd $1, (%rax), %ymm1, %ymm2
-# CHECK-NEXT: 1 1 1.00 vshufps $1, %xmm0, %xmm1, %xmm2
-# CHECK-NEXT: 2 7 1.00 * vshufps $1, (%rax), %xmm1, %xmm2
-# CHECK-NEXT: 1 1 1.00 vshufps $1, %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 2 8 1.00 * vshufps $1, (%rax), %ymm1, %ymm2
+# CHECK-NEXT: 1 1 0.50 vshufpd $1, %xmm0, %xmm1, %xmm2
+# CHECK-NEXT: 2 7 0.50 * vshufpd $1, (%rax), %xmm1, %xmm2
+# CHECK-NEXT: 1 1 0.50 vshufpd $1, %ymm0, %ymm1, %ymm2
+# CHECK-NEXT: 2 8 0.50 * vshufpd $1, (%rax), %ymm1, %ymm2
+# CHECK-NEXT: 1 1 0.50 vshufps $1, %xmm0, %xmm1, %xmm2
+# CHECK-NEXT: 2 7 0.50 * vshufps $1, (%rax), %xmm1, %xmm2
+# CHECK-NEXT: 1 1 0.50 vshufps $1, %ymm0, %ymm1, %ymm2
+# CHECK-NEXT: 2 8 0.50 * vshufps $1, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 18 6.00 vsqrtpd %xmm0, %xmm2
# CHECK-NEXT: 2 24 6.00 * vsqrtpd (%rax), %xmm2
# CHECK-NEXT: 1 18 12.00 vsqrtpd %ymm0, %ymm2
@@ -1738,7 +1738,7 @@ vzeroupper
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
-# CHECK-NEXT: - 123.00 317.42 221.42 173.17 173.17 34.00 312.92 6.25 12.67 - -
+# CHECK-NEXT: - 123.00 318.08 228.08 173.17 173.17 34.00 305.58 6.25 12.67 - -
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -2023,18 +2023,18 @@ vzeroupper
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovq (%rax), %xmm2
# CHECK-NEXT: - - 1.00 - - - - - - - - - vmovq %xmm0, %rcx
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovq %xmm0, (%rax)
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsd %xmm0, %xmm1, %xmm2
+# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovsd %xmm0, (%rax)
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovsd (%rax), %xmm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %xmm0, %xmm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %xmm0, %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovshdup (%rax), %xmm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %ymm0, %ymm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %ymm0, %ymm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovshdup (%rax), %ymm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %xmm0, %xmm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %xmm0, %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovsldup (%rax), %xmm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %ymm0, %ymm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %ymm0, %ymm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovsldup (%rax), %ymm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovss %xmm0, %xmm1, %xmm2
+# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovss %xmm0, (%rax)
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovss (%rax), %xmm2
# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovupd %xmm0, %xmm2
@@ -2362,14 +2362,14 @@ vzeroupper
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - - - vrsqrtps (%rax), %ymm2
# CHECK-NEXT: - - 1.00 - - - - - - - - - vrsqrtss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - - - vrsqrtss (%rax), %xmm1, %xmm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vshufpd $1, %xmm0, %xmm1, %xmm2
-# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vshufpd $1, (%rax), %xmm1, %xmm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vshufpd $1, %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vshufpd $1, (%rax), %ymm1, %ymm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vshufps $1, %xmm0, %xmm1, %xmm2
-# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vshufps $1, (%rax), %xmm1, %xmm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vshufps $1, %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vshufps $1, (%rax), %ymm1, %ymm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vshufpd $1, %xmm0, %xmm1, %xmm2
+# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - vshufpd $1, (%rax), %xmm1, %xmm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vshufpd $1, %ymm0, %ymm1, %ymm2
+# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - vshufpd $1, (%rax), %ymm1, %ymm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vshufps $1, %xmm0, %xmm1, %xmm2
+# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - vshufps $1, (%rax), %xmm1, %xmm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vshufps $1, %ymm0, %ymm1, %ymm2
+# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - vshufps $1, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - 6.00 1.00 - - - - - - - - - vsqrtpd %xmm0, %xmm2
# CHECK-NEXT: - 6.00 1.00 - 0.50 0.50 - - - - - - vsqrtpd (%rax), %xmm2
# CHECK-NEXT: - 12.00 1.00 - - - - - - - - - vsqrtpd %ymm0, %ymm2
diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s
index a3ecb251ef4c7..796a716f1fa19 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s
@@ -1529,29 +1529,29 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
# CHECK-NEXT: 2 8 0.50 * vmovddup (%rax), %ymm19 {%k1}
# CHECK-NEXT: 1 1 1.00 vmovddup %ymm16, %ymm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovddup (%rax), %ymm19 {%k1} {z}
-# CHECK-NEXT: 1 1 1.00 vmovshdup %xmm16, %xmm19
+# CHECK-NEXT: 1 1 0.50 vmovshdup %xmm16, %xmm19
# CHECK-NEXT: 2 7 0.50 * vmovshdup (%rax), %xmm19
-# CHECK-NEXT: 1 1 1.00 vmovshdup %xmm16, %xmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovshdup %xmm16, %xmm19 {%k1}
# CHECK-NEXT: 2 7 0.50 * vmovshdup (%rax), %xmm19 {%k1}
-# CHECK-NEXT: 1 1 1.00 vmovshdup %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovshdup %xmm16, %xmm19 {%k1} {z}
# CHECK-NEXT: 2 7 0.50 * vmovshdup (%rax), %xmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 1.00 vmovshdup %ymm16, %ymm19
+# CHECK-NEXT: 1 1 0.50 vmovshdup %ymm16, %ymm19
# CHECK-NEXT: 2 8 0.50 * vmovshdup (%rax), %ymm19
-# CHECK-NEXT: 1 1 1.00 vmovshdup %ymm16, %ymm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovshdup %ymm16, %ymm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovshdup (%rax), %ymm19 {%k1}
-# CHECK-NEXT: 1 1 1.00 vmovshdup %ymm16, %ymm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovshdup %ymm16, %ymm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovshdup (%rax), %ymm19 {%k1} {z}
-# CHECK-NEXT: 1 1 1.00 vmovsldup %xmm16, %xmm19
+# CHECK-NEXT: 1 1 0.50 vmovsldup %xmm16, %xmm19
# CHECK-NEXT: 2 7 0.50 * vmovsldup (%rax), %xmm19
-# CHECK-NEXT: 1 1 1.00 vmovsldup %xmm16, %xmm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovsldup %xmm16, %xmm19 {%k1}
# CHECK-NEXT: 2 7 0.50 * vmovsldup (%rax), %xmm19 {%k1}
-# CHECK-NEXT: 1 1 1.00 vmovsldup %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovsldup %xmm16, %xmm19 {%k1} {z}
# CHECK-NEXT: 2 7 0.50 * vmovsldup (%rax), %xmm19 {%k1} {z}
-# CHECK-NEXT: 1 1 1.00 vmovsldup %ymm16, %ymm19
+# CHECK-NEXT: 1 1 0.50 vmovsldup %ymm16, %ymm19
# CHECK-NEXT: 2 8 0.50 * vmovsldup (%rax), %ymm19
-# CHECK-NEXT: 1 1 1.00 vmovsldup %ymm16, %ymm19 {%k1}
+# CHECK-NEXT: 1 1 0.50 vmovsldup %ymm16, %ymm19 {%k1}
# CHECK-NEXT: 2 8 0.50 * vmovsldup (%rax), %ymm19 {%k1}
-# CHECK-NEXT: 1 1 1.00 vmovsldup %ymm16, %ymm19 {%k1} {z}
+# CHECK-NEXT: 1 1 0.50 vmovsldup %ymm16, %ymm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vmovsldup (%rax), %ymm19 {%k1} {z}
# CHECK-NEXT: 1 4 0.50 vmulpd %xmm16, %xmm17, %xmm19
# CHECK-NEXT: 2 10 0.50 * vmulpd (%rax), %xmm17, %xmm19
@@ -2352,7 +2352,7 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
-# CHECK-NEXT: - 423.00 257.33 226.33 372.50 372.50 - 658.33 4.00 - - -
+# CHECK-NEXT: - 423.00 257.33 232.33 372.50 372.50 - 652.33 4.00 - - -
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -2640,29 +2640,29 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovddup (%rax), %ymm19 {%k1}
# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovddup %ymm16, %ymm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovddup (%rax), %ymm19 {%k1} {z}
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %xmm16, %xmm19
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %xmm16, %xmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovshdup (%rax), %xmm19
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %xmm16, %xmm19 {%k1}
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %xmm16, %xmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovshdup (%rax), %xmm19 {%k1}
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %xmm16, %xmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovshdup (%rax), %xmm19 {%k1} {z}
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %ymm16, %ymm19
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %ymm16, %ymm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovshdup (%rax), %ymm19
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %ymm16, %ymm19 {%k1}
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %ymm16, %ymm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovshdup (%rax), %ymm19 {%k1}
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %ymm16, %ymm19 {%k1} {z}
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %ymm16, %ymm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovshdup (%rax), %ymm19 {%k1} {z}
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %xmm16, %xmm19
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %xmm16, %xmm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovsldup (%rax), %xmm19
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %xmm16, %xmm19 {%k1}
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %xmm16, %xmm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovsldup (%rax), %xmm19 {%k1}
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %xmm16, %xmm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovsldup (%rax), %xmm19 {%k1} {z}
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %ymm16, %ymm19
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %ymm16, %ymm19
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovsldup (%rax), %ymm19
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %ymm16, %ymm19 {%k1}
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %ymm16, %ymm19 {%k1}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovsldup (%rax), %ymm19 {%k1}
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %ymm16, %ymm19 {%k1} {z}
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %ymm16, %ymm19 {%k1} {z}
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovsldup (%rax), %ymm19 {%k1} {z}
# CHECK-NEXT: - - 0.50 0.50 - - - - - - - - vmulpd %xmm16, %xmm17, %xmm19
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - - - vmulpd (%rax), %xmm17, %xmm19
diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse1.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse1.s
index b37b3cb2ad6ee..2168b030b0c7c 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse1.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse1.s
@@ -252,7 +252,7 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 movmskps %xmm0, %ecx
# CHECK-NEXT: 2 1 1.00 * movntps %xmm0, (%rax)
# CHECK-NEXT: 2 1 1.00 * * U movntq %mm0, (%rax)
-# CHECK-NEXT: 1 1 1.00 movss %xmm0, %xmm2
+# CHECK-NEXT: 1 1 0.33 movss %xmm0, %xmm2
# CHECK-NEXT: 2 1 1.00 * movss %xmm0, (%rax)
# CHECK-NEXT: 1 5 0.50 * movss (%rax), %xmm2
# CHECK-NEXT: 1 1 0.33 movups %xmm0, %xmm2
@@ -299,8 +299,8 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 1 4 1.00 rsqrtss %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * rsqrtss (%rax), %xmm2
# CHECK-NEXT: 2 2 0.33 * * U sfence
-# CHECK-NEXT: 1 1 1.00 shufps $1, %xmm0, %xmm2
-# CHECK-NEXT: 2 7 1.00 * shufps $1, (%rax), %xmm2
+# CHECK-NEXT: 1 1 0.50 shufps $1, %xmm0, %xmm2
+# CHECK-NEXT: 2 7 0.50 * shufps $1, (%rax), %xmm2
# CHECK-NEXT: 1 12 3.00 sqrtps %xmm0, %xmm2
# CHECK-NEXT: 2 18 3.00 * sqrtps (%rax), %xmm2
# CHECK-NEXT: 1 12 3.00 sqrtss %xmm0, %xmm2
@@ -335,7 +335,7 @@ xorps (%rax), %xmm2
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
-# CHECK-NEXT: - 26.00 65.83 25.83 32.00 32.00 8.00 37.83 0.50 3.00 - -
+# CHECK-NEXT: - 26.00 66.17 27.17 32.00 32.00 8.00 36.17 0.50 3.00 - -
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -397,7 +397,7 @@ xorps (%rax), %xmm2
# CHECK-NEXT: - - 1.00 - - - - - - - - - movmskps %xmm0, %ecx
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - movntps %xmm0, (%rax)
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - movntq %mm0, (%rax)
-# CHECK-NEXT: - - - - - - - 1.00 - - - - movss %xmm0, %xmm2
+# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - movss %xmm0, %xmm2
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - movss %xmm0, (%rax)
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - movss (%rax), %xmm2
# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - movups %xmm0, %xmm2
@@ -444,8 +444,8 @@ xorps (%rax), %xmm2
# CHECK-NEXT: - - 1.00 - - - - - - - - - rsqrtss %xmm0, %xmm2
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - - - rsqrtss (%rax), %xmm2
# CHECK-NEXT: - - 0.25 0.25 0.33 0.33 - 0.25 0.25 0.33 - - sfence
-# CHECK-NEXT: - - - - - - - 1.00 - - - - shufps $1, %xmm0, %xmm2
-# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - shufps $1, (%rax), %xmm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - shufps $1, %xmm0, %xmm2
+# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - shufps $1, (%rax), %xmm2
# CHECK-NEXT: - 3.00 1.00 - - - - - - - - - sqrtps %xmm0, %xmm2
# CHECK-NEXT: - 3.00 1.00 - 0.50 0.50 - - - - - - sqrtps (%rax), %xmm2
# CHECK-NEXT: - 3.00 1.00 - - - - - - - - - sqrtss %xmm0, %xmm2
diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse2.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse2.s
index a198b7c22cb07..5a8065d81da6f 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse2.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse2.s
@@ -504,7 +504,7 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 movq %xmm0, %rcx
# CHECK-NEXT: 2 1 1.00 * movq %xmm0, (%rax)
# CHECK-NEXT: 2 2 2.00 movq2dq %mm0, %xmm2
-# CHECK-NEXT: 1 1 1.00 movsd %xmm0, %xmm2
+# CHECK-NEXT: 1 1 0.33 movsd %xmm0, %xmm2
# CHECK-NEXT: 2 1 1.00 * movsd %xmm0, (%rax)
# CHECK-NEXT: 1 5 0.50 * movsd (%rax), %xmm2
# CHECK-NEXT: 1 1 0.33 movupd %xmm0, %xmm2
@@ -656,8 +656,8 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 2 7 0.50 * punpcklwd (%rax), %xmm2
# CHECK-NEXT: 1 1 0.33 pxor %xmm0, %xmm2
# CHECK-NEXT: 2 7 0.50 * pxor (%rax), %xmm2
-# CHECK-NEXT: 1 1 1.00 shufpd $1, %xmm0, %xmm2
-# CHECK-NEXT: 2 7 1.00 * shufpd $1, (%rax), %xmm2
+# CHECK-NEXT: 1 1 0.50 shufpd $1, %xmm0, %xmm2
+# CHECK-NEXT: 2 7 0.50 * shufpd $1, (%rax), %xmm2
# CHECK-NEXT: 1 18 6.00 sqrtpd %xmm0, %xmm2
# CHECK-NEXT: 2 24 6.00 * sqrtpd (%rax), %xmm2
# CHECK-NEXT: 1 18 6.00 sqrtsd %xmm0, %xmm2
@@ -691,7 +691,7 @@ xorpd (%rax), %xmm2
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
-# CHECK-NEXT: - 38.00 103.58 94.58 63.50 63.50 14.00 85.58 2.25 5.00 - -
+# CHECK-NEXT: - 38.00 103.92 95.92 63.50 63.50 14.00 83.92 2.25 5.00 - -
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -792,7 +792,7 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: - - 1.00 - - - - - - - - - movq %xmm0, %rcx
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - movq %xmm0, (%rax)
# CHECK-NEXT: - - - - - - - 2.00 - - - - movq2dq %mm0, %xmm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - movsd %xmm0, %xmm2
+# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - movsd %xmm0, %xmm2
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - movsd %xmm0, (%rax)
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - movsd (%rax), %xmm2
# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - movupd %xmm0, %xmm2
@@ -944,8 +944,8 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - punpcklwd (%rax), %xmm2
# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - pxor %xmm0, %xmm2
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - pxor (%rax), %xmm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - shufpd $1, %xmm0, %xmm2
-# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - shufpd $1, (%rax), %xmm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - shufpd $1, %xmm0, %xmm2
+# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - shufpd $1, (%rax), %xmm2
# CHECK-NEXT: - 6.00 1.00 - - - - - - - - - sqrtpd %xmm0, %xmm2
# CHECK-NEXT: - 6.00 1.00 - 0.50 0.50 - - - - - - sqrtpd (%rax), %xmm2
# CHECK-NEXT: - 6.00 1.00 - - - - - - - - - sqrtsd %xmm0, %xmm2
diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse3.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse3.s
index cb0cc8cf95f62..e09b9e0f757b3 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse3.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse3.s
@@ -59,9 +59,9 @@ mwait
# CHECK-NEXT: 1 100 0.25 U monitor
# CHECK-NEXT: 1 1 1.00 movddup %xmm0, %xmm2
# CHECK-NEXT: 1 5 0.50 * movddup (%rax), %xmm2
-# CHECK-NEXT: 1 1 1.00 movshdup %xmm0, %xmm2
+# CHECK-NEXT: 1 1 0.50 movshdup %xmm0, %xmm2
# CHECK-NEXT: 1 6 0.50 * movshdup (%rax), %xmm2
-# CHECK-NEXT: 1 1 1.00 movsldup %xmm0, %xmm2
+# CHECK-NEXT: 1 1 0.50 movsldup %xmm0, %xmm2
# CHECK-NEXT: 1 6 0.50 * movsldup (%rax), %xmm2
# CHECK-NEXT: 10 20 2.50 * * U mwait
@@ -81,7 +81,7 @@ mwait
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
-# CHECK-NEXT: - - 6.67 6.67 5.00 5.00 - 24.67 4.00 - - -
+# CHECK-NEXT: - - 6.67 7.67 5.00 5.00 - 23.67 4.00 - - -
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -101,8 +101,8 @@ mwait
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - - - monitor
# CHECK-NEXT: - - - - - - - 1.00 - - - - movddup %xmm0, %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - movddup (%rax), %xmm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - movshdup %xmm0, %xmm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - movshdup %xmm0, %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - movshdup (%rax), %xmm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - movsldup %xmm0, %xmm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - movsldup %xmm0, %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - movsldup (%rax), %xmm2
# CHECK-NEXT: - - 1.75 1.75 - - - 2.75 3.75 - - - mwait
More information about the llvm-commits
mailing list