Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / tools / llvm-mca / X86 / Generic / resources-avx512vbmivl.s
blob114e4fd35177f2995a68b13de2336a7dbfe4bc01
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
4 vpermb %xmm16, %xmm17, %xmm19
5 vpermb (%rax), %xmm17, %xmm19
6 vpermb %xmm16, %xmm17, %xmm19 {k1}
7 vpermb (%rax), %xmm17, %xmm19 {k1}
8 vpermb %xmm16, %xmm17, %xmm19 {k1}{z}
9 vpermb (%rax), %xmm17, %xmm19 {k1}{z}
11 vpermb %ymm16, %ymm17, %ymm19
12 vpermb (%rax), %ymm17, %ymm19
13 vpermb %ymm16, %ymm17, %ymm19 {k1}
14 vpermb (%rax), %ymm17, %ymm19 {k1}
15 vpermb %ymm16, %ymm17, %ymm19 {k1}{z}
16 vpermb (%rax), %ymm17, %ymm19 {k1}{z}
18 vpermi2b %xmm16, %xmm17, %xmm19
19 vpermi2b (%rax), %xmm17, %xmm19
20 vpermi2b %xmm16, %xmm17, %xmm19 {k1}
21 vpermi2b (%rax), %xmm17, %xmm19 {k1}
22 vpermi2b %xmm16, %xmm17, %xmm19 {k1}{z}
23 vpermi2b (%rax), %xmm17, %xmm19 {k1}{z}
25 vpermi2b %ymm16, %ymm17, %ymm19
26 vpermi2b (%rax), %ymm17, %ymm19
27 vpermi2b %ymm16, %ymm17, %ymm19 {k1}
28 vpermi2b (%rax), %ymm17, %ymm19 {k1}
29 vpermi2b %ymm16, %ymm17, %ymm19 {k1}{z}
30 vpermi2b (%rax), %ymm17, %ymm19 {k1}{z}
32 vpermt2b %xmm16, %xmm17, %xmm19
33 vpermt2b (%rax), %xmm17, %xmm19
34 vpermt2b %xmm16, %xmm17, %xmm19 {k1}
35 vpermt2b (%rax), %xmm17, %xmm19 {k1}
36 vpermt2b %xmm16, %xmm17, %xmm19 {k1}{z}
37 vpermt2b (%rax), %xmm17, %xmm19 {k1}{z}
39 vpermt2b %ymm16, %ymm17, %ymm19
40 vpermt2b (%rax), %ymm17, %ymm19
41 vpermt2b %ymm16, %ymm17, %ymm19 {k1}
42 vpermt2b (%rax), %ymm17, %ymm19 {k1}
43 vpermt2b %ymm16, %ymm17, %ymm19 {k1}{z}
44 vpermt2b (%rax), %ymm17, %ymm19 {k1}{z}
46 vpmultishiftqb %xmm16, %xmm17, %xmm19
47 vpmultishiftqb (%rax), %xmm17, %xmm19
48 vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19
49 vpmultishiftqb %xmm16, %xmm17, %xmm19 {k1}
50 vpmultishiftqb (%rax), %xmm17, %xmm19 {k1}
51 vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {k1}
52 vpmultishiftqb %xmm16, %xmm17, %xmm19 {k1}{z}
53 vpmultishiftqb (%rax), %xmm17, %xmm19 {k1}{z}
54 vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {k1}{z}
56 vpmultishiftqb %ymm16, %ymm17, %ymm19
57 vpmultishiftqb (%rax), %ymm17, %ymm19
58 vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19
59 vpmultishiftqb %ymm16, %ymm17, %ymm19 {k1}
60 vpmultishiftqb (%rax), %ymm17, %ymm19 {k1}
61 vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {k1}
62 vpmultishiftqb %ymm16, %ymm17, %ymm19 {k1}{z}
63 vpmultishiftqb (%rax), %ymm17, %ymm19 {k1}{z}
64 vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {k1}{z}
66 # CHECK: Instruction Info:
67 # CHECK-NEXT: [1]: #uOps
68 # CHECK-NEXT: [2]: Latency
69 # CHECK-NEXT: [3]: RThroughput
70 # CHECK-NEXT: [4]: MayLoad
71 # CHECK-NEXT: [5]: MayStore
72 # CHECK-NEXT: [6]: HasSideEffects (U)
74 # CHECK: [1] [2] [3] [4] [5] [6] Instructions:
75 # CHECK-NEXT: 1 1 1.00 vpermb %xmm16, %xmm17, %xmm19
76 # CHECK-NEXT: 2 8 1.00 * vpermb (%rax), %xmm17, %xmm19
77 # CHECK-NEXT: 1 1 1.00 vpermb %xmm16, %xmm17, %xmm19 {%k1}
78 # CHECK-NEXT: 2 8 1.00 * vpermb (%rax), %xmm17, %xmm19 {%k1}
79 # CHECK-NEXT: 1 1 1.00 vpermb %xmm16, %xmm17, %xmm19 {%k1} {z}
80 # CHECK-NEXT: 2 8 1.00 * vpermb (%rax), %xmm17, %xmm19 {%k1} {z}
81 # CHECK-NEXT: 1 1 1.00 vpermb %ymm16, %ymm17, %ymm19
82 # CHECK-NEXT: 2 8 1.00 * vpermb (%rax), %ymm17, %ymm19
83 # CHECK-NEXT: 1 1 1.00 vpermb %ymm16, %ymm17, %ymm19 {%k1}
84 # CHECK-NEXT: 2 8 1.00 * vpermb (%rax), %ymm17, %ymm19 {%k1}
85 # CHECK-NEXT: 1 1 1.00 vpermb %ymm16, %ymm17, %ymm19 {%k1} {z}
86 # CHECK-NEXT: 2 8 1.00 * vpermb (%rax), %ymm17, %ymm19 {%k1} {z}
87 # CHECK-NEXT: 1 1 1.00 vpermi2b %xmm16, %xmm17, %xmm19
88 # CHECK-NEXT: 2 8 1.00 * vpermi2b (%rax), %xmm17, %xmm19
89 # CHECK-NEXT: 1 1 1.00 vpermi2b %xmm16, %xmm17, %xmm19 {%k1}
90 # CHECK-NEXT: 2 8 1.00 * vpermi2b (%rax), %xmm17, %xmm19 {%k1}
91 # CHECK-NEXT: 1 1 1.00 vpermi2b %xmm16, %xmm17, %xmm19 {%k1} {z}
92 # CHECK-NEXT: 2 8 1.00 * vpermi2b (%rax), %xmm17, %xmm19 {%k1} {z}
93 # CHECK-NEXT: 1 1 1.00 vpermi2b %ymm16, %ymm17, %ymm19
94 # CHECK-NEXT: 2 8 1.00 * vpermi2b (%rax), %ymm17, %ymm19
95 # CHECK-NEXT: 1 1 1.00 vpermi2b %ymm16, %ymm17, %ymm19 {%k1}
96 # CHECK-NEXT: 2 8 1.00 * vpermi2b (%rax), %ymm17, %ymm19 {%k1}
97 # CHECK-NEXT: 1 1 1.00 vpermi2b %ymm16, %ymm17, %ymm19 {%k1} {z}
98 # CHECK-NEXT: 2 8 1.00 * vpermi2b (%rax), %ymm17, %ymm19 {%k1} {z}
99 # CHECK-NEXT: 1 1 1.00 vpermt2b %xmm16, %xmm17, %xmm19
100 # CHECK-NEXT: 2 8 1.00 * vpermt2b (%rax), %xmm17, %xmm19
101 # CHECK-NEXT: 1 1 1.00 vpermt2b %xmm16, %xmm17, %xmm19 {%k1}
102 # CHECK-NEXT: 2 8 1.00 * vpermt2b (%rax), %xmm17, %xmm19 {%k1}
103 # CHECK-NEXT: 1 1 1.00 vpermt2b %xmm16, %xmm17, %xmm19 {%k1} {z}
104 # CHECK-NEXT: 2 8 1.00 * vpermt2b (%rax), %xmm17, %xmm19 {%k1} {z}
105 # CHECK-NEXT: 1 1 1.00 vpermt2b %ymm16, %ymm17, %ymm19
106 # CHECK-NEXT: 2 8 1.00 * vpermt2b (%rax), %ymm17, %ymm19
107 # CHECK-NEXT: 1 1 1.00 vpermt2b %ymm16, %ymm17, %ymm19 {%k1}
108 # CHECK-NEXT: 2 8 1.00 * vpermt2b (%rax), %ymm17, %ymm19 {%k1}
109 # CHECK-NEXT: 1 1 1.00 vpermt2b %ymm16, %ymm17, %ymm19 {%k1} {z}
110 # CHECK-NEXT: 2 8 1.00 * vpermt2b (%rax), %ymm17, %ymm19 {%k1} {z}
111 # CHECK-NEXT: 1 1 0.50 vpmultishiftqb %xmm16, %xmm17, %xmm19
112 # CHECK-NEXT: 2 7 0.50 * vpmultishiftqb (%rax), %xmm17, %xmm19
113 # CHECK-NEXT: 2 7 0.50 * vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19
114 # CHECK-NEXT: 1 1 0.50 vpmultishiftqb %xmm16, %xmm17, %xmm19 {%k1}
115 # CHECK-NEXT: 2 7 0.50 * vpmultishiftqb (%rax), %xmm17, %xmm19 {%k1}
116 # CHECK-NEXT: 2 7 0.50 * vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {%k1}
117 # CHECK-NEXT: 1 1 0.50 vpmultishiftqb %xmm16, %xmm17, %xmm19 {%k1} {z}
118 # CHECK-NEXT: 2 7 0.50 * vpmultishiftqb (%rax), %xmm17, %xmm19 {%k1} {z}
119 # CHECK-NEXT: 2 7 0.50 * vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {%k1} {z}
120 # CHECK-NEXT: 1 1 0.50 vpmultishiftqb %ymm16, %ymm17, %ymm19
121 # CHECK-NEXT: 2 8 0.50 * vpmultishiftqb (%rax), %ymm17, %ymm19
122 # CHECK-NEXT: 2 8 0.50 * vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19
123 # CHECK-NEXT: 1 1 0.50 vpmultishiftqb %ymm16, %ymm17, %ymm19 {%k1}
124 # CHECK-NEXT: 2 8 0.50 * vpmultishiftqb (%rax), %ymm17, %ymm19 {%k1}
125 # CHECK-NEXT: 2 8 0.50 * vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {%k1}
126 # CHECK-NEXT: 1 1 0.50 vpmultishiftqb %ymm16, %ymm17, %ymm19 {%k1} {z}
127 # CHECK-NEXT: 2 8 0.50 * vpmultishiftqb (%rax), %ymm17, %ymm19 {%k1} {z}
128 # CHECK-NEXT: 2 8 0.50 * vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
130 # CHECK: Resources:
131 # CHECK-NEXT: [0] - SBDivider
132 # CHECK-NEXT: [1] - SBFPDivider
133 # CHECK-NEXT: [2] - SBPort0
134 # CHECK-NEXT: [3] - SBPort1
135 # CHECK-NEXT: [4] - SBPort4
136 # CHECK-NEXT: [5] - SBPort5
137 # CHECK-NEXT: [6.0] - SBPort23
138 # CHECK-NEXT: [6.1] - SBPort23
140 # CHECK: Resource pressure per iteration:
141 # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
142 # CHECK-NEXT: - - - 9.00 - 45.00 15.00 15.00
144 # CHECK: Resource pressure by instruction:
145 # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
146 # CHECK-NEXT: - - - - - 1.00 - - vpermb %xmm16, %xmm17, %xmm19
147 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermb (%rax), %xmm17, %xmm19
148 # CHECK-NEXT: - - - - - 1.00 - - vpermb %xmm16, %xmm17, %xmm19 {%k1}
149 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermb (%rax), %xmm17, %xmm19 {%k1}
150 # CHECK-NEXT: - - - - - 1.00 - - vpermb %xmm16, %xmm17, %xmm19 {%k1} {z}
151 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermb (%rax), %xmm17, %xmm19 {%k1} {z}
152 # CHECK-NEXT: - - - - - 1.00 - - vpermb %ymm16, %ymm17, %ymm19
153 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermb (%rax), %ymm17, %ymm19
154 # CHECK-NEXT: - - - - - 1.00 - - vpermb %ymm16, %ymm17, %ymm19 {%k1}
155 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermb (%rax), %ymm17, %ymm19 {%k1}
156 # CHECK-NEXT: - - - - - 1.00 - - vpermb %ymm16, %ymm17, %ymm19 {%k1} {z}
157 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermb (%rax), %ymm17, %ymm19 {%k1} {z}
158 # CHECK-NEXT: - - - - - 1.00 - - vpermi2b %xmm16, %xmm17, %xmm19
159 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermi2b (%rax), %xmm17, %xmm19
160 # CHECK-NEXT: - - - - - 1.00 - - vpermi2b %xmm16, %xmm17, %xmm19 {%k1}
161 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermi2b (%rax), %xmm17, %xmm19 {%k1}
162 # CHECK-NEXT: - - - - - 1.00 - - vpermi2b %xmm16, %xmm17, %xmm19 {%k1} {z}
163 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermi2b (%rax), %xmm17, %xmm19 {%k1} {z}
164 # CHECK-NEXT: - - - - - 1.00 - - vpermi2b %ymm16, %ymm17, %ymm19
165 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermi2b (%rax), %ymm17, %ymm19
166 # CHECK-NEXT: - - - - - 1.00 - - vpermi2b %ymm16, %ymm17, %ymm19 {%k1}
167 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermi2b (%rax), %ymm17, %ymm19 {%k1}
168 # CHECK-NEXT: - - - - - 1.00 - - vpermi2b %ymm16, %ymm17, %ymm19 {%k1} {z}
169 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermi2b (%rax), %ymm17, %ymm19 {%k1} {z}
170 # CHECK-NEXT: - - - - - 1.00 - - vpermt2b %xmm16, %xmm17, %xmm19
171 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermt2b (%rax), %xmm17, %xmm19
172 # CHECK-NEXT: - - - - - 1.00 - - vpermt2b %xmm16, %xmm17, %xmm19 {%k1}
173 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermt2b (%rax), %xmm17, %xmm19 {%k1}
174 # CHECK-NEXT: - - - - - 1.00 - - vpermt2b %xmm16, %xmm17, %xmm19 {%k1} {z}
175 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermt2b (%rax), %xmm17, %xmm19 {%k1} {z}
176 # CHECK-NEXT: - - - - - 1.00 - - vpermt2b %ymm16, %ymm17, %ymm19
177 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermt2b (%rax), %ymm17, %ymm19
178 # CHECK-NEXT: - - - - - 1.00 - - vpermt2b %ymm16, %ymm17, %ymm19 {%k1}
179 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermt2b (%rax), %ymm17, %ymm19 {%k1}
180 # CHECK-NEXT: - - - - - 1.00 - - vpermt2b %ymm16, %ymm17, %ymm19 {%k1} {z}
181 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermt2b (%rax), %ymm17, %ymm19 {%k1} {z}
182 # CHECK-NEXT: - - - 0.50 - 0.50 - - vpmultishiftqb %xmm16, %xmm17, %xmm19
183 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpmultishiftqb (%rax), %xmm17, %xmm19
184 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19
185 # CHECK-NEXT: - - - 0.50 - 0.50 - - vpmultishiftqb %xmm16, %xmm17, %xmm19 {%k1}
186 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpmultishiftqb (%rax), %xmm17, %xmm19 {%k1}
187 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {%k1}
188 # CHECK-NEXT: - - - 0.50 - 0.50 - - vpmultishiftqb %xmm16, %xmm17, %xmm19 {%k1} {z}
189 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpmultishiftqb (%rax), %xmm17, %xmm19 {%k1} {z}
190 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {%k1} {z}
191 # CHECK-NEXT: - - - 0.50 - 0.50 - - vpmultishiftqb %ymm16, %ymm17, %ymm19
192 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpmultishiftqb (%rax), %ymm17, %ymm19
193 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19
194 # CHECK-NEXT: - - - 0.50 - 0.50 - - vpmultishiftqb %ymm16, %ymm17, %ymm19 {%k1}
195 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpmultishiftqb (%rax), %ymm17, %ymm19 {%k1}
196 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {%k1}
197 # CHECK-NEXT: - - - 0.50 - 0.50 - - vpmultishiftqb %ymm16, %ymm17, %ymm19 {%k1} {z}
198 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpmultishiftqb (%rax), %ymm17, %ymm19 {%k1} {z}
199 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}