Skip to content

Commit dda9032

Browse files
committed
[llvm-mca] Correctly update the resource strategy for processor resources with multiple units.
When looking at the tests committed by Roman at r346587, I noticed that numbers reported by the resource pressure for PdAGU01 were wrong. In particular, according to the aut-generated CHECK lines in tests memcpy-like-test.s and store-throughput.s, resource pressure for PdAGU01 was not uniformly distributed among the two AGEN pipes. It turns out that the reason why pressure was not correctly distributed, was because the "resource selection strategy" object associated with PdAGU01 was not correctly updated on the event of AGEN pipe used. As a result, llvm-mca was not simulating a round-robin pipeline allocation for PdAGU01. Instead, PdAGU1 was always prioritized over PdAGU0. This patch fixes the issue; now processor resource strategy objects for resources declaring multiple units, are correctly notified in the event of "resource used". llvm-svn: 346650
1 parent e194c02 commit dda9032

22 files changed

+132
-126
lines changed

llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-pcmpeq.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ vpcmpeqq %xmm3, %xmm3, %xmm0
6767

6868
# CHECK: Resource pressure by instruction:
6969
# CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18] Instructions:
70-
# CHECK-NEXT: - - - - - - - - - - - 1.00 - - 1.00 - - - - - - - - vpcmpeqb %xmm0, %xmm0, %xmm1
71-
# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - - - - - - vpcmpeqw %xmm1, %xmm1, %xmm2
70+
# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - - - - - - vpcmpeqb %xmm0, %xmm0, %xmm1
71+
# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - 1.00 - - - - - - - vpcmpeqw %xmm1, %xmm1, %xmm2
7272
# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - - - - - - vpcmpeqd %xmm2, %xmm2, %xmm3
7373
# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - 1.00 - - - - - - - vpcmpeqq %xmm3, %xmm3, %xmm0
7474

llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-pcmpgt.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,14 @@ vpcmpgtq %xmm3, %xmm3, %xmm0
6464

6565
# CHECK: Resource pressure per iteration:
6666
# CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18]
67-
# CHECK-NEXT: - - - - - - - - - - - 1.00 - - 0.50 0.50 - - - - - - -
67+
# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - - - -
6868

6969
# CHECK: Resource pressure by instruction:
7070
# CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18] Instructions:
7171
# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vpcmpgtb %xmm0, %xmm0, %xmm1
7272
# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vpcmpgtw %xmm1, %xmm1, %xmm2
7373
# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vpcmpgtd %xmm2, %xmm2, %xmm3
74-
# CHECK-NEXT: - - - - - - - - - - - 1.00 - - 0.50 0.50 - - - - - - - vpcmpgtq %xmm3, %xmm3, %xmm0
74+
# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - - - - vpcmpgtq %xmm3, %xmm3, %xmm0
7575

7676
# CHECK: Timeline view:
7777
# CHECK-NEXT: Index 0123456

llvm/test/tools/llvm-mca/X86/BdVer2/dependent-pmuld-paddd.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,13 @@ vpaddd %xmm0, %xmm0, %xmm3
5555

5656
# CHECK: Resource pressure per iteration:
5757
# CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18]
58-
# CHECK-NEXT: - - - - - - - - - - - 2.00 1.00 - 1.50 1.50 - - - - - - -
58+
# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 1.00 - 1.50 1.50 - - - - - - -
5959

6060
# CHECK: Resource pressure by instruction:
6161
# CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18] Instructions:
6262
# CHECK-NEXT: - - - - - - - - - - - - 1.00 - 1.00 - - - - - - - - vpmuldq %xmm0, %xmm0, %xmm1
6363
# CHECK-NEXT: - - - - - - - - - - - 1.00 - - 0.50 0.50 - - - - - - - vpaddd %xmm1, %xmm1, %xmm0
64-
# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - 1.00 - - - - - - - vpaddd %xmm0, %xmm0, %xmm3
64+
# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - - - - - - vpaddd %xmm0, %xmm0, %xmm3
6565

6666
# CHECK: Timeline view:
6767
# CHECK-NEXT: 0123456789 0123456789 0123456789

llvm/test/tools/llvm-mca/X86/BdVer2/dot-product.s

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,13 @@ vhaddps %xmm3, %xmm3, %xmm4
5555

