Skip to content

Commit 124b1f8

Browse files
committed
[X86] Fix HSW/BDW shift/rotate by CL schedules
This is just Port06 not Port0156 - fixes reported thoughputs Confirmed by augner/uops.info
1 parent f6f2929 commit 124b1f8

File tree

4 files changed

+86
-86
lines changed

4 files changed

+86
-86
lines changed

llvm/lib/Target/X86/X86SchedBroadwell.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,9 @@ defm : X86WriteRes<WriteXCHG, [BWPort0156], 2, [3], 3>;
162162

163163
// Integer shifts and rotates.
164164
defm : BWWriteResPair<WriteShift, [BWPort06], 1>;
165-
defm : BWWriteResPair<WriteShiftCL, [BWPort06,BWPort0156], 3, [2,1], 3>;
165+
defm : BWWriteResPair<WriteShiftCL, [BWPort06], 3, [3], 3>;
166166
defm : BWWriteResPair<WriteRotate, [BWPort06], 1, [1], 1>;
167-
defm : BWWriteResPair<WriteRotateCL, [BWPort06,BWPort0156], 3, [2,1], 3>;
167+
defm : BWWriteResPair<WriteRotateCL, [BWPort06], 3, [3], 3>;
168168

169169
// SHLD/SHRD.
170170
defm : X86WriteRes<WriteSHDrri, [BWPort1], 3, [1], 1>;

llvm/lib/Target/X86/X86SchedHaswell.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,9 @@ defm : X86WriteRes<WriteXCHG, [HWPort0156], 2, [3], 3>;
164164

165165
// Integer shifts and rotates.
166166
defm : HWWriteResPair<WriteShift, [HWPort06], 1>;
167-
defm : HWWriteResPair<WriteShiftCL, [HWPort06, HWPort0156], 3, [2,1], 3>;
167+
defm : HWWriteResPair<WriteShiftCL, [HWPort06], 3, [3], 3>;
168168
defm : HWWriteResPair<WriteRotate, [HWPort06], 1, [1], 1>;
169-
defm : HWWriteResPair<WriteRotateCL, [HWPort06, HWPort0156], 3, [2,1], 3>;
169+
defm : HWWriteResPair<WriteRotateCL, [HWPort06], 3, [3], 3>;
170170

171171
// SHLD/SHRD.
172172
defm : X86WriteRes<WriteSHDrri, [HWPort1], 3, [1], 1>;

