Skip to content

Commit 91deae9

Browse files
committed
[MCA][X86] Add test coverage for VPCLMULQDQ instructions
1 parent 1dd5469 commit 91deae9

File tree

8 files changed

+334
-0
lines changed

8 files changed

+334
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=alderlake -instruction-tables < %s | FileCheck %s
3+
4+
vpclmulqdq $11, %ymm0, %ymm1, %ymm3
5+
vpclmulqdq $11, (%rax), %ymm1, %ymm3
6+
7+
# CHECK: Instruction Info:
8+
# CHECK-NEXT: [1]: #uOps
9+
# CHECK-NEXT: [2]: Latency
10+
# CHECK-NEXT: [3]: RThroughput
11+
# CHECK-NEXT: [4]: MayLoad
12+
# CHECK-NEXT: [5]: MayStore
13+
# CHECK-NEXT: [6]: HasSideEffects (U)
14+
15+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
16+
# CHECK-NEXT: 1 3 1.00 vpclmulqdq $11, %ymm0, %ymm1, %ymm3
17+
# CHECK-NEXT: 2 11 1.00 * vpclmulqdq $11, (%rax), %ymm1, %ymm3
18+
19+
# CHECK: Resources:
20+
# CHECK-NEXT: [0] - ADLPPort00
21+
# CHECK-NEXT: [1] - ADLPPort01
22+
# CHECK-NEXT: [2] - ADLPPort02
23+
# CHECK-NEXT: [3] - ADLPPort03
24+
# CHECK-NEXT: [4] - ADLPPort04
25+
# CHECK-NEXT: [5] - ADLPPort05
26+
# CHECK-NEXT: [6] - ADLPPort06
27+
# CHECK-NEXT: [7] - ADLPPort07
28+
# CHECK-NEXT: [8] - ADLPPort08
29+
# CHECK-NEXT: [9] - ADLPPort09
30+
# CHECK-NEXT: [10] - ADLPPort10
31+
# CHECK-NEXT: [11] - ADLPPort11
32+
# CHECK-NEXT: [12] - ADLPPortInvalid
33+
34+
# CHECK: Resource pressure per iteration:
35+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]
36+
# CHECK-NEXT: - - 0.33 0.33 - 2.00 - - - - - 0.33 -
37+
38+
# CHECK: Resource pressure by instruction:
39+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] Instructions:
40+
# CHECK-NEXT: - - - - - 1.00 - - - - - - - vpclmulqdq $11, %ymm0, %ymm1, %ymm3
41+
# CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpclmulqdq $11, (%rax), %ymm1, %ymm3
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -instruction-tables < %s | FileCheck %s
3+
4+
vpclmulqdq $11, %zmm16, %zmm17, %zmm19
5+
vpclmulqdq $11, (%rax), %zmm17, %zmm19
6+
7+
# CHECK: Instruction Info:
8+
# CHECK-NEXT: [1]: #uOps
9+
# CHECK-NEXT: [2]: Latency
10+
# CHECK-NEXT: [3]: RThroughput
11+
# CHECK-NEXT: [4]: MayLoad
12+
# CHECK-NEXT: [5]: MayStore
13+
# CHECK-NEXT: [6]: HasSideEffects (U)
14+
15+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
16+
# CHECK-NEXT: 1 14 6.00 vpclmulqdq $11, %zmm16, %zmm17, %zmm19
17+
# CHECK-NEXT: 1 20 5.67 * vpclmulqdq $11, (%rax), %zmm17, %zmm19
18+
19+
# CHECK: Resources:
20+
# CHECK-NEXT: [0] - SBDivider
21+
# CHECK-NEXT: [1] - SBFPDivider
22+
# CHECK-NEXT: [2] - SBPort0
23+
# CHECK-NEXT: [3] - SBPort1
24+
# CHECK-NEXT: [4] - SBPort4
25+
# CHECK-NEXT: [5] - SBPort5
26+
# CHECK-NEXT: [6.0] - SBPort23
27+
# CHECK-NEXT: [6.1] - SBPort23
28+
29+
# CHECK: Resource pressure per iteration:
30+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
31+
# CHECK-NEXT: - - 11.67 11.67 - 11.67 0.50 0.50
32+
33+
# CHECK: Resource pressure by instruction:
34+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
35+
# CHECK-NEXT: - - 6.00 6.00 - 6.00 - - vpclmulqdq $11, %zmm16, %zmm17, %zmm19
36+
# CHECK-NEXT: - - 5.67 5.67 - 5.67 0.50 0.50 vpclmulqdq $11, (%rax), %zmm17, %zmm19
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -instruction-tables < %s | FileCheck %s
3+
4+
vpclmulqdq $11, %xmm16, %xmm17, %xmm19
5+
vpclmulqdq $11, (%rax), %xmm17, %xmm19
6+
7+
vpclmulqdq $11, %ymm16, %ymm17, %ymm19
8+
vpclmulqdq $11, (%rax), %ymm17, %ymm19
9+
10+
# CHECK: Instruction Info:
11+
# CHECK-NEXT: [1]: #uOps
12+
# CHECK-NEXT: [2]: Latency
13+
# CHECK-NEXT: [3]: RThroughput
14+
# CHECK-NEXT: [4]: MayLoad
15+
# CHECK-NEXT: [5]: MayStore
16+
# CHECK-NEXT: [6]: HasSideEffects (U)
17+
18+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
19+
# CHECK-NEXT: 1 14 6.00 vpclmulqdq $11, %xmm16, %xmm17, %xmm19
20+
# CHECK-NEXT: 1 20 5.67 * vpclmulqdq $11, (%rax), %xmm17, %xmm19
21+
# CHECK-NEXT: 1 14 6.00 vpclmulqdq $11, %ymm16, %ymm17, %ymm19
22+
# CHECK-NEXT: 1 20 5.67 * vpclmulqdq $11, (%rax), %ymm17, %ymm19
23+
24+
# CHECK: Resources:
25+
# CHECK-NEXT: [0] - SBDivider
26+
# CHECK-NEXT: [1] - SBFPDivider
27+
# CHECK-NEXT: [2] - SBPort0
28+
# CHECK-NEXT: [3] - SBPort1
29+
# CHECK-NEXT: [4] - SBPort4
30+
# CHECK-NEXT: [5] - SBPort5
31+
# CHECK-NEXT: [6.0] - SBPort23
32+
# CHECK-NEXT: [6.1] - SBPort23
33+
34+
# CHECK: Resource pressure per iteration:
35+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
36+
# CHECK-NEXT: - - 23.33 23.33 - 23.33 1.00 1.00
37+
38+
# CHECK: Resource pressure by instruction:
39+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
40+
# CHECK-NEXT: - - 6.00 6.00 - 6.00 - - vpclmulqdq $11, %xmm16, %xmm17, %xmm19
41+
# CHECK-NEXT: - - 5.67 5.67 - 5.67 0.50 0.50 vpclmulqdq $11, (%rax), %xmm17, %xmm19
42+
# CHECK-NEXT: - - 6.00 6.00 - 6.00 - - vpclmulqdq $11, %ymm16, %ymm17, %ymm19
43+
# CHECK-NEXT: - - 5.67 5.67 - 5.67 0.50 0.50 vpclmulqdq $11, (%rax), %ymm17, %ymm19
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -instruction-tables < %s | FileCheck %s
3+
4+
vpclmulqdq $11, %ymm0, %ymm1, %ymm3
5+
vpclmulqdq $11, (%rax), %ymm1, %ymm3
6+
7+
# CHECK: Instruction Info:
8+
# CHECK-NEXT: [1]: #uOps
9+
# CHECK-NEXT: [2]: Latency
10+
# CHECK-NEXT: [3]: RThroughput
11+
# CHECK-NEXT: [4]: MayLoad
12+
# CHECK-NEXT: [5]: MayStore
13+
# CHECK-NEXT: [6]: HasSideEffects (U)
14+
15+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
16+
# CHECK-NEXT: 1 14 6.00 vpclmulqdq $11, %ymm0, %ymm1, %ymm3
17+
# CHECK-NEXT: 1 20 5.67 * vpclmulqdq $11, (%rax), %ymm1, %ymm3
18+
19+
# CHECK: Resources:
20+
# CHECK-NEXT: [0] - SBDivider
21+
# CHECK-NEXT: [1] - SBFPDivider
22+
# CHECK-NEXT: [2] - SBPort0
23+
# CHECK-NEXT: [3] - SBPort1
24+
# CHECK-NEXT: [4] - SBPort4
25+
# CHECK-NEXT: [5] - SBPort5
26+
# CHECK-NEXT: [6.0] - SBPort23
27+
# CHECK-NEXT: [6.1] - SBPort23
28+
29+
# CHECK: Resource pressure per iteration:
30+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
31+
# CHECK-NEXT: - - 11.67 11.67 - 11.67 0.50 0.50
32+
33+
# CHECK: Resource pressure by instruction:
34+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
35+
# CHECK-NEXT: - - 6.00 6.00 - 6.00 - - vpclmulqdq $11, %ymm0, %ymm1, %ymm3
36+
# CHECK-NEXT: - - 5.67 5.67 - 5.67 0.50 0.50 vpclmulqdq $11, (%rax), %ymm1, %ymm3
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=icelake-server -instruction-tables < %s | FileCheck %s
3+
4+
vpclmulqdq $11, %zmm16, %zmm17, %zmm19
5+
vpclmulqdq $11, (%rax), %zmm17, %zmm19
6+
7+
# CHECK: Instruction Info:
8+
# CHECK-NEXT: [1]: #uOps
9+
# CHECK-NEXT: [2]: Latency
10+
# CHECK-NEXT: [3]: RThroughput
11+
# CHECK-NEXT: [4]: MayLoad
12+
# CHECK-NEXT: [5]: MayStore
13+
# CHECK-NEXT: [6]: HasSideEffects (U)
14+
15+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
16+
# CHECK-NEXT: 1 6 1.00 vpclmulqdq $11, %zmm16, %zmm17, %zmm19
17+
# CHECK-NEXT: 2 12 1.00 * vpclmulqdq $11, (%rax), %zmm17, %zmm19
18+
19+
# CHECK: Resources:
20+
# CHECK-NEXT: [0] - ICXDivider
21+
# CHECK-NEXT: [1] - ICXFPDivider
22+
# CHECK-NEXT: [2] - ICXPort0
23+
# CHECK-NEXT: [3] - ICXPort1
24+
# CHECK-NEXT: [4] - ICXPort2
25+
# CHECK-NEXT: [5] - ICXPort3
26+
# CHECK-NEXT: [6] - ICXPort4
27+
# CHECK-NEXT: [7] - ICXPort5
28+
# CHECK-NEXT: [8] - ICXPort6
29+
# CHECK-NEXT: [9] - ICXPort7
30+
# CHECK-NEXT: [10] - ICXPort8
31+
# CHECK-NEXT: [11] - ICXPort9
32+
33+
# CHECK: Resource pressure per iteration:
34+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
35+
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - - -
36+
37+
# CHECK: Resource pressure by instruction:
38+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
39+
# CHECK-NEXT: - - - - - - - 1.00 - - - - vpclmulqdq $11, %zmm16, %zmm17, %zmm19
40+
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpclmulqdq $11, (%rax), %zmm17, %zmm19
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=icelake-server -instruction-tables < %s | FileCheck %s
3+
4+
vpclmulqdq $11, %xmm16, %xmm17, %xmm19
5+
vpclmulqdq $11, (%rax), %xmm17, %xmm19
6+
7+
vpclmulqdq $11, %ymm16, %ymm17, %ymm19
8+
vpclmulqdq $11, (%rax), %ymm17, %ymm19
9+
10+
# CHECK: Instruction Info:
11+
# CHECK-NEXT: [1]: #uOps
12+
# CHECK-NEXT: [2]: Latency
13+
# CHECK-NEXT: [3]: RThroughput
14+
# CHECK-NEXT: [4]: MayLoad
15+
# CHECK-NEXT: [5]: MayStore
16+
# CHECK-NEXT: [6]: HasSideEffects (U)
17+
18+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
19+
# CHECK-NEXT: 1 6 1.00 vpclmulqdq $11, %xmm16, %xmm17, %xmm19
20+
# CHECK-NEXT: 2 12 1.00 * vpclmulqdq $11, (%rax), %xmm17, %xmm19
21+
# CHECK-NEXT: 1 6 1.00 vpclmulqdq $11, %ymm16, %ymm17, %ymm19
22+
# CHECK-NEXT: 2 12 1.00 * vpclmulqdq $11, (%rax), %ymm17, %ymm19
23+
24+
# CHECK: Resources:
25+
# CHECK-NEXT: [0] - ICXDivider
26+
# CHECK-NEXT: [1] - ICXFPDivider
27+
# CHECK-NEXT: [2] - ICXPort0
28+
# CHECK-NEXT: [3] - ICXPort1
29+
# CHECK-NEXT: [4] - ICXPort2
30+
# CHECK-NEXT: [5] - ICXPort3
31+
# CHECK-NEXT: [6] - ICXPort4
32+
# CHECK-NEXT: [7] - ICXPort5
33+
# CHECK-NEXT: [8] - ICXPort6
34+
# CHECK-NEXT: [9] - ICXPort7
35+
# CHECK-NEXT: [10] - ICXPort8
36+
# CHECK-NEXT: [11] - ICXPort9
37+
38+
# CHECK: Resource pressure per iteration:
39+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
40+
# CHECK-NEXT: - - - - 1.00 1.00 - 4.00 - - - -
41+
42+
# CHECK: Resource pressure by instruction:
43+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
44+
# CHECK-NEXT: - - - - - - - 1.00 - - - - vpclmulqdq $11, %xmm16, %xmm17, %xmm19
45+
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpclmulqdq $11, (%rax), %xmm17, %xmm19
46+
# CHECK-NEXT: - - - - - - - 1.00 - - - - vpclmulqdq $11, %ymm16, %ymm17, %ymm19
47+
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpclmulqdq $11, (%rax), %ymm17, %ymm19
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=icelake-server -instruction-tables < %s | FileCheck %s
3+
4+
vpclmulqdq $11, %ymm0, %ymm1, %ymm3
5+
vpclmulqdq $11, (%rax), %ymm1, %ymm3
6+
7+
# CHECK: Instruction Info:
8+
# CHECK-NEXT: [1]: #uOps
9+
# CHECK-NEXT: [2]: Latency
10+
# CHECK-NEXT: [3]: RThroughput
11+
# CHECK-NEXT: [4]: MayLoad
12+
# CHECK-NEXT: [5]: MayStore
13+
# CHECK-NEXT: [6]: HasSideEffects (U)
14+
15+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
16+
# CHECK-NEXT: 1 6 1.00 vpclmulqdq $11, %ymm0, %ymm1, %ymm3
17+
# CHECK-NEXT: 2 12 1.00 * vpclmulqdq $11, (%rax), %ymm1, %ymm3
18+
19+
# CHECK: Resources:
20+
# CHECK-NEXT: [0] - ICXDivider
21+
# CHECK-NEXT: [1] - ICXFPDivider
22+
# CHECK-NEXT: [2] - ICXPort0
23+
# CHECK-NEXT: [3] - ICXPort1
24+
# CHECK-NEXT: [4] - ICXPort2
25+
# CHECK-NEXT: [5] - ICXPort3
26+
# CHECK-NEXT: [6] - ICXPort4
27+
# CHECK-NEXT: [7] - ICXPort5
28+
# CHECK-NEXT: [8] - ICXPort6
29+
# CHECK-NEXT: [9] - ICXPort7
30+
# CHECK-NEXT: [10] - ICXPort8
31+
# CHECK-NEXT: [11] - ICXPort9
32+
33+
# CHECK: Resource pressure per iteration:
34+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
35+
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - - -
36+
37+
# CHECK: Resource pressure by instruction:
38+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
39+
# CHECK-NEXT: - - - - - - - 1.00 - - - - vpclmulqdq $11, %ymm0, %ymm1, %ymm3
40+
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpclmulqdq $11, (%rax), %ymm1, %ymm3
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=znver3 -instruction-tables < %s | FileCheck %s
3+
4+
vpclmulqdq $11, %ymm0, %ymm1, %ymm3
5+
vpclmulqdq $11, (%rax), %ymm1, %ymm3
6+
7+
# CHECK: Instruction Info:
8+
# CHECK-NEXT: [1]: #uOps
9+
# CHECK-NEXT: [2]: Latency
10+
# CHECK-NEXT: [3]: RThroughput
11+
# CHECK-NEXT: [4]: MayLoad
12+
# CHECK-NEXT: [5]: MayStore
13+
# CHECK-NEXT: [6]: HasSideEffects (U)
14+
15+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
16+
# CHECK-NEXT: 4 4 2.00 vpclmulqdq $11, %ymm0, %ymm1, %ymm3
17+
# CHECK-NEXT: 4 11 2.00 * vpclmulqdq $11, (%rax), %ymm1, %ymm3
18+
19+
# CHECK: Resources:
20+
# CHECK-NEXT: [0] - Zn3AGU0
21+
# CHECK-NEXT: [1] - Zn3AGU1
22+
# CHECK-NEXT: [2] - Zn3AGU2
23+
# CHECK-NEXT: [3] - Zn3ALU0
24+
# CHECK-NEXT: [4] - Zn3ALU1
25+
# CHECK-NEXT: [5] - Zn3ALU2
26+
# CHECK-NEXT: [6] - Zn3ALU3
27+
# CHECK-NEXT: [7] - Zn3BRU1
28+
# CHECK-NEXT: [8] - Zn3FPP0
29+
# CHECK-NEXT: [9] - Zn3FPP1
30+
# CHECK-NEXT: [10] - Zn3FPP2
31+
# CHECK-NEXT: [11] - Zn3FPP3
32+
# CHECK-NEXT: [12.0] - Zn3FPP45
33+
# CHECK-NEXT: [12.1] - Zn3FPP45
34+
# CHECK-NEXT: [13] - Zn3FPSt
35+
# CHECK-NEXT: [14.0] - Zn3LSU
36+
# CHECK-NEXT: [14.1] - Zn3LSU
37+
# CHECK-NEXT: [14.2] - Zn3LSU
38+
# CHECK-NEXT: [15.0] - Zn3Load
39+
# CHECK-NEXT: [15.1] - Zn3Load
40+
# CHECK-NEXT: [15.2] - Zn3Load
41+
# CHECK-NEXT: [16.0] - Zn3Store
42+
# CHECK-NEXT: [16.1] - Zn3Store
43+
44+
# CHECK: Resource pressure per iteration:
45+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1]
46+
# CHECK-NEXT: - - - - - - - - 4.00 4.00 - - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - -
47+
48+
# CHECK: Resource pressure by instruction:
49+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1] Instructions:
50+
# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - - - - - - - - vpclmulqdq $11, %ymm0, %ymm1, %ymm3
51+
# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpclmulqdq $11, (%rax), %ymm1, %ymm3

0 commit comments

Comments
 (0)