5656
# CHECK: Resource pressure per iteration:
5757
# CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18]
58-
# CHECK-NEXT: - - - - - - - - 1.49 1.51 - - - - 2.00 1.00 - - - - - - -
58+
# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 2.00 1.00 - - - - - - -
5959

6060
# CHECK: Resource pressure by instruction:
6161
# CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18] Instructions:
62-
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - 1.00 - - - - - - - vmulps %xmm0, %xmm1, %xmm2
63-
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vhaddps %xmm2, %xmm2, %xmm3
64-
# CHECK-NEXT: - - - - - - - - 0.49 0.51 - - - - 1.00 - - - - - - - - vhaddps %xmm3, %xmm3, %xmm4
62+
# CHECK-NEXT: - - - - - - - - 0.49 0.51 - - - - - 1.00 - - - - - - - vmulps %xmm0, %xmm1, %xmm2
63+
# CHECK-NEXT: - - - - - - - - 0.51 0.49 - - - - 1.00 - - - - - - - - vhaddps %xmm2, %xmm2, %xmm3
64+
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vhaddps %xmm3, %xmm3, %xmm4
6565

6666
# CHECK: Timeline view:
6767
# CHECK-NEXT: 0123456789 012

llvm/test/tools/llvm-mca/X86/BdVer2/load-store-alias.s

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,18 @@ vmovaps %xmm0, 48(%rdi)
6565

6666
# CHECK: Resource pressure per iteration:
6767
# CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18]
68-
# CHECK-NEXT: - 8.00 - - - - - - - 4.00 - - - 4.00 3.99 4.01 - - - - 4.00 - 4.00
68+
# CHECK-NEXT: 4.00 4.00 - - - - - - 2.00 2.00 - - - 4.00 3.99 4.01 - - - 2.00 2.00 - 4.00
6969

7070
# CHECK: Resource pressure by instruction:
7171
# CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18] Instructions:
7272
# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - 0.99 0.01 - - - - 1.00 - - vmovaps (%rsi), %xmm0
73-
# CHECK-NEXT: - 1.00 - - - - - - - - - - - 1.00 - 1.00 - - - - - - 1.00 vmovaps %xmm0, (%rdi)
74-
# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - 1.00 - - - - - 1.00 - - vmovaps 16(%rsi), %xmm0
75-
# CHECK-NEXT: - 1.00 - - - - - - - - - - - 1.00 - 1.00 - - - - - - 1.00 vmovaps %xmm0, 16(%rdi)
73+
# CHECK-NEXT: 1.00 - - - - - - - - - - - - 1.00 - 1.00 - - - - - - 1.00 vmovaps %xmm0, (%rdi)
74+
# CHECK-NEXT: - 1.00 - - - - - - 1.00 - - - - - 1.00 - - - - 1.00 - - - vmovaps 16(%rsi), %xmm0
75+
# CHECK-NEXT: 1.00 - - - - - - - - - - - - 1.00 - 1.00 - - - - - - 1.00 vmovaps %xmm0, 16(%rdi)
7676
# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - 1.00 - - - - - 1.00 - - vmovaps 32(%rsi), %xmm0
77-
# CHECK-NEXT: - 1.00 - - - - - - - - - - - 1.00 - 1.00 - - - - - - 1.00 vmovaps %xmm0, 32(%rdi)
78-
# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - 1.00 - - - - - 1.00 - - vmovaps 48(%rsi), %xmm0
79-
# CHECK-NEXT: - 1.00 - - - - - - - - - - - 1.00 - 1.00 - - - - - - 1.00 vmovaps %xmm0, 48(%rdi)
77+
# CHECK-NEXT: 1.00 - - - - - - - - - - - - 1.00 - 1.00 - - - - - - 1.00 vmovaps %xmm0, 32(%rdi)
78+
# CHECK-NEXT: - 1.00 - - - - - - 1.00 - - - - - 1.00 - - - - 1.00 - - - vmovaps 48(%rsi), %xmm0
79+
# CHECK-NEXT: 1.00 - - - - - - - - - - - - 1.00 - 1.00 - - - - - - 1.00 vmovaps %xmm0, 48(%rdi)
8080

8181
# CHECK: Timeline view:
8282
# CHECK-NEXT: 0123456789

0 commit comments

Comments
 (0)