xref: /llvm-project/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vbmivl.s (revision c6a838e9c89aac0a2d15c4114e19a29497e4d665)
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
4vpermb            %xmm16, %xmm17, %xmm19
5vpermb            (%rax), %xmm17, %xmm19
6vpermb            %xmm16, %xmm17, %xmm19 {k1}
7vpermb            (%rax), %xmm17, %xmm19 {k1}
8vpermb            %xmm16, %xmm17, %xmm19 {k1}{z}
9vpermb            (%rax), %xmm17, %xmm19 {k1}{z}
10
11vpermb            %ymm16, %ymm17, %ymm19
12vpermb            (%rax), %ymm17, %ymm19
13vpermb            %ymm16, %ymm17, %ymm19 {k1}
14vpermb            (%rax), %ymm17, %ymm19 {k1}
15vpermb            %ymm16, %ymm17, %ymm19 {k1}{z}
16vpermb            (%rax), %ymm17, %ymm19 {k1}{z}
17
18vpermi2b          %xmm16, %xmm17, %xmm19
19vpermi2b          (%rax), %xmm17, %xmm19
20vpermi2b          %xmm16, %xmm17, %xmm19 {k1}
21vpermi2b          (%rax), %xmm17, %xmm19 {k1}
22vpermi2b          %xmm16, %xmm17, %xmm19 {k1}{z}
23vpermi2b          (%rax), %xmm17, %xmm19 {k1}{z}
24
25vpermi2b          %ymm16, %ymm17, %ymm19
26vpermi2b          (%rax), %ymm17, %ymm19
27vpermi2b          %ymm16, %ymm17, %ymm19 {k1}
28vpermi2b          (%rax), %ymm17, %ymm19 {k1}
29vpermi2b          %ymm16, %ymm17, %ymm19 {k1}{z}
30vpermi2b          (%rax), %ymm17, %ymm19 {k1}{z}
31
32vpermt2b          %xmm16, %xmm17, %xmm19
33vpermt2b          (%rax), %xmm17, %xmm19
34vpermt2b          %xmm16, %xmm17, %xmm19 {k1}
35vpermt2b          (%rax), %xmm17, %xmm19 {k1}
36vpermt2b          %xmm16, %xmm17, %xmm19 {k1}{z}
37vpermt2b          (%rax), %xmm17, %xmm19 {k1}{z}
38
39vpermt2b          %ymm16, %ymm17, %ymm19
40vpermt2b          (%rax), %ymm17, %ymm19
41vpermt2b          %ymm16, %ymm17, %ymm19 {k1}
42vpermt2b          (%rax), %ymm17, %ymm19 {k1}
43vpermt2b          %ymm16, %ymm17, %ymm19 {k1}{z}
44vpermt2b          (%rax), %ymm17, %ymm19 {k1}{z}
45
46vpmultishiftqb    %xmm16, %xmm17, %xmm19
47vpmultishiftqb    (%rax), %xmm17, %xmm19
48vpmultishiftqb    (%rax){1to2}, %xmm17, %xmm19
49vpmultishiftqb    %xmm16, %xmm17, %xmm19 {k1}
50vpmultishiftqb    (%rax), %xmm17, %xmm19 {k1}
51vpmultishiftqb    (%rax){1to2}, %xmm17, %xmm19 {k1}
52vpmultishiftqb    %xmm16, %xmm17, %xmm19 {k1}{z}
53vpmultishiftqb    (%rax), %xmm17, %xmm19 {k1}{z}
54vpmultishiftqb    (%rax){1to2}, %xmm17, %xmm19 {k1}{z}
55
56vpmultishiftqb    %ymm16, %ymm17, %ymm19
57vpmultishiftqb    (%rax), %ymm17, %ymm19
58vpmultishiftqb    (%rax){1to4}, %ymm17, %ymm19
59vpmultishiftqb    %ymm16, %ymm17, %ymm19 {k1}
60vpmultishiftqb    (%rax), %ymm17, %ymm19 {k1}
61vpmultishiftqb    (%rax){1to4}, %ymm17, %ymm19 {k1}
62vpmultishiftqb    %ymm16, %ymm17, %ymm19 {k1}{z}
63vpmultishiftqb    (%rax), %ymm17, %ymm19 {k1}{z}
64vpmultishiftqb    (%rax){1to4}, %ymm17, %ymm19 {k1}{z}
65
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)
73
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      3     1.00                        vpermb	%xmm16, %xmm17, %xmm19 {%k1}
78# CHECK-NEXT:  2      10    1.00    *                   vpermb	(%rax), %xmm17, %xmm19 {%k1}
79# CHECK-NEXT:  1      3     1.00                        vpermb	%xmm16, %xmm17, %xmm19 {%k1} {z}
80# CHECK-NEXT:  2      10    1.00    *                   vpermb	(%rax), %xmm17, %xmm19 {%k1} {z}
81# CHECK-NEXT:  1      3     1.00                        vpermb	%ymm16, %ymm17, %ymm19
82# CHECK-NEXT:  2      10    1.00    *                   vpermb	(%rax), %ymm17, %ymm19
83# CHECK-NEXT:  1      3     1.00                        vpermb	%ymm16, %ymm17, %ymm19 {%k1}
84# CHECK-NEXT:  2      10    1.00    *                   vpermb	(%rax), %ymm17, %ymm19 {%k1}
85# CHECK-NEXT:  1      3     1.00                        vpermb	%ymm16, %ymm17, %ymm19 {%k1} {z}
86# CHECK-NEXT:  2      10    1.00    *                   vpermb	(%rax), %ymm17, %ymm19 {%k1} {z}
87# CHECK-NEXT:  1      3     1.00                        vpermi2b	%xmm16, %xmm17, %xmm19
88# CHECK-NEXT:  2      10    1.00    *                   vpermi2b	(%rax), %xmm17, %xmm19
89# CHECK-NEXT:  1      3     1.00                        vpermi2b	%xmm16, %xmm17, %xmm19 {%k1}
90# CHECK-NEXT:  2      10    1.00    *                   vpermi2b	(%rax), %xmm17, %xmm19 {%k1}
91# CHECK-NEXT:  1      3     1.00                        vpermi2b	%xmm16, %xmm17, %xmm19 {%k1} {z}
92# CHECK-NEXT:  2      10    1.00    *                   vpermi2b	(%rax), %xmm17, %xmm19 {%k1} {z}
93# CHECK-NEXT:  1      3     1.00                        vpermi2b	%ymm16, %ymm17, %ymm19
94# CHECK-NEXT:  2      10    1.00    *                   vpermi2b	(%rax), %ymm17, %ymm19
95# CHECK-NEXT:  1      3     1.00                        vpermi2b	%ymm16, %ymm17, %ymm19 {%k1}
96# CHECK-NEXT:  2      10    1.00    *                   vpermi2b	(%rax), %ymm17, %ymm19 {%k1}
97# CHECK-NEXT:  1      3     1.00                        vpermi2b	%ymm16, %ymm17, %ymm19 {%k1} {z}
98# CHECK-NEXT:  2      10    1.00    *                   vpermi2b	(%rax), %ymm17, %ymm19 {%k1} {z}
99# CHECK-NEXT:  1      3     1.00                        vpermt2b	%xmm16, %xmm17, %xmm19
100# CHECK-NEXT:  2      10    1.00    *                   vpermt2b	(%rax), %xmm17, %xmm19
101# CHECK-NEXT:  1      3     1.00                        vpermt2b	%xmm16, %xmm17, %xmm19 {%k1}
102# CHECK-NEXT:  2      10    1.00    *                   vpermt2b	(%rax), %xmm17, %xmm19 {%k1}
103# CHECK-NEXT:  1      3     1.00                        vpermt2b	%xmm16, %xmm17, %xmm19 {%k1} {z}
104# CHECK-NEXT:  2      10    1.00    *                   vpermt2b	(%rax), %xmm17, %xmm19 {%k1} {z}
105# CHECK-NEXT:  1      3     1.00                        vpermt2b	%ymm16, %ymm17, %ymm19
106# CHECK-NEXT:  2      10    1.00    *                   vpermt2b	(%rax), %ymm17, %ymm19
107# CHECK-NEXT:  1      3     1.00                        vpermt2b	%ymm16, %ymm17, %ymm19 {%k1}
108# CHECK-NEXT:  2      10    1.00    *                   vpermt2b	(%rax), %ymm17, %ymm19 {%k1}
109# CHECK-NEXT:  1      3     1.00                        vpermt2b	%ymm16, %ymm17, %ymm19 {%k1} {z}
110# CHECK-NEXT:  2      10    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}
129
130# CHECK:      Resources:
131# CHECK-NEXT: [0]   - ICXDivider
132# CHECK-NEXT: [1]   - ICXFPDivider
133# CHECK-NEXT: [2]   - ICXPort0
134# CHECK-NEXT: [3]   - ICXPort1
135# CHECK-NEXT: [4]   - ICXPort2
136# CHECK-NEXT: [5]   - ICXPort3
137# CHECK-NEXT: [6]   - ICXPort4
138# CHECK-NEXT: [7]   - ICXPort5
139# CHECK-NEXT: [8]   - ICXPort6
140# CHECK-NEXT: [9]   - ICXPort7
141# CHECK-NEXT: [10]  - ICXPort8
142# CHECK-NEXT: [11]  - ICXPort9
143
144# CHECK:      Resource pressure per iteration:
145# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]
146# CHECK-NEXT:  -      -     9.00   9.00   15.00  15.00   -     36.00   -      -      -      -
147
148# CHECK:      Resource pressure by instruction:
149# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   Instructions:
150# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermb	%xmm16, %xmm17, %xmm19
151# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermb	(%rax), %xmm17, %xmm19
152# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermb	%xmm16, %xmm17, %xmm19 {%k1}
153# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermb	(%rax), %xmm17, %xmm19 {%k1}
154# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermb	%xmm16, %xmm17, %xmm19 {%k1} {z}
155# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermb	(%rax), %xmm17, %xmm19 {%k1} {z}
156# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermb	%ymm16, %ymm17, %ymm19
157# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermb	(%rax), %ymm17, %ymm19
158# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermb	%ymm16, %ymm17, %ymm19 {%k1}
159# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermb	(%rax), %ymm17, %ymm19 {%k1}
160# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermb	%ymm16, %ymm17, %ymm19 {%k1} {z}
161# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermb	(%rax), %ymm17, %ymm19 {%k1} {z}
162# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermi2b	%xmm16, %xmm17, %xmm19
163# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermi2b	(%rax), %xmm17, %xmm19
164# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermi2b	%xmm16, %xmm17, %xmm19 {%k1}
165# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermi2b	(%rax), %xmm17, %xmm19 {%k1}
166# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermi2b	%xmm16, %xmm17, %xmm19 {%k1} {z}
167# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermi2b	(%rax), %xmm17, %xmm19 {%k1} {z}
168# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermi2b	%ymm16, %ymm17, %ymm19
169# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermi2b	(%rax), %ymm17, %ymm19
170# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermi2b	%ymm16, %ymm17, %ymm19 {%k1}
171# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermi2b	(%rax), %ymm17, %ymm19 {%k1}
172# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermi2b	%ymm16, %ymm17, %ymm19 {%k1} {z}
173# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermi2b	(%rax), %ymm17, %ymm19 {%k1} {z}
174# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermt2b	%xmm16, %xmm17, %xmm19
175# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermt2b	(%rax), %xmm17, %xmm19
176# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermt2b	%xmm16, %xmm17, %xmm19 {%k1}
177# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermt2b	(%rax), %xmm17, %xmm19 {%k1}
178# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermt2b	%xmm16, %xmm17, %xmm19 {%k1} {z}
179# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermt2b	(%rax), %xmm17, %xmm19 {%k1} {z}
180# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermt2b	%ymm16, %ymm17, %ymm19
181# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermt2b	(%rax), %ymm17, %ymm19
182# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermt2b	%ymm16, %ymm17, %ymm19 {%k1}
183# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermt2b	(%rax), %ymm17, %ymm19 {%k1}
184# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpermt2b	%ymm16, %ymm17, %ymm19 {%k1} {z}
185# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpermt2b	(%rax), %ymm17, %ymm19 {%k1} {z}
186# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -      -      -     vpmultishiftqb	%xmm16, %xmm17, %xmm19
187# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     vpmultishiftqb	(%rax), %xmm17, %xmm19
188# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     vpmultishiftqb	(%rax){1to2}, %xmm17, %xmm19
189# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -      -      -     vpmultishiftqb	%xmm16, %xmm17, %xmm19 {%k1}
190# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     vpmultishiftqb	(%rax), %xmm17, %xmm19 {%k1}
191# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     vpmultishiftqb	(%rax){1to2}, %xmm17, %xmm19 {%k1}
192# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -      -      -     vpmultishiftqb	%xmm16, %xmm17, %xmm19 {%k1} {z}
193# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     vpmultishiftqb	(%rax), %xmm17, %xmm19 {%k1} {z}
194# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     vpmultishiftqb	(%rax){1to2}, %xmm17, %xmm19 {%k1} {z}
195# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -      -      -     vpmultishiftqb	%ymm16, %ymm17, %ymm19
196# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     vpmultishiftqb	(%rax), %ymm17, %ymm19
197# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     vpmultishiftqb	(%rax){1to4}, %ymm17, %ymm19
198# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -      -      -     vpmultishiftqb	%ymm16, %ymm17, %ymm19 {%k1}
199# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     vpmultishiftqb	(%rax), %ymm17, %ymm19 {%k1}
200# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     vpmultishiftqb	(%rax){1to4}, %ymm17, %ymm19 {%k1}
201# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -      -      -      -      -     vpmultishiftqb	%ymm16, %ymm17, %ymm19 {%k1} {z}
202# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     vpmultishiftqb	(%rax), %ymm17, %ymm19 {%k1} {z}
203# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -      -      -      -      -      -     vpmultishiftqb	(%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
204