• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=sandybridge -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:  2      6     0.50    *                   pabsb	(%rax), %mm2
111# CHECK-NEXT:  1      1     0.50                        pabsb	%xmm0, %xmm2
112# CHECK-NEXT:  2      7     0.50    *                   pabsb	(%rax), %xmm2
113# CHECK-NEXT:  1      1     0.50                        pabsd	%mm0, %mm2
114# CHECK-NEXT:  2      6     0.50    *                   pabsd	(%rax), %mm2
115# CHECK-NEXT:  1      1     0.50                        pabsd	%xmm0, %xmm2
116# CHECK-NEXT:  2      7     0.50    *                   pabsd	(%rax), %xmm2
117# CHECK-NEXT:  1      1     0.50                        pabsw	%mm0, %mm2
118# CHECK-NEXT:  2      6     0.50    *                   pabsw	(%rax), %mm2
119# CHECK-NEXT:  1      1     0.50                        pabsw	%xmm0, %xmm2
120# CHECK-NEXT:  2      7     0.50    *                   pabsw	(%rax), %xmm2
121# CHECK-NEXT:  1      1     0.50                        palignr	$1, %mm0, %mm2
122# CHECK-NEXT:  2      6     0.50    *                   palignr	$1, (%rax), %mm2
123# CHECK-NEXT:  1      1     0.50                        palignr	$1, %xmm0, %xmm2
124# CHECK-NEXT:  2      7     0.50    *                   palignr	$1, (%rax), %xmm2
125# CHECK-NEXT:  3      3     1.50                        phaddd	%mm0, %mm2
126# CHECK-NEXT:  4      8     1.50    *                   phaddd	(%rax), %mm2
127# CHECK-NEXT:  3      3     1.50                        phaddd	%xmm0, %xmm2
128# CHECK-NEXT:  4      9     1.50    *                   phaddd	(%rax), %xmm2
129# CHECK-NEXT:  3      3     1.50                        phaddsw	%mm0, %mm2
130# CHECK-NEXT:  4      8     1.50    *                   phaddsw	(%rax), %mm2
131# CHECK-NEXT:  3      3     1.50                        phaddsw	%xmm0, %xmm2
132# CHECK-NEXT:  4      9     1.50    *                   phaddsw	(%rax), %xmm2
133# CHECK-NEXT:  3      3     1.50                        phaddw	%mm0, %mm2
134# CHECK-NEXT:  4      8     1.50    *                   phaddw	(%rax), %mm2
135# CHECK-NEXT:  3      3     1.50                        phaddw	%xmm0, %xmm2
136# CHECK-NEXT:  4      9     1.50    *                   phaddw	(%rax), %xmm2
137# CHECK-NEXT:  3      3     1.50                        phsubd	%mm0, %mm2
138# CHECK-NEXT:  4      8     1.50    *                   phsubd	(%rax), %mm2
139# CHECK-NEXT:  3      3     1.50                        phsubd	%xmm0, %xmm2
140# CHECK-NEXT:  4      9     1.50    *                   phsubd	(%rax), %xmm2
141# CHECK-NEXT:  3      3     1.50                        phsubsw	%mm0, %mm2
142# CHECK-NEXT:  4      8     1.50    *                   phsubsw	(%rax), %mm2
143# CHECK-NEXT:  3      3     1.50                        phsubsw	%xmm0, %xmm2
144# CHECK-NEXT:  4      9     1.50    *                   phsubsw	(%rax), %xmm2
145# CHECK-NEXT:  3      3     1.50                        phsubw	%mm0, %mm2
146# CHECK-NEXT:  4      8     1.50    *                   phsubw	(%rax), %mm2
147# CHECK-NEXT:  3      3     1.50                        phsubw	%xmm0, %xmm2
148# CHECK-NEXT:  4      9     1.50    *                   phsubw	(%rax), %xmm2
149# CHECK-NEXT:  1      5     1.00                        pmaddubsw	%mm0, %mm2
150# CHECK-NEXT:  2      10    1.00    *                   pmaddubsw	(%rax), %mm2
151# CHECK-NEXT:  1      5     1.00                        pmaddubsw	%xmm0, %xmm2
152# CHECK-NEXT:  2      11    1.00    *                   pmaddubsw	(%rax), %xmm2
153# CHECK-NEXT:  1      5     1.00                        pmulhrsw	%mm0, %mm2
154# CHECK-NEXT:  2      10    1.00    *                   pmulhrsw	(%rax), %mm2
155# CHECK-NEXT:  1      5     1.00                        pmulhrsw	%xmm0, %xmm2
156# CHECK-NEXT:  2      11    1.00    *                   pmulhrsw	(%rax), %xmm2
157# CHECK-NEXT:  1      1     0.50                        pshufb	%mm0, %mm2
158# CHECK-NEXT:  2      6     0.50    *                   pshufb	(%rax), %mm2
159# CHECK-NEXT:  1      1     0.50                        pshufb	%xmm0, %xmm2
160# CHECK-NEXT:  2      7     0.50    *                   pshufb	(%rax), %xmm2
161# CHECK-NEXT:  1      1     0.50                        psignb	%mm0, %mm2
162# CHECK-NEXT:  2      6     0.50    *                   psignb	(%rax), %mm2
163# CHECK-NEXT:  1      1     0.50                        psignb	%xmm0, %xmm2
164# CHECK-NEXT:  2      7     0.50    *                   psignb	(%rax), %xmm2
165# CHECK-NEXT:  1      1     0.50                        psignd	%mm0, %mm2
166# CHECK-NEXT:  2      6     0.50    *                   psignd	(%rax), %mm2
167# CHECK-NEXT:  1      1     0.50                        psignd	%xmm0, %xmm2
168# CHECK-NEXT:  2      7     0.50    *                   psignd	(%rax), %xmm2
169# CHECK-NEXT:  1      1     0.50                        psignw	%mm0, %mm2
170# CHECK-NEXT:  2      6     0.50    *                   psignw	(%rax), %mm2
171# CHECK-NEXT:  1      1     0.50                        psignw	%xmm0, %xmm2
172# CHECK-NEXT:  2      7     0.50    *                   psignw	(%rax), %xmm2
173
174# CHECK:      Resources:
175# CHECK-NEXT: [0]   - SBDivider
176# CHECK-NEXT: [1]   - SBFPDivider
177# CHECK-NEXT: [2]   - SBPort0
178# CHECK-NEXT: [3]   - SBPort1
179# CHECK-NEXT: [4]   - SBPort4
180# CHECK-NEXT: [5]   - SBPort5
181# CHECK-NEXT: [6.0] - SBPort23
182# CHECK-NEXT: [6.1] - SBPort23
183
184# CHECK:      Resource pressure per iteration:
185# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
186# CHECK-NEXT:  -      -     8.00   52.00   -     52.00  16.00  16.00
187
188# CHECK:      Resource pressure by instruction:
189# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
190# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     pabsb	%mm0, %mm2
191# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   pabsb	(%rax), %mm2
192# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     pabsb	%xmm0, %xmm2
193# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   pabsb	(%rax), %xmm2
194# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     pabsd	%mm0, %mm2
195# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   pabsd	(%rax), %mm2
196# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     pabsd	%xmm0, %xmm2
197# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   pabsd	(%rax), %xmm2
198# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     pabsw	%mm0, %mm2
199# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   pabsw	(%rax), %mm2
200# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     pabsw	%xmm0, %xmm2
201# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   pabsw	(%rax), %xmm2
202# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     palignr	$1, %mm0, %mm2
203# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   palignr	$1, (%rax), %mm2
204# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     palignr	$1, %xmm0, %xmm2
205# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   palignr	$1, (%rax), %xmm2
206# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     phaddd	%mm0, %mm2
207# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   phaddd	(%rax), %mm2
208# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     phaddd	%xmm0, %xmm2
209# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   phaddd	(%rax), %xmm2
210# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     phaddsw	%mm0, %mm2
211# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   phaddsw	(%rax), %mm2
212# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     phaddsw	%xmm0, %xmm2
213# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   phaddsw	(%rax), %xmm2
214# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     phaddw	%mm0, %mm2
215# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   phaddw	(%rax), %mm2
216# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     phaddw	%xmm0, %xmm2
217# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   phaddw	(%rax), %xmm2
218# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     phsubd	%mm0, %mm2
219# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   phsubd	(%rax), %mm2
220# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     phsubd	%xmm0, %xmm2
221# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   phsubd	(%rax), %xmm2
222# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     phsubsw	%mm0, %mm2
223# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   phsubsw	(%rax), %mm2
224# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     phsubsw	%xmm0, %xmm2
225# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   phsubsw	(%rax), %xmm2
226# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     phsubw	%mm0, %mm2
227# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   phsubw	(%rax), %mm2
228# CHECK-NEXT:  -      -      -     1.50    -     1.50    -      -     phsubw	%xmm0, %xmm2
229# CHECK-NEXT:  -      -      -     1.50    -     1.50   0.50   0.50   phsubw	(%rax), %xmm2
230# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     pmaddubsw	%mm0, %mm2
231# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   pmaddubsw	(%rax), %mm2
232# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     pmaddubsw	%xmm0, %xmm2
233# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   pmaddubsw	(%rax), %xmm2
234# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     pmulhrsw	%mm0, %mm2
235# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   pmulhrsw	(%rax), %mm2
236# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     pmulhrsw	%xmm0, %xmm2
237# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   pmulhrsw	(%rax), %xmm2
238# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     pshufb	%mm0, %mm2
239# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   pshufb	(%rax), %mm2
240# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     pshufb	%xmm0, %xmm2
241# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   pshufb	(%rax), %xmm2
242# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     psignb	%mm0, %mm2
243# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   psignb	(%rax), %mm2
244# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     psignb	%xmm0, %xmm2
245# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   psignb	(%rax), %xmm2
246# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     psignd	%mm0, %mm2
247# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   psignd	(%rax), %mm2
248# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     psignd	%xmm0, %xmm2
249# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   psignd	(%rax), %xmm2
250# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     psignw	%mm0, %mm2
251# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   psignw	(%rax), %mm2
252# CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     psignw	%xmm0, %xmm2
253# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   psignw	(%rax), %xmm2
254