Skip to content

Commit ad8c828

Browse files
committed
[X86] (V)MPSADBW instructions can run on Port1 or Port5 for one uop stage
When we copied the IceLake model from the SkylakeServer model we missed this diff Confirmed with uops.info and Agner
1 parent 0858c90 commit ad8c828

File tree

4 files changed

+18
-18
lines changed

4 files changed

+18
-18
lines changed

llvm/lib/Target/X86/X86SchedIceLake.td

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -402,9 +402,9 @@ defm : ICXWriteResPair<WriteBlendZ,[ICXPort15], 1, [1], 1, 7>;
402402
defm : ICXWriteResPair<WriteVarBlend, [ICXPort015], 2, [2], 2, 6>; // Vector variable blends.
403403
defm : ICXWriteResPair<WriteVarBlendY,[ICXPort015], 2, [2], 2, 6>;
404404
defm : ICXWriteResPair<WriteVarBlendZ,[ICXPort05], 2, [1], 1, 6>;
405-
defm : ICXWriteResPair<WriteMPSAD, [ICXPort5], 4, [2], 2, 6>; // Vector MPSAD.
406-
defm : ICXWriteResPair<WriteMPSADY, [ICXPort5], 4, [2], 2, 7>;
407-
defm : ICXWriteResPair<WriteMPSADZ, [ICXPort5], 4, [2], 2, 7>;
405+
defm : ICXWriteResPair<WriteMPSAD, [ICXPort15,ICXPort5], 4, [1,1], 2, 6>; // Vector MPSAD.
406+
defm : ICXWriteResPair<WriteMPSADY, [ICXPort15,ICXPort5], 4, [1,1], 2, 7>;
407+
defm : ICXWriteResPair<WriteMPSADZ, [ICXPort15,ICXPort5], 4, [1,1], 2, 7>;
408408
defm : ICXWriteResPair<WritePSADBW, [ICXPort5], 3, [1], 1, 5>; // Vector PSADBW.
409409
defm : ICXWriteResPair<WritePSADBWX, [ICXPort5], 3, [1], 1, 6>;
410410
defm : ICXWriteResPair<WritePSADBWY, [ICXPort5], 3, [1], 1, 7>;

llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1337,8 +1337,8 @@ vzeroupper
13371337
# CHECK-NEXT: 1 1 0.33 vmovups %ymm0, %ymm2
13381338
# CHECK-NEXT: 2 1 0.50 * vmovups %ymm0, (%rax)
13391339
# CHECK-NEXT: 1 7 0.50 * vmovups (%rax), %ymm2
1340-
# CHECK-NEXT: 2 4 2.00 vmpsadbw $1, %xmm0, %xmm1, %xmm2
1341-
# CHECK-NEXT: 3 10 2.00 * vmpsadbw $1, (%rax), %xmm1, %xmm2
1340+
# CHECK-NEXT: 2 4 1.00 vmpsadbw $1, %xmm0, %xmm1, %xmm2
1341+
# CHECK-NEXT: 3 10 1.00 * vmpsadbw $1, (%rax), %xmm1, %xmm2
13421342
# CHECK-NEXT: 1 4 0.50 vmulpd %xmm0, %xmm1, %xmm2
13431343
# CHECK-NEXT: 2 10 0.50 * vmulpd (%rax), %xmm1, %xmm2
13441344
# CHECK-NEXT: 1 4 0.50 vmulpd %ymm0, %ymm1, %ymm2
@@ -1738,7 +1738,7 @@ vzeroupper
17381738

17391739
# CHECK: Resource pressure per iteration:
17401740
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
1741-
# CHECK-NEXT: - 126.00 322.92 232.92 160.50 160.50 19.00 296.92 6.25 19.00 19.00 19.00
1741+
# CHECK-NEXT: - 126.00 322.92 233.92 160.50 160.50 19.00 295.92 6.25 19.00 19.00 19.00
17421742

17431743
# CHECK: Resource pressure by instruction:
17441744
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -2049,8 +2049,8 @@ vzeroupper
20492049
# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovups %ymm0, %ymm2
20502050
# CHECK-NEXT: - - - - - - 0.50 - - 0.50 0.50 0.50 vmovups %ymm0, (%rax)
20512051
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovups (%rax), %ymm2
2052-
# CHECK-NEXT: - - - - - - - 2.00 - - - - vmpsadbw $1, %xmm0, %xmm1, %xmm2
2053-
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - - - vmpsadbw $1, (%rax), %xmm1, %xmm2
2052+
# CHECK-NEXT: - - - 0.50 - - - 1.50 - - - - vmpsadbw $1, %xmm0, %xmm1, %xmm2
2053+
# CHECK-NEXT: - - - 0.50 0.50 0.50 - 1.50 - - - - vmpsadbw $1, (%rax), %xmm1, %xmm2
20542054
# CHECK-NEXT: - - 0.50 0.50 - - - - - - - - vmulpd %xmm0, %xmm1, %xmm2
20552055
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - - - vmulpd (%rax), %xmm1, %xmm2
20562056
# CHECK-NEXT: - - 0.50 0.50 - - - - - - - - vmulpd %ymm0, %ymm1, %ymm2

llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx2.s

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -476,8 +476,8 @@ vpxor (%rax), %ymm1, %ymm2
476476
# CHECK-NEXT: 1 3 1.00 vinserti128 $1, %xmm0, %ymm1, %ymm2
477477
# CHECK-NEXT: 2 7 0.50 * vinserti128 $1, (%rax), %ymm1, %ymm2
478478
# CHECK-NEXT: 1 7 0.50 * vmovntdqa (%rax), %ymm0
479-
# CHECK-NEXT: 2 4 2.00 vmpsadbw $1, %ymm0, %ymm1, %ymm2
480-
# CHECK-NEXT: 3 11 2.00 * vmpsadbw $1, (%rax), %ymm1, %ymm2
479+
# CHECK-NEXT: 2 4 1.00 vmpsadbw $1, %ymm0, %ymm1, %ymm2
480+
# CHECK-NEXT: 3 11 1.00 * vmpsadbw $1, (%rax), %ymm1, %ymm2
481481
# CHECK-NEXT: 1 1 0.50 vpabsb %ymm0, %ymm2
482482
# CHECK-NEXT: 2 8 0.50 * vpabsb (%rax), %ymm2
483483
# CHECK-NEXT: 1 1 0.50 vpabsd %ymm0, %ymm2
@@ -778,7 +778,7 @@ vpxor (%rax), %ymm1, %ymm2
778778

779779
# CHECK: Resource pressure per iteration:
780780
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
781-
# CHECK-NEXT: - - 110.33 103.33 98.00 98.00 2.50 150.33 - 2.50 2.50 2.50
781+
# CHECK-NEXT: - - 110.33 104.33 98.00 98.00 2.50 149.33 - 2.50 2.50 2.50
782782

783783
# CHECK: Resource pressure by instruction:
784784
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -798,8 +798,8 @@ vpxor (%rax), %ymm1, %ymm2
798798
# CHECK-NEXT: - - - - - - - 1.00 - - - - vinserti128 $1, %xmm0, %ymm1, %ymm2
799799
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vinserti128 $1, (%rax), %ymm1, %ymm2
800800
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovntdqa (%rax), %ymm0
801-
# CHECK-NEXT: - - - - - - - 2.00 - - - - vmpsadbw $1, %ymm0, %ymm1, %ymm2
802-
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - - - vmpsadbw $1, (%rax), %ymm1, %ymm2
801+
# CHECK-NEXT: - - - 0.50 - - - 1.50 - - - - vmpsadbw $1, %ymm0, %ymm1, %ymm2
802+
# CHECK-NEXT: - - - 0.50 0.50 0.50 - 1.50 - - - - vmpsadbw $1, (%rax), %ymm1, %ymm2
803803
# CHECK-NEXT: - - 0.50 0.50 - - - - - - - - vpabsb %ymm0, %ymm2
804804
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - - - vpabsb (%rax), %ymm2
805805
# CHECK-NEXT: - - 0.50 0.50 - - - - - - - - vpabsd %ymm0, %ymm2

llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse41.s

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,8 @@ roundss $1, (%rax), %xmm2
172172
# CHECK-NEXT: 1 1 1.00 insertps $1, %xmm0, %xmm2
173173
# CHECK-NEXT: 2 7 1.00 * insertps $1, (%rax), %xmm2
174174
# CHECK-NEXT: 1 6 0.50 * movntdqa (%rax), %xmm2
175-
# CHECK-NEXT: 2 4 2.00 mpsadbw $1, %xmm0, %xmm2
176-
# CHECK-NEXT: 3 10 2.00 * mpsadbw $1, (%rax), %xmm2
175+
# CHECK-NEXT: 2 4 1.00 mpsadbw $1, %xmm0, %xmm2
176+
# CHECK-NEXT: 3 10 1.00 * mpsadbw $1, (%rax), %xmm2
177177
# CHECK-NEXT: 1 3 1.00 packusdw %xmm0, %xmm2
178178
# CHECK-NEXT: 2 10 1.00 * packusdw (%rax), %xmm2
179179
# CHECK-NEXT: 2 2 0.67 pblendvb %xmm0, %xmm0, %xmm2
@@ -268,7 +268,7 @@ roundss $1, (%rax), %xmm2
268268

269269
# CHECK: Resource pressure per iteration:
270270
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
271-
# CHECK-NEXT: - - 36.67 41.67 22.00 22.00 2.50 53.67 - 2.50 2.50 2.50
271+
# CHECK-NEXT: - - 36.67 42.67 22.00 22.00 2.50 52.67 - 2.50 2.50 2.50
272272

273273
# CHECK: Resource pressure by instruction:
274274
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -289,8 +289,8 @@ roundss $1, (%rax), %xmm2
289289
# CHECK-NEXT: - - - - - - - 1.00 - - - - insertps $1, %xmm0, %xmm2
290290
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - insertps $1, (%rax), %xmm2
291291
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - movntdqa (%rax), %xmm2
292-
# CHECK-NEXT: - - - - - - - 2.00 - - - - mpsadbw $1, %xmm0, %xmm2
293-
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - - - mpsadbw $1, (%rax), %xmm2
292+
# CHECK-NEXT: - - - 0.50 - - - 1.50 - - - - mpsadbw $1, %xmm0, %xmm2
293+
# CHECK-NEXT: - - - 0.50 0.50 0.50 - 1.50 - - - - mpsadbw $1, (%rax), %xmm2
294294
# CHECK-NEXT: - - - - - - - 1.00 - - - - packusdw %xmm0, %xmm2
295295
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - packusdw (%rax), %xmm2
296296
# CHECK-NEXT: - - 0.67 0.67 - - - 0.67 - - - - pblendvb %xmm0, %xmm0, %xmm2

0 commit comments

Comments
 (0)