1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s
3
4pabsb       %mm0, %mm2
5pabsb       (%rax), %mm2
6
7pabsb       %xmm0, %xmm2
8pabsb       (%rax), %xmm2
9
10pabsd       %mm0, %mm2
11pabsd       (%rax), %mm2
12
13pabsd       %xmm0, %xmm2
14pabsd       (%rax), %xmm2
15
16pabsw       %mm0, %mm2
17pabsw       (%rax), %mm2
18
19pabsw       %xmm0, %xmm2
20pabsw       (%rax), %xmm2
21
22palignr     $1, %mm0, %mm2
23palignr     $1, (%rax), %mm2
24
25palignr     $1, %xmm0, %xmm2
26palignr     $1, (%rax), %xmm2
27
28phaddd      %mm0, %mm2
29phaddd      (%rax), %mm2
30
31phaddd      %xmm0, %xmm2
32phaddd      (%rax), %xmm2
33
34phaddsw     %mm0, %mm2
35phaddsw     (%rax), %mm2
36
37phaddsw     %xmm0, %xmm2
38phaddsw     (%rax), %xmm2
39
40phaddw      %mm0, %mm2
41phaddw      (%rax), %mm2
42
43phaddw      %xmm0, %xmm2
44phaddw      (%rax), %xmm2
45
46phsubd      %mm0, %mm2
47phsubd      (%rax), %mm2
48
49phsubd      %xmm0, %xmm2
50phsubd      (%rax), %xmm2
51
52phsubsw     %mm0, %mm2
53phsubsw     (%rax), %mm2
54
55phsubsw     %xmm0, %xmm2
56phsubsw     (%rax), %xmm2
57
58phsubw      %mm0, %mm2
59phsubw      (%rax), %mm2
60
61phsubw      %xmm0, %xmm2
62phsubw      (%rax), %xmm2
63
64pmaddubsw   %mm0, %mm2
65pmaddubsw   (%rax), %mm2
66
67pmaddubsw   %xmm0, %xmm2
68pmaddubsw   (%rax), %xmm2
69
70pmulhrsw    %mm0, %mm2
71pmulhrsw    (%rax), %mm2
72
73pmulhrsw    %xmm0, %xmm2
74pmulhrsw    (%rax), %xmm2
75
76pshufb      %mm0, %mm2
77pshufb      (%rax), %mm2
78
79pshufb      %xmm0, %xmm2
80pshufb      (%rax), %xmm2
81
82psignb      %mm0, %mm2
83psignb      (%rax), %mm2
84
85psignb      %xmm0, %xmm2
86psignb      (%rax), %xmm2
87
88psignd      %mm0, %mm2
89psignd      (%rax), %mm2
90
91psignd      %xmm0, %xmm2
92psignd      (%rax), %xmm2
93
94psignw      %mm0, %mm2
95psignw      (%rax), %mm2
96
97psignw      %xmm0, %xmm2
98psignw      (%rax), %xmm2
99
100# CHECK:      Instruction Info:
101# CHECK-NEXT: [1]: #uOps
102# CHECK-NEXT: [2]: Latency
103# CHECK-NEXT: [3]: RThroughput
104# CHECK-NEXT: [4]: MayLoad
105# CHECK-NEXT: [5]: MayStore
106# CHECK-NEXT: [6]: HasSideEffects (U)
107
108# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
109# CHECK-NEXT:  1      1     0.50                        pabsb	%mm0, %mm2
110# CHECK-NEXT:  1      6     1.00    *                   pabsb	(%rax), %mm2
111# CHECK-NEXT:  1      1     0.50                        pabsb	%xmm0, %xmm2
112# CHECK-NEXT:  1      6     1.00    *                   pabsb	(%rax), %xmm2
113# CHECK-NEXT:  1      1     0.50                        pabsd	%mm0, %mm2
114# CHECK-NEXT:  1      6     1.00    *                   pabsd	(%rax), %mm2
115# CHECK-NEXT:  1      1     0.50                        pabsd	%xmm0, %xmm2
116# CHECK-NEXT:  1      6     1.00    *                   pabsd	(%rax), %xmm2
117# CHECK-NEXT:  1      1     0.50                        pabsw	%mm0, %mm2
118# CHECK-NEXT:  1      6     1.00    *                   pabsw	(%rax), %mm2
119# CHECK-NEXT:  1      1     0.50                        pabsw	%xmm0, %xmm2
120# CHECK-NEXT:  1      6     1.00    *                   pabsw	(%rax), %xmm2
121# CHECK-NEXT:  1      1     0.50                        palignr	$1, %mm0, %mm2
122# CHECK-NEXT:  1      6     1.00    *                   palignr	$1, (%rax), %mm2
123# CHECK-NEXT:  1      1     0.50                        palignr	$1, %xmm0, %xmm2
124# CHECK-NEXT:  1      6     1.00    *                   palignr	$1, (%rax), %xmm2
125# CHECK-NEXT:  1      1     0.50                        phaddd	%mm0, %mm2
126# CHECK-NEXT:  1      6     1.00    *                   phaddd	(%rax), %mm2
127# CHECK-NEXT:  1      1     0.50                        phaddd	%xmm0, %xmm2
128# CHECK-NEXT:  1      6     1.00    *                   phaddd	(%rax), %xmm2
129# CHECK-NEXT:  1      1     0.50                        phaddsw	%mm0, %mm2
130# CHECK-NEXT:  1      6     1.00    *                   phaddsw	(%rax), %mm2
131# CHECK-NEXT:  1      1     0.50                        phaddsw	%xmm0, %xmm2
132# CHECK-NEXT:  1      6     1.00    *                   phaddsw	(%rax), %xmm2
133# CHECK-NEXT:  1      1     0.50                        phaddw	%mm0, %mm2
134# CHECK-NEXT:  1      6     1.00    *                   phaddw	(%rax), %mm2
135# CHECK-NEXT:  1      1     0.50                        phaddw	%xmm0, %xmm2
136# CHECK-NEXT:  1      6     1.00    *                   phaddw	(%rax), %xmm2
137# CHECK-NEXT:  1      1     0.50                        phsubd	%mm0, %mm2
138# CHECK-NEXT:  1      6     1.00    *                   phsubd	(%rax), %mm2
139# CHECK-NEXT:  1      1     0.50                        phsubd	%xmm0, %xmm2
140# CHECK-NEXT:  1      6     1.00    *                   phsubd	(%rax), %xmm2
141# CHECK-NEXT:  1      1     0.50                        phsubsw	%mm0, %mm2
142# CHECK-NEXT:  1      6     1.00    *                   phsubsw	(%rax), %mm2
143# CHECK-NEXT:  1      1     0.50                        phsubsw	%xmm0, %xmm2
144# CHECK-NEXT:  1      6     1.00    *                   phsubsw	(%rax), %xmm2
145# CHECK-NEXT:  1      1     0.50                        phsubw	%mm0, %mm2
146# CHECK-NEXT:  1      6     1.00    *                   phsubw	(%rax), %mm2
147# CHECK-NEXT:  1      1     0.50                        phsubw	%xmm0, %xmm2
148# CHECK-NEXT:  1      6     1.00    *                   phsubw	(%rax), %xmm2
149# CHECK-NEXT:  1      2     1.00                        pmaddubsw	%mm0, %mm2
150# CHECK-NEXT:  1      7     1.00    *                   pmaddubsw	(%rax), %mm2
151# CHECK-NEXT:  1      2     1.00                        pmaddubsw	%xmm0, %xmm2
152# CHECK-NEXT:  1      7     1.00    *                   pmaddubsw	(%rax), %xmm2
153# CHECK-NEXT:  1      2     1.00                        pmulhrsw	%mm0, %mm2
154# CHECK-NEXT:  1      7     1.00    *                   pmulhrsw	(%rax), %mm2
155# CHECK-NEXT:  1      2     1.00                        pmulhrsw	%xmm0, %xmm2
156# CHECK-NEXT:  1      7     1.00    *                   pmulhrsw	(%rax), %xmm2
157# CHECK-NEXT:  3      2     2.00                        pshufb	%mm0, %mm2
158# CHECK-NEXT:  3      7     2.00    *                   pshufb	(%rax), %mm2
159# CHECK-NEXT:  3      2     2.00                        pshufb	%xmm0, %xmm2
160# CHECK-NEXT:  3      7     2.00    *                   pshufb	(%rax), %xmm2
161# CHECK-NEXT:  1      1     0.50                        psignb	%mm0, %mm2
162# CHECK-NEXT:  1      6     1.00    *                   psignb	(%rax), %mm2
163# CHECK-NEXT:  1      1     0.50                        psignb	%xmm0, %xmm2
164# CHECK-NEXT:  1      6     1.00    *                   psignb	(%rax), %xmm2
165# CHECK-NEXT:  1      1     0.50                        psignd	%mm0, %mm2
166# CHECK-NEXT:  1      6     1.00    *                   psignd	(%rax), %mm2
167# CHECK-NEXT:  1      1     0.50                        psignd	%xmm0, %xmm2
168# CHECK-NEXT:  1      6     1.00    *                   psignd	(%rax), %xmm2
169# CHECK-NEXT:  1      1     0.50                        psignw	%mm0, %mm2
170# CHECK-NEXT:  1      6     1.00    *                   psignw	(%rax), %mm2
171# CHECK-NEXT:  1      1     0.50                        psignw	%xmm0, %xmm2
172# CHECK-NEXT:  1      6     1.00    *                   psignw	(%rax), %xmm2
173
174# CHECK:      Resources:
175# CHECK-NEXT: [0]   - JALU0
176# CHECK-NEXT: [1]   - JALU1
177# CHECK-NEXT: [2]   - JDiv
178# CHECK-NEXT: [3]   - JFPA
179# CHECK-NEXT: [4]   - JFPM
180# CHECK-NEXT: [5]   - JFPU0
181# CHECK-NEXT: [6]   - JFPU1
182# CHECK-NEXT: [7]   - JLAGU
183# CHECK-NEXT: [8]   - JMul
184# CHECK-NEXT: [9]   - JSAGU
185# CHECK-NEXT: [10]  - JSTC
186# CHECK-NEXT: [11]  - JVALU0
187# CHECK-NEXT: [12]  - JVALU1
188# CHECK-NEXT: [13]  - JVIMUL
189
190# CHECK:      Resource pressure per iteration:
191# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]
192# CHECK-NEXT:  -      -      -      -      -     36.00  28.00  32.00   -      -      -     34.00  34.00  8.00
193
194# CHECK:      Resource pressure by instruction:
195# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]   Instructions:
196# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     pabsb	%mm0, %mm2
197# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     pabsb	(%rax), %mm2
198# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     pabsb	%xmm0, %xmm2
199# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     pabsb	(%rax), %xmm2
200# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     pabsd	%mm0, %mm2
201# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     pabsd	(%rax), %mm2
202# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     pabsd	%xmm0, %xmm2
203# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     pabsd	(%rax), %xmm2
204# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     pabsw	%mm0, %mm2
205# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     pabsw	(%rax), %mm2
206# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     pabsw	%xmm0, %xmm2
207# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     pabsw	(%rax), %xmm2
208# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     palignr	$1, %mm0, %mm2
209# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     palignr	$1, (%rax), %mm2
210# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     palignr	$1, %xmm0, %xmm2
211# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     palignr	$1, (%rax), %xmm2
212# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     phaddd	%mm0, %mm2
213# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     phaddd	(%rax), %mm2
214# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     phaddd	%xmm0, %xmm2
215# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     phaddd	(%rax), %xmm2
216# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     phaddsw	%mm0, %mm2
217# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     phaddsw	(%rax), %mm2
218# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     phaddsw	%xmm0, %xmm2
219# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     phaddsw	(%rax), %xmm2
220# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     phaddw	%mm0, %mm2
221# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     phaddw	(%rax), %mm2
222# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     phaddw	%xmm0, %xmm2
223# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     phaddw	(%rax), %xmm2
224# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     phsubd	%mm0, %mm2
225# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     phsubd	(%rax), %mm2
226# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     phsubd	%xmm0, %xmm2
227# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     phsubd	(%rax), %xmm2
228# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     phsubsw	%mm0, %mm2
229# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     phsubsw	(%rax), %mm2
230# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     phsubsw	%xmm0, %xmm2
231# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     phsubsw	(%rax), %xmm2
232# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     phsubw	%mm0, %mm2
233# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     phsubw	(%rax), %mm2
234# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     phsubw	%xmm0, %xmm2
235# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     phsubw	(%rax), %xmm2
236# CHECK-NEXT:  -      -      -      -      -     1.00    -      -      -      -      -      -      -     1.00   pmaddubsw	%mm0, %mm2
237# CHECK-NEXT:  -      -      -      -      -     1.00    -     1.00    -      -      -      -      -     1.00   pmaddubsw	(%rax), %mm2
238# CHECK-NEXT:  -      -      -      -      -     1.00    -      -      -      -      -      -      -     1.00   pmaddubsw	%xmm0, %xmm2
239# CHECK-NEXT:  -      -      -      -      -     1.00    -     1.00    -      -      -      -      -     1.00   pmaddubsw	(%rax), %xmm2
240# CHECK-NEXT:  -      -      -      -      -     1.00    -      -      -      -      -      -      -     1.00   pmulhrsw	%mm0, %mm2
241# CHECK-NEXT:  -      -      -      -      -     1.00    -     1.00    -      -      -      -      -     1.00   pmulhrsw	(%rax), %mm2
242# CHECK-NEXT:  -      -      -      -      -     1.00    -      -      -      -      -      -      -     1.00   pmulhrsw	%xmm0, %xmm2
243# CHECK-NEXT:  -      -      -      -      -     1.00    -     1.00    -      -      -      -      -     1.00   pmulhrsw	(%rax), %xmm2
244# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     2.00   2.00    -     pshufb	%mm0, %mm2
245# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     2.00   2.00    -     pshufb	(%rax), %mm2
246# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     2.00   2.00    -     pshufb	%xmm0, %xmm2
247# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     2.00   2.00    -     pshufb	(%rax), %xmm2
248# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     psignb	%mm0, %mm2
249# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     psignb	(%rax), %mm2
250# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     psignb	%xmm0, %xmm2
251# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     psignb	(%rax), %xmm2
252# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     psignd	%mm0, %mm2
253# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     psignd	(%rax), %mm2
254# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     psignd	%xmm0, %xmm2
255# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     psignd	(%rax), %xmm2
256# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     psignw	%mm0, %mm2
257# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     psignw	(%rax), %mm2
258# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -     psignw	%xmm0, %xmm2
259# CHECK-NEXT:  -      -      -      -      -     0.50   0.50   1.00    -      -      -     0.50   0.50    -     psignw	(%rax), %xmm2
260