Skip to content

Commit 421bdc1

Browse files
committed
[MCA][X86] Add test coverage for IFMA instructions
1 parent 3b48a97 commit 421bdc1

File tree

4 files changed

+460
-0
lines changed

4 files changed

+460
-0
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
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+
vpmadd52huq %zmm16, %zmm17, %zmm19
5+
vpmadd52huq (%rdi), %zmm17, %zmm19
6+
vpmadd52huq (%rdi){1to8}, %zmm17, %zmm19
7+
vpmadd52huq %zmm16, %zmm17, %zmm19 {%k1}
8+
vpmadd52huq (%rdi), %zmm17, %zmm19 {%k1}
9+
vpmadd52huq (%rdi){1to8}, %zmm17, %zmm19 {%k1}
10+
vpmadd52huq %zmm16, %zmm17, %zmm19 {%k1} {z}
11+
vpmadd52huq (%rdi), %zmm17, %zmm19 {%k1} {z}
12+
vpmadd52huq (%rdi){1to8}, %zmm17, %zmm19 {%k1} {z}
13+
14+
vpmadd52luq %zmm16, %zmm17, %zmm19
15+
vpmadd52luq (%rdi), %zmm17, %zmm19
16+
vpmadd52luq (%rdi){1to8}, %zmm17, %zmm19
17+
vpmadd52luq %zmm16, %zmm17, %zmm19 {%k1}
18+
vpmadd52luq (%rdi), %zmm17, %zmm19 {%k1}
19+
vpmadd52luq (%rdi){1to8}, %zmm17, %zmm19 {%k1}
20+
vpmadd52luq %zmm16, %zmm17, %zmm19 {%k1} {z}
21+
vpmadd52luq (%rdi), %zmm17, %zmm19 {%k1} {z}
22+
vpmadd52luq (%rdi){1to8}, %zmm17, %zmm19 {%k1} {z}
23+
24+
# CHECK: Instruction Info:
25+
# CHECK-NEXT: [1]: #uOps
26+
# CHECK-NEXT: [2]: Latency
27+
# CHECK-NEXT: [3]: RThroughput
28+
# CHECK-NEXT: [4]: MayLoad
29+
# CHECK-NEXT: [5]: MayStore
30+
# CHECK-NEXT: [6]: HasSideEffects (U)
31+
32+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
33+
# CHECK-NEXT: 1 5 1.00 vpmadd52huq %zmm16, %zmm17, %zmm19
34+
# CHECK-NEXT: 2 12 1.00 * vpmadd52huq (%rdi), %zmm17, %zmm19
35+
# CHECK-NEXT: 2 12 1.00 * vpmadd52huq (%rdi){1to8}, %zmm17, %zmm19
36+
# CHECK-NEXT: 1 5 1.00 vpmadd52huq %zmm16, %zmm17, %zmm19 {%k1}
37+
# CHECK-NEXT: 2 12 1.00 * vpmadd52huq (%rdi), %zmm17, %zmm19 {%k1}
38+
# CHECK-NEXT: 2 12 1.00 * vpmadd52huq (%rdi){1to8}, %zmm17, %zmm19 {%k1}
39+
# CHECK-NEXT: 1 5 1.00 vpmadd52huq %zmm16, %zmm17, %zmm19 {%k1} {z}
40+
# CHECK-NEXT: 2 12 1.00 * vpmadd52huq (%rdi), %zmm17, %zmm19 {%k1} {z}
41+
# CHECK-NEXT: 2 12 1.00 * vpmadd52huq (%rdi){1to8}, %zmm17, %zmm19 {%k1} {z}
42+
# CHECK-NEXT: 1 5 1.00 vpmadd52luq %zmm16, %zmm17, %zmm19
43+
# CHECK-NEXT: 2 12 1.00 * vpmadd52luq (%rdi), %zmm17, %zmm19
44+
# CHECK-NEXT: 2 12 1.00 * vpmadd52luq (%rdi){1to8}, %zmm17, %zmm19
45+
# CHECK-NEXT: 1 5 1.00 vpmadd52luq %zmm16, %zmm17, %zmm19 {%k1}
46+
# CHECK-NEXT: 2 12 1.00 * vpmadd52luq (%rdi), %zmm17, %zmm19 {%k1}
47+
# CHECK-NEXT: 2 12 1.00 * vpmadd52luq (%rdi){1to8}, %zmm17, %zmm19 {%k1}
48+
# CHECK-NEXT: 1 5 1.00 vpmadd52luq %zmm16, %zmm17, %zmm19 {%k1} {z}
49+
# CHECK-NEXT: 2 12 1.00 * vpmadd52luq (%rdi), %zmm17, %zmm19 {%k1} {z}
50+
# CHECK-NEXT: 2 12 1.00 * vpmadd52luq (%rdi){1to8}, %zmm17, %zmm19 {%k1} {z}
51+
52+
# CHECK: Resources:
53+
# CHECK-NEXT: [0] - SBDivider
54+
# CHECK-NEXT: [1] - SBFPDivider
55+
# CHECK-NEXT: [2] - SBPort0
56+
# CHECK-NEXT: [3] - SBPort1
57+
# CHECK-NEXT: [4] - SBPort4
58+
# CHECK-NEXT: [5] - SBPort5
59+
# CHECK-NEXT: [6.0] - SBPort23
60+
# CHECK-NEXT: [6.1] - SBPort23
61+
62+
# CHECK: Resource pressure per iteration:
63+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
64+
# CHECK-NEXT: - - 18.00 - - - 6.00 6.00
65+
66+
# CHECK: Resource pressure by instruction:
67+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
68+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52huq %zmm16, %zmm17, %zmm19
69+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi), %zmm17, %zmm19
70+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi){1to8}, %zmm17, %zmm19
71+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52huq %zmm16, %zmm17, %zmm19 {%k1}
72+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi), %zmm17, %zmm19 {%k1}
73+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi){1to8}, %zmm17, %zmm19 {%k1}
74+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52huq %zmm16, %zmm17, %zmm19 {%k1} {z}
75+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi), %zmm17, %zmm19 {%k1} {z}
76+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi){1to8}, %zmm17, %zmm19 {%k1} {z}
77+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52luq %zmm16, %zmm17, %zmm19
78+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi), %zmm17, %zmm19
79+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi){1to8}, %zmm17, %zmm19
80+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52luq %zmm16, %zmm17, %zmm19 {%k1}
81+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi), %zmm17, %zmm19 {%k1}
82+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi){1to8}, %zmm17, %zmm19 {%k1}
83+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52luq %zmm16, %zmm17, %zmm19 {%k1} {z}
84+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi), %zmm17, %zmm19 {%k1} {z}
85+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi){1to8}, %zmm17, %zmm19 {%k1} {z}
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
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+
vpmadd52huq %xmm16, %xmm17, %xmm19
5+
vpmadd52huq (%rdi), %xmm17, %xmm19
6+
vpmadd52huq (%rdi){1to2}, %xmm17, %xmm19
7+
vpmadd52huq %xmm16, %xmm17, %xmm19 {%k1}
8+
vpmadd52huq (%rdi), %xmm17, %xmm19 {%k1}
9+
vpmadd52huq (%rdi){1to2}, %xmm17, %xmm19 {%k1}
10+
vpmadd52huq %xmm16, %xmm17, %xmm19 {%k1} {z}
11+
vpmadd52huq (%rdi), %xmm17, %xmm19 {%k1} {z}
12+
vpmadd52huq (%rdi){1to2}, %xmm17, %xmm19 {%k1} {z}
13+
14+
vpmadd52huq %ymm16, %ymm17, %ymm19
15+
vpmadd52huq (%rdi), %ymm17, %ymm19
16+
vpmadd52huq (%rdi){1to4}, %ymm17, %ymm19
17+
vpmadd52huq %ymm16, %ymm17, %ymm19 {%k1}
18+
vpmadd52huq (%rdi), %ymm17, %ymm19 {%k1}
19+
vpmadd52huq (%rdi){1to4}, %ymm17, %ymm19 {%k1}
20+
vpmadd52huq %ymm16, %ymm17, %ymm19 {%k1} {z}
21+
vpmadd52huq (%rdi), %ymm17, %ymm19 {%k1} {z}
22+
vpmadd52huq (%rdi){1to4}, %ymm17, %ymm19 {%k1} {z}
23+
24+
vpmadd52luq %xmm16, %xmm17, %xmm19
25+
vpmadd52luq (%rdi), %xmm17, %xmm19
26+
vpmadd52luq (%rdi){1to2}, %xmm17, %xmm19
27+
vpmadd52luq %xmm16, %xmm17, %xmm19 {%k1}
28+
vpmadd52luq (%rdi), %xmm17, %xmm19 {%k1}
29+
vpmadd52luq (%rdi){1to2}, %xmm17, %xmm19 {%k1}
30+
vpmadd52luq %xmm16, %xmm17, %xmm19 {%k1} {z}
31+
vpmadd52luq (%rdi), %xmm17, %xmm19 {%k1} {z}
32+
vpmadd52luq (%rdi){1to2}, %xmm17, %xmm19 {%k1} {z}
33+
34+
vpmadd52luq %ymm16, %ymm17, %ymm19
35+
vpmadd52luq (%rdi), %ymm17, %ymm19
36+
vpmadd52luq (%rdi){1to4}, %ymm17, %ymm19
37+
vpmadd52luq %ymm16, %ymm17, %ymm19 {%k1}
38+
vpmadd52luq (%rdi), %ymm17, %ymm19 {%k1}
39+
vpmadd52luq (%rdi){1to4}, %ymm17, %ymm19 {%k1}
40+
vpmadd52luq %ymm16, %ymm17, %ymm19 {%k1} {z}
41+
vpmadd52luq (%rdi), %ymm17, %ymm19 {%k1} {z}
42+
vpmadd52luq (%rdi){1to4}, %ymm17, %ymm19 {%k1} {z}
43+
44+
# CHECK: Instruction Info:
45+
# CHECK-NEXT: [1]: #uOps
46+
# CHECK-NEXT: [2]: Latency
47+
# CHECK-NEXT: [3]: RThroughput
48+
# CHECK-NEXT: [4]: MayLoad
49+
# CHECK-NEXT: [5]: MayStore
50+
# CHECK-NEXT: [6]: HasSideEffects (U)
51+
52+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
53+
# CHECK-NEXT: 1 5 1.00 vpmadd52huq %xmm16, %xmm17, %xmm19
54+
# CHECK-NEXT: 2 11 1.00 * vpmadd52huq (%rdi), %xmm17, %xmm19
55+
# CHECK-NEXT: 2 11 1.00 * vpmadd52huq (%rdi){1to2}, %xmm17, %xmm19
56+
# CHECK-NEXT: 1 5 1.00 vpmadd52huq %xmm16, %xmm17, %xmm19 {%k1}
57+
# CHECK-NEXT: 2 11 1.00 * vpmadd52huq (%rdi), %xmm17, %xmm19 {%k1}
58+
# CHECK-NEXT: 2 11 1.00 * vpmadd52huq (%rdi){1to2}, %xmm17, %xmm19 {%k1}
59+
# CHECK-NEXT: 1 5 1.00 vpmadd52huq %xmm16, %xmm17, %xmm19 {%k1} {z}
60+
# CHECK-NEXT: 2 11 1.00 * vpmadd52huq (%rdi), %xmm17, %xmm19 {%k1} {z}
61+
# CHECK-NEXT: 2 11 1.00 * vpmadd52huq (%rdi){1to2}, %xmm17, %xmm19 {%k1} {z}
62+
# CHECK-NEXT: 1 5 1.00 vpmadd52huq %ymm16, %ymm17, %ymm19
63+
# CHECK-NEXT: 2 12 1.00 * vpmadd52huq (%rdi), %ymm17, %ymm19
64+
# CHECK-NEXT: 2 12 1.00 * vpmadd52huq (%rdi){1to4}, %ymm17, %ymm19
65+
# CHECK-NEXT: 1 5 1.00 vpmadd52huq %ymm16, %ymm17, %ymm19 {%k1}
66+
# CHECK-NEXT: 2 12 1.00 * vpmadd52huq (%rdi), %ymm17, %ymm19 {%k1}
67+
# CHECK-NEXT: 2 12 1.00 * vpmadd52huq (%rdi){1to4}, %ymm17, %ymm19 {%k1}
68+
# CHECK-NEXT: 1 5 1.00 vpmadd52huq %ymm16, %ymm17, %ymm19 {%k1} {z}
69+
# CHECK-NEXT: 2 12 1.00 * vpmadd52huq (%rdi), %ymm17, %ymm19 {%k1} {z}
70+
# CHECK-NEXT: 2 12 1.00 * vpmadd52huq (%rdi){1to4}, %ymm17, %ymm19 {%k1} {z}
71+
# CHECK-NEXT: 1 5 1.00 vpmadd52luq %xmm16, %xmm17, %xmm19
72+
# CHECK-NEXT: 2 11 1.00 * vpmadd52luq (%rdi), %xmm17, %xmm19
73+
# CHECK-NEXT: 2 11 1.00 * vpmadd52luq (%rdi){1to2}, %xmm17, %xmm19
74+
# CHECK-NEXT: 1 5 1.00 vpmadd52luq %xmm16, %xmm17, %xmm19 {%k1}
75+
# CHECK-NEXT: 2 11 1.00 * vpmadd52luq (%rdi), %xmm17, %xmm19 {%k1}
76+
# CHECK-NEXT: 2 11 1.00 * vpmadd52luq (%rdi){1to2}, %xmm17, %xmm19 {%k1}
77+
# CHECK-NEXT: 1 5 1.00 vpmadd52luq %xmm16, %xmm17, %xmm19 {%k1} {z}
78+
# CHECK-NEXT: 2 11 1.00 * vpmadd52luq (%rdi), %xmm17, %xmm19 {%k1} {z}
79+
# CHECK-NEXT: 2 11 1.00 * vpmadd52luq (%rdi){1to2}, %xmm17, %xmm19 {%k1} {z}
80+
# CHECK-NEXT: 1 5 1.00 vpmadd52luq %ymm16, %ymm17, %ymm19
81+
# CHECK-NEXT: 2 12 1.00 * vpmadd52luq (%rdi), %ymm17, %ymm19
82+
# CHECK-NEXT: 2 12 1.00 * vpmadd52luq (%rdi){1to4}, %ymm17, %ymm19
83+
# CHECK-NEXT: 1 5 1.00 vpmadd52luq %ymm16, %ymm17, %ymm19 {%k1}
84+
# CHECK-NEXT: 2 12 1.00 * vpmadd52luq (%rdi), %ymm17, %ymm19 {%k1}
85+
# CHECK-NEXT: 2 12 1.00 * vpmadd52luq (%rdi){1to4}, %ymm17, %ymm19 {%k1}
86+
# CHECK-NEXT: 1 5 1.00 vpmadd52luq %ymm16, %ymm17, %ymm19 {%k1} {z}
87+
# CHECK-NEXT: 2 12 1.00 * vpmadd52luq (%rdi), %ymm17, %ymm19 {%k1} {z}
88+
# CHECK-NEXT: 2 12 1.00 * vpmadd52luq (%rdi){1to4}, %ymm17, %ymm19 {%k1} {z}
89+
90+
# CHECK: Resources:
91+
# CHECK-NEXT: [0] - SBDivider
92+
# CHECK-NEXT: [1] - SBFPDivider
93+
# CHECK-NEXT: [2] - SBPort0
94+
# CHECK-NEXT: [3] - SBPort1
95+
# CHECK-NEXT: [4] - SBPort4
96+
# CHECK-NEXT: [5] - SBPort5
97+
# CHECK-NEXT: [6.0] - SBPort23
98+
# CHECK-NEXT: [6.1] - SBPort23
99+
100+
# CHECK: Resource pressure per iteration:
101+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
102+
# CHECK-NEXT: - - 36.00 - - - 12.00 12.00
103+
104+
# CHECK: Resource pressure by instruction:
105+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
106+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52huq %xmm16, %xmm17, %xmm19
107+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi), %xmm17, %xmm19
108+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi){1to2}, %xmm17, %xmm19
109+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52huq %xmm16, %xmm17, %xmm19 {%k1}
110+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi), %xmm17, %xmm19 {%k1}
111+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi){1to2}, %xmm17, %xmm19 {%k1}
112+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52huq %xmm16, %xmm17, %xmm19 {%k1} {z}
113+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi), %xmm17, %xmm19 {%k1} {z}
114+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi){1to2}, %xmm17, %xmm19 {%k1} {z}
115+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52huq %ymm16, %ymm17, %ymm19
116+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi), %ymm17, %ymm19
117+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi){1to4}, %ymm17, %ymm19
118+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52huq %ymm16, %ymm17, %ymm19 {%k1}
119+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi), %ymm17, %ymm19 {%k1}
120+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi){1to4}, %ymm17, %ymm19 {%k1}
121+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52huq %ymm16, %ymm17, %ymm19 {%k1} {z}
122+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi), %ymm17, %ymm19 {%k1} {z}
123+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52huq (%rdi){1to4}, %ymm17, %ymm19 {%k1} {z}
124+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52luq %xmm16, %xmm17, %xmm19
125+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi), %xmm17, %xmm19
126+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi){1to2}, %xmm17, %xmm19
127+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52luq %xmm16, %xmm17, %xmm19 {%k1}
128+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi), %xmm17, %xmm19 {%k1}
129+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi){1to2}, %xmm17, %xmm19 {%k1}
130+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52luq %xmm16, %xmm17, %xmm19 {%k1} {z}
131+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi), %xmm17, %xmm19 {%k1} {z}
132+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi){1to2}, %xmm17, %xmm19 {%k1} {z}
133+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52luq %ymm16, %ymm17, %ymm19
134+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi), %ymm17, %ymm19
135+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi){1to4}, %ymm17, %ymm19
136+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52luq %ymm16, %ymm17, %ymm19 {%k1}
137+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi), %ymm17, %ymm19 {%k1}
138+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi){1to4}, %ymm17, %ymm19 {%k1}
139+
# CHECK-NEXT: - - 1.00 - - - - - vpmadd52luq %ymm16, %ymm17, %ymm19 {%k1} {z}
140+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi), %ymm17, %ymm19 {%k1} {z}
141+
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vpmadd52luq (%rdi){1to4}, %ymm17, %ymm19 {%k1} {z}

0 commit comments

Comments
 (0)