Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / tools / llvm-mca / X86 / SapphireRapids / resources-avx512vbmivl.s
blob5be411d906dc6dd2cdcafaeb858c3d78582c88c1
1 # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2 # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=sapphirerapids -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 3 1.00 vpermb %xmm16, %xmm17, %xmm19
76 # CHECK-NEXT: 2 10 1.00 * vpermb (%rax), %xmm17, %xmm19
77 # CHECK-NEXT: 1 5 1.00 vpermb %xmm16, %xmm17, %xmm19 {%k1}
78 # CHECK-NEXT: 2 13 1.00 * vpermb (%rax), %xmm17, %xmm19 {%k1}
79 # CHECK-NEXT: 1 5 1.00 vpermb %xmm16, %xmm17, %xmm19 {%k1} {z}
80 # CHECK-NEXT: 2 13 1.00 * vpermb (%rax), %xmm17, %xmm19 {%k1} {z}
81 # CHECK-NEXT: 1 3 1.00 vpermb %ymm16, %ymm17, %ymm19
82 # CHECK-NEXT: 2 11 1.00 * vpermb (%rax), %ymm17, %ymm19
83 # CHECK-NEXT: 1 5 1.00 vpermb %ymm16, %ymm17, %ymm19 {%k1}
84 # CHECK-NEXT: 2 13 1.00 * vpermb (%rax), %ymm17, %ymm19 {%k1}
85 # CHECK-NEXT: 1 5 1.00 vpermb %ymm16, %ymm17, %ymm19 {%k1} {z}
86 # CHECK-NEXT: 2 13 1.00 * vpermb (%rax), %ymm17, %ymm19 {%k1} {z}
87 # CHECK-NEXT: 3 5 2.00 vpermi2b %xmm16, %xmm17, %xmm19
88 # CHECK-NEXT: 4 11 2.00 * vpermi2b (%rax), %xmm17, %xmm19
89 # CHECK-NEXT: 3 7 2.00 vpermi2b %xmm16, %xmm17, %xmm19 {%k1}
90 # CHECK-NEXT: 4 13 2.00 * vpermi2b (%rax), %xmm17, %xmm19 {%k1}
91 # CHECK-NEXT: 3 7 2.00 vpermi2b %xmm16, %xmm17, %xmm19 {%k1} {z}
92 # CHECK-NEXT: 4 13 2.00 * vpermi2b (%rax), %xmm17, %xmm19 {%k1} {z}
93 # CHECK-NEXT: 3 5 2.00 vpermi2b %ymm16, %ymm17, %ymm19
94 # CHECK-NEXT: 4 12 2.00 * vpermi2b (%rax), %ymm17, %ymm19
95 # CHECK-NEXT: 3 7 2.00 vpermi2b %ymm16, %ymm17, %ymm19 {%k1}
96 # CHECK-NEXT: 4 14 2.00 * vpermi2b (%rax), %ymm17, %ymm19 {%k1}
97 # CHECK-NEXT: 3 7 2.00 vpermi2b %ymm16, %ymm17, %ymm19 {%k1} {z}
98 # CHECK-NEXT: 4 14 2.00 * vpermi2b (%rax), %ymm17, %ymm19 {%k1} {z}
99 # CHECK-NEXT: 3 5 2.00 vpermt2b %xmm16, %xmm17, %xmm19
100 # CHECK-NEXT: 4 11 2.00 * vpermt2b (%rax), %xmm17, %xmm19
101 # CHECK-NEXT: 3 7 2.00 vpermt2b %xmm16, %xmm17, %xmm19 {%k1}
102 # CHECK-NEXT: 4 13 2.00 * vpermt2b (%rax), %xmm17, %xmm19 {%k1}
103 # CHECK-NEXT: 3 7 2.00 vpermt2b %xmm16, %xmm17, %xmm19 {%k1} {z}
104 # CHECK-NEXT: 4 13 2.00 * vpermt2b (%rax), %xmm17, %xmm19 {%k1} {z}
105 # CHECK-NEXT: 3 5 2.00 vpermt2b %ymm16, %ymm17, %ymm19
106 # CHECK-NEXT: 4 12 2.00 * vpermt2b (%rax), %ymm17, %ymm19
107 # CHECK-NEXT: 3 7 2.00 vpermt2b %ymm16, %ymm17, %ymm19 {%k1}
108 # CHECK-NEXT: 4 14 2.00 * vpermt2b (%rax), %ymm17, %ymm19 {%k1}
109 # CHECK-NEXT: 3 7 2.00 vpermt2b %ymm16, %ymm17, %ymm19 {%k1} {z}
110 # CHECK-NEXT: 4 14 2.00 * vpermt2b (%rax), %ymm17, %ymm19 {%k1} {z}
111 # CHECK-NEXT: 1 3 1.00 vpmultishiftqb %xmm16, %xmm17, %xmm19
112 # CHECK-NEXT: 2 10 1.00 * vpmultishiftqb (%rax), %xmm17, %xmm19
113 # CHECK-NEXT: 2 10 1.00 * vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19
114 # CHECK-NEXT: 1 5 1.00 vpmultishiftqb %xmm16, %xmm17, %xmm19 {%k1}
115 # CHECK-NEXT: 2 13 1.00 * vpmultishiftqb (%rax), %xmm17, %xmm19 {%k1}
116 # CHECK-NEXT: 2 13 1.00 * vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {%k1}
117 # CHECK-NEXT: 1 5 1.00 vpmultishiftqb %xmm16, %xmm17, %xmm19 {%k1} {z}
118 # CHECK-NEXT: 2 13 1.00 * vpmultishiftqb (%rax), %xmm17, %xmm19 {%k1} {z}
119 # CHECK-NEXT: 2 13 1.00 * vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {%k1} {z}
120 # CHECK-NEXT: 1 3 1.00 vpmultishiftqb %ymm16, %ymm17, %ymm19
121 # CHECK-NEXT: 2 11 1.00 * vpmultishiftqb (%rax), %ymm17, %ymm19
122 # CHECK-NEXT: 2 11 1.00 * vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19
123 # CHECK-NEXT: 1 5 1.00 vpmultishiftqb %ymm16, %ymm17, %ymm19 {%k1}
124 # CHECK-NEXT: 2 13 1.00 * vpmultishiftqb (%rax), %ymm17, %ymm19 {%k1}
125 # CHECK-NEXT: 2 13 1.00 * vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {%k1}
126 # CHECK-NEXT: 1 5 1.00 vpmultishiftqb %ymm16, %ymm17, %ymm19 {%k1} {z}
127 # CHECK-NEXT: 2 13 1.00 * vpmultishiftqb (%rax), %ymm17, %ymm19 {%k1} {z}
128 # CHECK-NEXT: 2 13 1.00 * vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
130 # CHECK: Resources:
131 # CHECK-NEXT: [0] - SPRPort00
132 # CHECK-NEXT: [1] - SPRPort01
133 # CHECK-NEXT: [2] - SPRPort02
134 # CHECK-NEXT: [3] - SPRPort03
135 # CHECK-NEXT: [4] - SPRPort04
136 # CHECK-NEXT: [5] - SPRPort05
137 # CHECK-NEXT: [6] - SPRPort06
138 # CHECK-NEXT: [7] - SPRPort07
139 # CHECK-NEXT: [8] - SPRPort08
140 # CHECK-NEXT: [9] - SPRPort09
141 # CHECK-NEXT: [10] - SPRPort10
142 # CHECK-NEXT: [11] - SPRPort11
143 # CHECK-NEXT: [12] - SPRPortInvalid
145 # CHECK: Resource pressure per iteration:
146 # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]
147 # CHECK-NEXT: 8.00 8.00 10.00 10.00 - 86.00 - - - - - 10.00 -
149 # CHECK: Resource pressure by instruction:
150 # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] Instructions:
151 # CHECK-NEXT: - - - - - 1.00 - - - - - - - vpermb %xmm16, %xmm17, %xmm19
152 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpermb (%rax), %xmm17, %xmm19
153 # CHECK-NEXT: - - - - - 1.00 - - - - - - - vpermb %xmm16, %xmm17, %xmm19 {%k1}
154 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpermb (%rax), %xmm17, %xmm19 {%k1}
155 # CHECK-NEXT: - - - - - 1.00 - - - - - - - vpermb %xmm16, %xmm17, %xmm19 {%k1} {z}
156 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpermb (%rax), %xmm17, %xmm19 {%k1} {z}
157 # CHECK-NEXT: - - - - - 1.00 - - - - - - - vpermb %ymm16, %ymm17, %ymm19
158 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpermb (%rax), %ymm17, %ymm19
159 # CHECK-NEXT: - - - - - 1.00 - - - - - - - vpermb %ymm16, %ymm17, %ymm19 {%k1}
160 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpermb (%rax), %ymm17, %ymm19 {%k1}
161 # CHECK-NEXT: - - - - - 1.00 - - - - - - - vpermb %ymm16, %ymm17, %ymm19 {%k1} {z}
162 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpermb (%rax), %ymm17, %ymm19 {%k1} {z}
163 # CHECK-NEXT: 0.33 0.33 - - - 2.33 - - - - - - - vpermi2b %xmm16, %xmm17, %xmm19
164 # CHECK-NEXT: 0.33 0.33 0.33 0.33 - 2.33 - - - - - 0.33 - vpermi2b (%rax), %xmm17, %xmm19
165 # CHECK-NEXT: 0.33 0.33 - - - 2.33 - - - - - - - vpermi2b %xmm16, %xmm17, %xmm19 {%k1}
166 # CHECK-NEXT: 0.33 0.33 0.33 0.33 - 2.33 - - - - - 0.33 - vpermi2b (%rax), %xmm17, %xmm19 {%k1}
167 # CHECK-NEXT: 0.33 0.33 - - - 2.33 - - - - - - - vpermi2b %xmm16, %xmm17, %xmm19 {%k1} {z}
168 # CHECK-NEXT: 0.33 0.33 0.33 0.33 - 2.33 - - - - - 0.33 - vpermi2b (%rax), %xmm17, %xmm19 {%k1} {z}
169 # CHECK-NEXT: 0.33 0.33 - - - 2.33 - - - - - - - vpermi2b %ymm16, %ymm17, %ymm19
170 # CHECK-NEXT: 0.33 0.33 0.33 0.33 - 2.33 - - - - - 0.33 - vpermi2b (%rax), %ymm17, %ymm19
171 # CHECK-NEXT: 0.33 0.33 - - - 2.33 - - - - - - - vpermi2b %ymm16, %ymm17, %ymm19 {%k1}
172 # CHECK-NEXT: 0.33 0.33 0.33 0.33 - 2.33 - - - - - 0.33 - vpermi2b (%rax), %ymm17, %ymm19 {%k1}
173 # CHECK-NEXT: 0.33 0.33 - - - 2.33 - - - - - - - vpermi2b %ymm16, %ymm17, %ymm19 {%k1} {z}
174 # CHECK-NEXT: 0.33 0.33 0.33 0.33 - 2.33 - - - - - 0.33 - vpermi2b (%rax), %ymm17, %ymm19 {%k1} {z}
175 # CHECK-NEXT: 0.33 0.33 - - - 2.33 - - - - - - - vpermt2b %xmm16, %xmm17, %xmm19
176 # CHECK-NEXT: 0.33 0.33 0.33 0.33 - 2.33 - - - - - 0.33 - vpermt2b (%rax), %xmm17, %xmm19
177 # CHECK-NEXT: 0.33 0.33 - - - 2.33 - - - - - - - vpermt2b %xmm16, %xmm17, %xmm19 {%k1}
178 # CHECK-NEXT: 0.33 0.33 0.33 0.33 - 2.33 - - - - - 0.33 - vpermt2b (%rax), %xmm17, %xmm19 {%k1}
179 # CHECK-NEXT: 0.33 0.33 - - - 2.33 - - - - - - - vpermt2b %xmm16, %xmm17, %xmm19 {%k1} {z}
180 # CHECK-NEXT: 0.33 0.33 0.33 0.33 - 2.33 - - - - - 0.33 - vpermt2b (%rax), %xmm17, %xmm19 {%k1} {z}
181 # CHECK-NEXT: 0.33 0.33 - - - 2.33 - - - - - - - vpermt2b %ymm16, %ymm17, %ymm19
182 # CHECK-NEXT: 0.33 0.33 0.33 0.33 - 2.33 - - - - - 0.33 - vpermt2b (%rax), %ymm17, %ymm19
183 # CHECK-NEXT: 0.33 0.33 - - - 2.33 - - - - - - - vpermt2b %ymm16, %ymm17, %ymm19 {%k1}
184 # CHECK-NEXT: 0.33 0.33 0.33 0.33 - 2.33 - - - - - 0.33 - vpermt2b (%rax), %ymm17, %ymm19 {%k1}
185 # CHECK-NEXT: 0.33 0.33 - - - 2.33 - - - - - - - vpermt2b %ymm16, %ymm17, %ymm19 {%k1} {z}
186 # CHECK-NEXT: 0.33 0.33 0.33 0.33 - 2.33 - - - - - 0.33 - vpermt2b (%rax), %ymm17, %ymm19 {%k1} {z}
187 # CHECK-NEXT: - - - - - 1.00 - - - - - - - vpmultishiftqb %xmm16, %xmm17, %xmm19
188 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpmultishiftqb (%rax), %xmm17, %xmm19
189 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19
190 # CHECK-NEXT: - - - - - 1.00 - - - - - - - vpmultishiftqb %xmm16, %xmm17, %xmm19 {%k1}
191 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpmultishiftqb (%rax), %xmm17, %xmm19 {%k1}
192 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {%k1}
193 # CHECK-NEXT: - - - - - 1.00 - - - - - - - vpmultishiftqb %xmm16, %xmm17, %xmm19 {%k1} {z}
194 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpmultishiftqb (%rax), %xmm17, %xmm19 {%k1} {z}
195 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpmultishiftqb (%rax){1to2}, %xmm17, %xmm19 {%k1} {z}
196 # CHECK-NEXT: - - - - - 1.00 - - - - - - - vpmultishiftqb %ymm16, %ymm17, %ymm19
197 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpmultishiftqb (%rax), %ymm17, %ymm19
198 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19
199 # CHECK-NEXT: - - - - - 1.00 - - - - - - - vpmultishiftqb %ymm16, %ymm17, %ymm19 {%k1}
200 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpmultishiftqb (%rax), %ymm17, %ymm19 {%k1}
201 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {%k1}
202 # CHECK-NEXT: - - - - - 1.00 - - - - - - - vpmultishiftqb %ymm16, %ymm17, %ymm19 {%k1} {z}
203 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpmultishiftqb (%rax), %ymm17, %ymm19 {%k1} {z}
204 # CHECK-NEXT: - - 0.33 0.33 - 1.00 - - - - - 0.33 - vpmultishiftqb (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}