llvm/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1573,8 +1573,8 @@ xorq (%rax), %rdi
15731573
# CHECK-NEXT: 1 1 0.50 rorb $7, %dil
15741574
# CHECK-NEXT: 5 7 1.00 * * rolb $7, (%rax)
15751575
# CHECK-NEXT: 5 7 1.00 * * rorb $7, (%rax)
1576-
# CHECK-NEXT: 3 3 1.00 rolb %cl, %dil
1577-
# CHECK-NEXT: 3 3 1.00 rorb %cl, %dil
1576+
# CHECK-NEXT: 3 3 1.50 rolb %cl, %dil
1577+
# CHECK-NEXT: 3 3 1.50 rorb %cl, %dil
15781578
# CHECK-NEXT: 6 8 1.00 * * rolb %cl, (%rax)
15791579
# CHECK-NEXT: 6 8 1.00 * * rorb %cl, (%rax)
15801580
# CHECK-NEXT: 2 2 1.00 rolw %di
@@ -1585,8 +1585,8 @@ xorq (%rax), %rdi
15851585
# CHECK-NEXT: 1 1 0.50 rorw $7, %di
15861586
# CHECK-NEXT: 5 7 1.00 * * rolw $7, (%rax)
15871587
# CHECK-NEXT: 5 7 1.00 * * rorw $7, (%rax)
1588-
# CHECK-NEXT: 3 3 1.00 rolw %cl, %di
1589-
# CHECK-NEXT: 3 3 1.00 rorw %cl, %di
1588+
# CHECK-NEXT: 3 3 1.50 rolw %cl, %di
1589+
# CHECK-NEXT: 3 3 1.50 rorw %cl, %di
15901590
# CHECK-NEXT: 6 8 1.00 * * rolw %cl, (%rax)
15911591
# CHECK-NEXT: 6 8 1.00 * * rorw %cl, (%rax)
15921592
# CHECK-NEXT: 2 2 1.00 roll %edi
@@ -1597,8 +1597,8 @@ xorq (%rax), %rdi
15971597
# CHECK-NEXT: 1 1 0.50 rorl $7, %edi
15981598
# CHECK-NEXT: 5 7 1.00 * * roll $7, (%rax)
15991599
# CHECK-NEXT: 5 7 1.00 * * rorl $7, (%rax)
1600-
# CHECK-NEXT: 3 3 1.00 roll %cl, %edi
1601-
# CHECK-NEXT: 3 3 1.00 rorl %cl, %edi
1600+
# CHECK-NEXT: 3 3 1.50 roll %cl, %edi
1601+
# CHECK-NEXT: 3 3 1.50 rorl %cl, %edi
16021602
# CHECK-NEXT: 6 8 1.00 * * roll %cl, (%rax)
16031603
# CHECK-NEXT: 6 8 1.00 * * rorl %cl, (%rax)
16041604
# CHECK-NEXT: 2 2 1.00 rolq %rdi
@@ -1609,8 +1609,8 @@ xorq (%rax), %rdi
16091609
# CHECK-NEXT: 1 1 0.50 rorq $7, %rdi
16101610
# CHECK-NEXT: 5 7 1.00 * * rolq $7, (%rax)
16111611
# CHECK-NEXT: 5 7 1.00 * * rorq $7, (%rax)
1612-
# CHECK-NEXT: 3 3 1.00 rolq %cl, %rdi
1613-
# CHECK-NEXT: 3 3 1.00 rorq %cl, %rdi
1612+
# CHECK-NEXT: 3 3 1.50 rolq %cl, %rdi
1613+
# CHECK-NEXT: 3 3 1.50 rorq %cl, %rdi
16141614
# CHECK-NEXT: 6 8 1.00 * * rolq %cl, (%rax)
16151615
# CHECK-NEXT: 6 8 1.00 * * rorq %cl, (%rax)
16161616
# CHECK-NEXT: 1 1 0.50 sahf
@@ -1626,9 +1626,9 @@ xorq (%rax), %rdi
16261626
# CHECK-NEXT: 4 6 1.00 * * sarb $7, (%rax)
16271627
# CHECK-NEXT: 4 6 1.00 * * shlb $7, (%rax)
16281628
# CHECK-NEXT: 4 6 1.00 * * shrb $7, (%rax)
1629-
# CHECK-NEXT: 3 3 1.00 sarb %cl, %dil
1630-
# CHECK-NEXT: 3 3 1.00 shlb %cl, %dil
1631-
# CHECK-NEXT: 3 3 1.00 shrb %cl, %dil
1629+
# CHECK-NEXT: 3 3 1.50 sarb %cl, %dil
1630+
# CHECK-NEXT: 3 3 1.50 shlb %cl, %dil
1631+
# CHECK-NEXT: 3 3 1.50 shrb %cl, %dil
16321632
# CHECK-NEXT: 6 8 1.00 * * sarb %cl, (%rax)
16331633
# CHECK-NEXT: 6 8 1.00 * * shlb %cl, (%rax)
16341634
# CHECK-NEXT: 6 8 1.00 * * shrb %cl, (%rax)
@@ -1644,9 +1644,9 @@ xorq (%rax), %rdi
16441644
# CHECK-NEXT: 4 6 1.00 * * sarw $7, (%rax)
16451645
# CHECK-NEXT: 4 6 1.00 * * shlw $7, (%rax)
16461646
# CHECK-NEXT: 4 6 1.00 * * shrw $7, (%rax)
1647-
# CHECK-NEXT: 3 3 1.00 sarw %cl, %di
1648-
# CHECK-NEXT: 3 3 1.00 shlw %cl, %di
1649-
# CHECK-NEXT: 3 3 1.00 shrw %cl, %di
1647+
# CHECK-NEXT: 3 3 1.50 sarw %cl, %di
1648+
# CHECK-NEXT: 3 3 1.50 shlw %cl, %di
1649+
# CHECK-NEXT: 3 3 1.50 shrw %cl, %di
16501650
# CHECK-NEXT: 6 8 1.00 * * sarw %cl, (%rax)
16511651
# CHECK-NEXT: 6 8 1.00 * * shlw %cl, (%rax)
16521652
# CHECK-NEXT: 6 8 1.00 * * shrw %cl, (%rax)
@@ -1662,9 +1662,9 @@ xorq (%rax), %rdi
16621662
# CHECK-NEXT: 4 6 1.00 * * sarl $7, (%rax)
16631663
# CHECK-NEXT: 4 6 1.00 * * shll $7, (%rax)
16641664
# CHECK-NEXT: 4 6 1.00 * * shrl $7, (%rax)
1665-
# CHECK-NEXT: 3 3 1.00 sarl %cl, %edi
1666-
# CHECK-NEXT: 3 3 1.00 shll %cl, %edi
1667-
# CHECK-NEXT: 3 3 1.00 shrl %cl, %edi
1665+
# CHECK-NEXT: 3 3 1.50 sarl %cl, %edi
1666+
# CHECK-NEXT: 3 3 1.50 shll %cl, %edi
1667+
# CHECK-NEXT: 3 3 1.50 shrl %cl, %edi
16681668
# CHECK-NEXT: 6 8 1.00 * * sarl %cl, (%rax)
16691669
# CHECK-NEXT: 6 8 1.00 * * shll %cl, (%rax)
16701670
# CHECK-NEXT: 6 8 1.00 * * shrl %cl, (%rax)
@@ -1680,9 +1680,9 @@ xorq (%rax), %rdi
16801680
# CHECK-NEXT: 4 6 1.00 * * sarq $7, (%rax)
16811681
# CHECK-NEXT: 4 6 1.00 * * shlq $7, (%rax)
16821682
# CHECK-NEXT: 4 6 1.00 * * shrq $7, (%rax)
1683-
# CHECK-NEXT: 3 3 1.00 sarq %cl, %rdi
1684-
# CHECK-NEXT: 3 3 1.00 shlq %cl, %rdi
1685-
# CHECK-NEXT: 3 3 1.00 shrq %cl, %rdi
1683+
# CHECK-NEXT: 3 3 1.50 sarq %cl, %rdi
1684+
# CHECK-NEXT: 3 3 1.50 shlq %cl, %rdi
1685+
# CHECK-NEXT: 3 3 1.50 shrq %cl, %rdi
16861686
# CHECK-NEXT: 6 8 1.00 * * sarq %cl, (%rax)
16871687
# CHECK-NEXT: 6 8 1.00 * * shlq %cl, (%rax)
16881688
# CHECK-NEXT: 6 8 1.00 * * shrq %cl, (%rax)
@@ -1962,7 +1962,7 @@ xorq (%rax), %rdi
19621962

