[llvm] 888ef0f - [X86] Fix pipe resources for INT (V)PEXTR* instructions
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 5 02:36:45 PDT 2024
Author: Simon Pilgrim
Date: 2024-08-05T10:36:28+01:00
New Revision: 888ef0f0fc2a01bf56002060b9b55b61b4e3a5b7
URL: https://github.com/llvm/llvm-project/commit/888ef0f0fc2a01bf56002060b9b55b61b4e3a5b7
DIFF: https://github.com/llvm/llvm-project/commit/888ef0f0fc2a01bf56002060b9b55b61b4e3a5b7.diff
LOG: [X86] Fix pipe resources for INT (V)PEXTR* instructions
IceLakeServer can use ICXPort15 for (V)PEXTR* (but only ICXPort5 for (V)EXTRACTPS)
Confirmed with uops.info + Agner
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-avx512bw.s
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512dq.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-sse41.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86SchedIceLake.td b/llvm/lib/Target/X86/X86SchedIceLake.td
index 186d4d84c2510..fd372ba4656eb 100644
--- a/llvm/lib/Target/X86/X86SchedIceLake.td
+++ b/llvm/lib/Target/X86/X86SchedIceLake.td
@@ -440,11 +440,11 @@ def : WriteRes<WriteVecInsertLd, [ICXPort5,ICXPort23]> {
}
def: InstRW<[WriteVecInsertLd], (instregex "(V?)MOV(H|L)(PD|PS)rm")>;
-def : WriteRes<WriteVecExtract, [ICXPort0,ICXPort5]> {
+def : WriteRes<WriteVecExtract, [ICXPort0,ICXPort15]> {
let Latency = 3;
let NumMicroOps = 2;
}
-def : WriteRes<WriteVecExtractSt, [ICXPort49,ICXPort5,ICXPort78]> {
+def : WriteRes<WriteVecExtractSt, [ICXPort49,ICXPort15,ICXPort78]> {
let Latency = 2;
let NumMicroOps = 3;
}
@@ -879,6 +879,13 @@ def ICXWriteResGroup34 : SchedWriteRes<[ICXPort0,ICXPort0156]> {
}
def: InstRW<[ICXWriteResGroup34], (instrs FNSTSW16r)>;
+def ICXWriteResGroup36 : SchedWriteRes<[ICXPort0,ICXPort5]> {
+ let Latency = 3;
+ let NumMicroOps = 2;
+ let ReleaseAtCycles = [1,1];
+}
+def: InstRW<[ICXWriteResGroup36], (instregex "(V?)EXTRACTPS(Z?)rr")>;
+
def ICXWriteResGroup37 : SchedWriteRes<[ICXPort0,ICXPort5]> {
let Latency = 3;
let NumMicroOps = 3;
@@ -1022,6 +1029,13 @@ def: InstRW<[ICXWriteResGroup51], (instregex "VEXPANDPD(Z|Z128|Z256)rr",
"VPMOVUSWB(Z|Z128|Z256)rr",
"VPMOVWB(Z|Z128|Z256)rr")>;
+def ICXWriteResGroup53 : SchedWriteRes<[ICXPort49,ICXPort5,ICXPort78]> {
+ let Latency = 2;
+ let NumMicroOps = 3;
+ let ReleaseAtCycles = [1,1,1];
+}
+def: InstRW<[ICXWriteResGroup53], (instregex "(V?)EXTRACTPS(Z?)mr")>;
+
def ICXWriteResGroup54 : SchedWriteRes<[ICXPort49,ICXPort5,ICXPort78]> {
let Latency = 4;
let NumMicroOps = 3;
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 7150a586fe6fd..8fdd65604ca39 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s
@@ -1448,13 +1448,13 @@ vzeroupper
# CHECK-NEXT: 1 1 1.00 vpermilps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax), %ymm1, %ymm2
# CHECK-NEXT: 2 3 1.00 vpextrb $1, %xmm0, %ecx
-# CHECK-NEXT: 3 2 1.00 * vpextrb $1, %xmm0, (%rax)
+# CHECK-NEXT: 3 2 0.50 * vpextrb $1, %xmm0, (%rax)
# CHECK-NEXT: 2 3 1.00 vpextrd $1, %xmm0, %ecx
-# CHECK-NEXT: 3 2 1.00 * vpextrd $1, %xmm0, (%rax)
+# CHECK-NEXT: 3 2 0.50 * vpextrd $1, %xmm0, (%rax)
# CHECK-NEXT: 2 3 1.00 vpextrq $1, %xmm0, %rcx
-# CHECK-NEXT: 3 2 1.00 * vpextrq $1, %xmm0, (%rax)
+# CHECK-NEXT: 3 2 0.50 * vpextrq $1, %xmm0, (%rax)
# CHECK-NEXT: 2 3 1.00 vpextrw $1, %xmm0, %ecx
-# CHECK-NEXT: 3 2 1.00 * vpextrw $1, %xmm0, (%rax)
+# CHECK-NEXT: 3 2 0.50 * vpextrw $1, %xmm0, (%rax)
# CHECK-NEXT: 3 3 1.00 vphaddd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 4 9 1.00 * vphaddd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 3 3 1.00 vphaddsw %xmm0, %xmm1, %xmm2
@@ -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: - 126.00 325.58 252.58 160.50 160.50 19.00 274.58 6.25 19.00 19.00 19.00
+# CHECK-NEXT: - 126.00 325.58 256.58 160.50 160.50 19.00 270.58 6.25 19.00 19.00 19.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -2159,14 +2159,14 @@ vzeroupper
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpermilps $1, (%rax), %ymm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vpermilps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpermilps (%rax), %ymm1, %ymm2
-# CHECK-NEXT: - - 1.00 - - - - 1.00 - - - - vpextrb $1, %xmm0, %ecx
-# CHECK-NEXT: - - - - - - 0.50 1.00 - 0.50 0.50 0.50 vpextrb $1, %xmm0, (%rax)
-# CHECK-NEXT: - - 1.00 - - - - 1.00 - - - - vpextrd $1, %xmm0, %ecx
-# CHECK-NEXT: - - - - - - 0.50 1.00 - 0.50 0.50 0.50 vpextrd $1, %xmm0, (%rax)
-# CHECK-NEXT: - - 1.00 - - - - 1.00 - - - - vpextrq $1, %xmm0, %rcx
-# CHECK-NEXT: - - - - - - 0.50 1.00 - 0.50 0.50 0.50 vpextrq $1, %xmm0, (%rax)
-# CHECK-NEXT: - - 1.00 - - - - 1.00 - - - - vpextrw $1, %xmm0, %ecx
-# CHECK-NEXT: - - - - - - 0.50 1.00 - 0.50 0.50 0.50 vpextrw $1, %xmm0, (%rax)
+# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 - - - - vpextrb $1, %xmm0, %ecx
+# CHECK-NEXT: - - - 0.50 - - 0.50 0.50 - 0.50 0.50 0.50 vpextrb $1, %xmm0, (%rax)
+# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 - - - - vpextrd $1, %xmm0, %ecx
+# CHECK-NEXT: - - - 0.50 - - 0.50 0.50 - 0.50 0.50 0.50 vpextrd $1, %xmm0, (%rax)
+# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 - - - - vpextrq $1, %xmm0, %rcx
+# CHECK-NEXT: - - - 0.50 - - 0.50 0.50 - 0.50 0.50 0.50 vpextrq $1, %xmm0, (%rax)
+# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 - - - - vpextrw $1, %xmm0, %ecx
+# CHECK-NEXT: - - - 0.50 - - 0.50 0.50 - 0.50 0.50 0.50 vpextrw $1, %xmm0, (%rax)
# CHECK-NEXT: - - 0.33 1.33 - - - 1.33 - - - - vphaddd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.33 1.33 0.50 0.50 - 1.33 - - - - vphaddd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 1.50 - - - 1.00 - - - - vphaddsw %xmm0, %xmm1, %xmm2
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 08ad3a0feead4..3bcc961c70e2a 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bw.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bw.s
@@ -820,9 +820,9 @@ vpunpcklwd (%rax), %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: 1 4 1.00 vpcmpeqw %zmm0, %zmm1, %k2 {%k3}
# CHECK-NEXT: 2 11 1.00 * vpcmpeqw (%rax), %zmm1, %k2 {%k3}
# CHECK-NEXT: 2 3 1.00 vpextrb $0, %xmm16, %eax
-# CHECK-NEXT: 3 2 1.00 * vpextrb $0, %xmm16, (%rax)
+# CHECK-NEXT: 3 2 0.50 * vpextrb $0, %xmm16, (%rax)
# CHECK-NEXT: 2 3 1.00 vpextrw $0, %xmm16, %eax
-# CHECK-NEXT: 3 2 1.00 * vpextrw $0, %xmm16, (%rax)
+# CHECK-NEXT: 3 2 0.50 * vpextrw $0, %xmm16, (%rax)
# CHECK-NEXT: 2 2 2.00 vpinsrb $0, %eax, %xmm16, %xmm19
# CHECK-NEXT: 2 6 1.00 * vpinsrb $0, (%rax), %xmm16, %xmm19
# CHECK-NEXT: 2 2 2.00 vpinsrw $0, %eax, %xmm16, %xmm19
@@ -1128,7 +1128,7 @@ vpunpcklwd (%rax), %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: - - 239.50 17.50 110.00 110.00 8.00 295.50 0.50 8.00 8.00 8.00
+# CHECK-NEXT: - - 239.50 19.50 110.00 110.00 8.00 293.50 0.50 8.00 8.00 8.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -1340,10 +1340,10 @@ vpunpcklwd (%rax), %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpcmpeqw (%rax), %zmm1, %k2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vpcmpeqw %zmm0, %zmm1, %k2 {%k3}
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpcmpeqw (%rax), %zmm1, %k2 {%k3}
-# CHECK-NEXT: - - 1.00 - - - - 1.00 - - - - vpextrb $0, %xmm16, %eax
-# CHECK-NEXT: - - - - - - 0.50 1.00 - 0.50 0.50 0.50 vpextrb $0, %xmm16, (%rax)
-# CHECK-NEXT: - - 1.00 - - - - 1.00 - - - - vpextrw $0, %xmm16, %eax
-# CHECK-NEXT: - - - - - - 0.50 1.00 - 0.50 0.50 0.50 vpextrw $0, %xmm16, (%rax)
+# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 - - - - vpextrb $0, %xmm16, %eax
+# CHECK-NEXT: - - - 0.50 - - 0.50 0.50 - 0.50 0.50 0.50 vpextrb $0, %xmm16, (%rax)
+# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 - - - - vpextrw $0, %xmm16, %eax
+# CHECK-NEXT: - - - 0.50 - - 0.50 0.50 - 0.50 0.50 0.50 vpextrw $0, %xmm16, (%rax)
# CHECK-NEXT: - - - - - - - 2.00 - - - - vpinsrb $0, %eax, %xmm16, %xmm19
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpinsrb $0, (%rax), %xmm16, %xmm19
# CHECK-NEXT: - - - - - - - 2.00 - - - - vpinsrw $0, %eax, %xmm16, %xmm19
diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512dq.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512dq.s
index 42041cd389fce..8124c58483233 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512dq.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512dq.s
@@ -736,9 +736,9 @@ vxorps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: 2 8 0.50 * vorps (%rax), %zmm17, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 8 0.50 * vorps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z}
# CHECK-NEXT: 2 3 1.00 vpextrd $1, %xmm16, %ecx
-# CHECK-NEXT: 3 2 1.00 * vpextrd $1, %xmm16, (%rax)
+# CHECK-NEXT: 3 2 0.50 * vpextrd $1, %xmm16, (%rax)
# CHECK-NEXT: 2 3 1.00 vpextrq $1, %xmm16, %rcx
-# CHECK-NEXT: 3 2 1.00 * vpextrq $1, %xmm16, (%rax)
+# CHECK-NEXT: 3 2 0.50 * vpextrq $1, %xmm16, (%rax)
# CHECK-NEXT: 2 2 2.00 vpinsrd $1, %ecx, %xmm16, %xmm19
# CHECK-NEXT: 2 6 1.00 * vpinsrd $1, (%rax), %xmm16, %xmm19
# CHECK-NEXT: 2 2 2.00 vpinsrq $1, %rcx, %xmm16, %xmm19
@@ -872,7 +872,7 @@ vxorps (%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: - - 209.25 73.25 102.00 102.00 5.50 197.25 0.25 5.50 5.50 5.50
+# CHECK-NEXT: - - 209.25 75.25 102.00 102.00 5.50 195.25 0.25 5.50 5.50 5.50
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -1144,10 +1144,10 @@ vxorps (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - vorps %zmm16, %zmm17, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.50 - 0.50 0.50 - 0.50 - - - - vorps (%rax), %zmm17, %zmm19 {%k1} {z}
# CHECK-NEXT: - - 0.50 - 0.50 0.50 - 0.50 - - - - vorps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z}
-# CHECK-NEXT: - - 1.00 - - - - 1.00 - - - - vpextrd $1, %xmm16, %ecx
-# CHECK-NEXT: - - - - - - 0.50 1.00 - 0.50 0.50 0.50 vpextrd $1, %xmm16, (%rax)
-# CHECK-NEXT: - - 1.00 - - - - 1.00 - - - - vpextrq $1, %xmm16, %rcx
-# CHECK-NEXT: - - - - - - 0.50 1.00 - 0.50 0.50 0.50 vpextrq $1, %xmm16, (%rax)
+# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 - - - - vpextrd $1, %xmm16, %ecx
+# CHECK-NEXT: - - - 0.50 - - 0.50 0.50 - 0.50 0.50 0.50 vpextrd $1, %xmm16, (%rax)
+# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 - - - - vpextrq $1, %xmm16, %rcx
+# CHECK-NEXT: - - - 0.50 - - 0.50 0.50 - 0.50 0.50 0.50 vpextrq $1, %xmm16, (%rax)
# CHECK-NEXT: - - - - - - - 2.00 - - - - vpinsrd $1, %ecx, %xmm16, %xmm19
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpinsrd $1, (%rax), %xmm16, %xmm19
# CHECK-NEXT: - - - - - - - 2.00 - - - - vpinsrq $1, %rcx, %xmm16, %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 95bb0fd49481d..01e579493b4ff 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse1.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse1.s
@@ -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: - 24.00 66.92 28.92 29.00 29.00 4.50 31.92 0.25 4.50 4.50 4.50
+# CHECK-NEXT: - 24.00 66.92 29.42 29.00 29.00 4.50 31.42 0.25 4.50 4.50 4.50
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -413,7 +413,7 @@ xorps (%rax), %xmm2
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - - - pavgb (%rax), %mm2
# CHECK-NEXT: - - 1.00 - - - - - - - - - pavgw %mm0, %mm2
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - - - pavgw (%rax), %mm2
-# CHECK-NEXT: - - 1.00 - - - - 1.00 - - - - pextrw $1, %mm0, %ecx
+# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 - - - - pextrw $1, %mm0, %ecx
# CHECK-NEXT: - - - - - - - 2.00 - - - - pinsrw $1, %eax, %mm2
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - pinsrw $1, (%rax), %mm2
# CHECK-NEXT: - - 1.00 - - - - - - - - - pmaxsw %mm0, %mm2
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 a1bf6c1e98620..88d1882af8b59 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse2.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse2.s
@@ -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: - 40.00 106.92 102.92 58.50 58.50 7.50 72.42 1.75 8.00 8.00 7.50
+# CHECK-NEXT: - 40.00 106.92 103.42 58.50 58.50 7.50 71.92 1.75 8.00 8.00 7.50
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -848,7 +848,7 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - - - pcmpgtd (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - - - pcmpgtw %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - - - pcmpgtw (%rax), %xmm2
-# CHECK-NEXT: - - 1.00 - - - - 1.00 - - - - pextrw $1, %xmm0, %ecx
+# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 - - - - pextrw $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - - - 2.00 - - - - pinsrw $1, %eax, %xmm0
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - pinsrw $1, (%rax), %xmm0
# CHECK-NEXT: - - 0.50 0.50 - - - - - - - - pmaddwd %xmm0, %xmm2
diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse41.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse41.s
index 05c208b1c622b..6ff620b0779f3 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse41.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse41.s
@@ -183,12 +183,12 @@ roundss $1, (%rax), %xmm2
# CHECK-NEXT: 1 1 0.50 pcmpeqq %xmm0, %xmm2
# CHECK-NEXT: 2 7 0.50 * pcmpeqq (%rax), %xmm2
# CHECK-NEXT: 2 3 1.00 pextrb $1, %xmm0, %ecx
-# CHECK-NEXT: 3 2 1.00 * pextrb $1, %xmm0, (%rax)
+# CHECK-NEXT: 3 2 0.50 * pextrb $1, %xmm0, (%rax)
# CHECK-NEXT: 2 3 1.00 pextrd $1, %xmm0, %ecx
-# CHECK-NEXT: 3 2 1.00 * pextrd $1, %xmm0, (%rax)
+# CHECK-NEXT: 3 2 0.50 * pextrd $1, %xmm0, (%rax)
# CHECK-NEXT: 2 3 1.00 pextrq $1, %xmm0, %rcx
-# CHECK-NEXT: 3 2 1.00 * pextrq $1, %xmm0, (%rax)
-# CHECK-NEXT: 3 2 1.00 * pextrw $1, %xmm0, (%rax)
+# CHECK-NEXT: 3 2 0.50 * pextrq $1, %xmm0, (%rax)
+# CHECK-NEXT: 3 2 0.50 * pextrw $1, %xmm0, (%rax)
# CHECK-NEXT: 1 4 1.00 phminposuw %xmm0, %xmm2
# CHECK-NEXT: 2 10 1.00 * phminposuw (%rax), %xmm2
# CHECK-NEXT: 2 2 2.00 pinsrb $1, %eax, %xmm1
@@ -268,7 +268,7 @@ roundss $1, (%rax), %xmm2
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
-# CHECK-NEXT: - - 36.67 42.67 22.00 22.00 2.50 52.67 - 2.50 2.50 2.50
+# CHECK-NEXT: - - 36.67 46.17 22.00 22.00 2.50 49.17 - 2.50 2.50 2.50
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -299,13 +299,13 @@ roundss $1, (%rax), %xmm2
# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - pblendw $11, (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - - - pcmpeqq %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - - - pcmpeqq (%rax), %xmm2
-# CHECK-NEXT: - - 1.00 - - - - 1.00 - - - - pextrb $1, %xmm0, %ecx
-# CHECK-NEXT: - - - - - - 0.50 1.00 - 0.50 0.50 0.50 pextrb $1, %xmm0, (%rax)
-# CHECK-NEXT: - - 1.00 - - - - 1.00 - - - - pextrd $1, %xmm0, %ecx
-# CHECK-NEXT: - - - - - - 0.50 1.00 - 0.50 0.50 0.50 pextrd $1, %xmm0, (%rax)
-# CHECK-NEXT: - - 1.00 - - - - 1.00 - - - - pextrq $1, %xmm0, %rcx
-# CHECK-NEXT: - - - - - - 0.50 1.00 - 0.50 0.50 0.50 pextrq $1, %xmm0, (%rax)
-# CHECK-NEXT: - - - - - - 0.50 1.00 - 0.50 0.50 0.50 pextrw $1, %xmm0, (%rax)
+# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 - - - - pextrb $1, %xmm0, %ecx
+# CHECK-NEXT: - - - 0.50 - - 0.50 0.50 - 0.50 0.50 0.50 pextrb $1, %xmm0, (%rax)
+# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 - - - - pextrd $1, %xmm0, %ecx
+# CHECK-NEXT: - - - 0.50 - - 0.50 0.50 - 0.50 0.50 0.50 pextrd $1, %xmm0, (%rax)
+# CHECK-NEXT: - - 1.00 0.50 - - - 0.50 - - - - pextrq $1, %xmm0, %rcx
+# CHECK-NEXT: - - - 0.50 - - 0.50 0.50 - 0.50 0.50 0.50 pextrq $1, %xmm0, (%rax)
+# CHECK-NEXT: - - - 0.50 - - 0.50 0.50 - 0.50 0.50 0.50 pextrw $1, %xmm0, (%rax)
# CHECK-NEXT: - - 1.00 - - - - - - - - - phminposuw %xmm0, %xmm2
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - - - phminposuw (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 2.00 - - - - pinsrb $1, %eax, %xmm1
More information about the llvm-commits
mailing list