Skip to content

Commit 4c85412

Browse files
committed
[MCA][X86] Add test coverage for AVX512CD instructions
1 parent 396ead9 commit 4c85412

File tree

6 files changed

+1260
-0
lines changed

6 files changed

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

0 commit comments

Comments
 (0)