19631963
# CHECK: Resource pressure per iteration:
19641964
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
1965-
# CHECK-NEXT: 50.00 - 610.50 401.50 378.50 378.50 345.00 298.00 646.00 129.00
1965+
# CHECK-NEXT: 50.00 - 615.50 396.50 378.50 378.50 345.00 293.00 651.00 129.00
19661966

19671967
# CHECK: Resource pressure by instruction:
19681968
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -2505,8 +2505,8 @@ xorq (%rax), %rdi
25052505
# CHECK-NEXT: - - 0.50 - - - - - 0.50 - rorb $7, %dil
25062506
# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolb $7, (%rax)
25072507
# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorb $7, (%rax)
2508-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rolb %cl, %dil
2509-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rorb %cl, %dil
2508+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rolb %cl, %dil
2509+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rorb %cl, %dil
25102510
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 rolb %cl, (%rax)
25112511
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 rorb %cl, (%rax)
25122512
# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolw %di
@@ -2517,8 +2517,8 @@ xorq (%rax), %rdi
25172517
# CHECK-NEXT: - - 0.50 - - - - - 0.50 - rorw $7, %di
25182518
# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolw $7, (%rax)
25192519
# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorw $7, (%rax)
2520-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rolw %cl, %di
2521-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rorw %cl, %di
2520+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rolw %cl, %di
2521+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rorw %cl, %di
25222522
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 rolw %cl, (%rax)
25232523
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 rorw %cl, (%rax)
25242524
# CHECK-NEXT: - - 1.00 - - - - - 1.00 - roll %edi
@@ -2529,8 +2529,8 @@ xorq (%rax), %rdi
25292529
# CHECK-NEXT: - - 0.50 - - - - - 0.50 - rorl $7, %edi
25302530
# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 roll $7, (%rax)
25312531
# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorl $7, (%rax)
2532-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - roll %cl, %edi
2533-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rorl %cl, %edi
2532+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - roll %cl, %edi
2533+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rorl %cl, %edi
25342534
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 roll %cl, (%rax)
25352535
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 rorl %cl, (%rax)
25362536
# CHECK-NEXT: - - 1.00 - - - - - 1.00 - rolq %rdi
@@ -2541,8 +2541,8 @@ xorq (%rax), %rdi
25412541
# CHECK-NEXT: - - 0.50 - - - - - 0.50 - rorq $7, %rdi
25422542
# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rolq $7, (%rax)
25432543
# CHECK-NEXT: - - 1.00 - 0.83 0.83 1.00 - 1.00 0.33 rorq $7, (%rax)
2544-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rolq %cl, %rdi
2545-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - rorq %cl, %rdi
2544+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rolq %cl, %rdi
2545+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - rorq %cl, %rdi
25462546
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 rolq %cl, (%rax)
25472547
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 rorq %cl, (%rax)
25482548
# CHECK-NEXT: - - 0.50 - - - - - 0.50 - sahf
@@ -2558,9 +2558,9 @@ xorq (%rax), %rdi
25582558
# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarb $7, (%rax)
25592559
# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlb $7, (%rax)
25602560
# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrb $7, (%rax)
2561-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - sarb %cl, %dil
2562-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shlb %cl, %dil
2563-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shrb %cl, %dil
2561+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - sarb %cl, %dil
2562+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shlb %cl, %dil
2563+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shrb %cl, %dil
25642564
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 sarb %cl, (%rax)
25652565
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shlb %cl, (%rax)
25662566
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shrb %cl, (%rax)
@@ -2576,9 +2576,9 @@ xorq (%rax), %rdi
25762576
# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarw $7, (%rax)
25772577
# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlw $7, (%rax)
25782578
# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrw $7, (%rax)
2579-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - sarw %cl, %di
2580-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shlw %cl, %di
2581-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shrw %cl, %di
2579+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - sarw %cl, %di
2580+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shlw %cl, %di
2581+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shrw %cl, %di
25822582
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 sarw %cl, (%rax)
25832583
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shlw %cl, (%rax)
25842584
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shrw %cl, (%rax)
@@ -2594,9 +2594,9 @@ xorq (%rax), %rdi
25942594
# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarl $7, (%rax)
25952595
# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shll $7, (%rax)
25962596
# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrl $7, (%rax)
2597-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - sarl %cl, %edi
2598-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shll %cl, %edi
2599-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shrl %cl, %edi
2597+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - sarl %cl, %edi
2598+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shll %cl, %edi
2599+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shrl %cl, %edi
26002600
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 sarl %cl, (%rax)
26012601
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shll %cl, (%rax)
26022602
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shrl %cl, (%rax)
@@ -2612,9 +2612,9 @@ xorq (%rax), %rdi
26122612
# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 sarq $7, (%rax)
26132613
# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shlq $7, (%rax)
26142614
# CHECK-NEXT: - - 0.50 - 0.83 0.83 1.00 - 0.50 0.33 shrq $7, (%rax)
2615-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - sarq %cl, %rdi
2616-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shlq %cl, %rdi
2617-
# CHECK-NEXT: - - 1.25 0.25 - - - 0.25 1.25 - shrq %cl, %rdi
2615+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - sarq %cl, %rdi
2616+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shlq %cl, %rdi
2617+
# CHECK-NEXT: - - 1.50 - - - - - 1.50 - shrq %cl, %rdi
26182618
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 sarq %cl, (%rax)
26192619
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shlq %cl, (%rax)
26202620
# CHECK-NEXT: - - 1.25 0.25 0.83 0.83 1.00 0.25 1.25 0.33 shrq %cl, (%rax)

0 commit comments

Comments
 (0)