1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=atom -instruction-tables < %s | FileCheck %s
3
4cmovow    %si, %di
5cmovnow   %si, %di
6cmovbw    %si, %di
7cmovaew   %si, %di
8cmovew    %si, %di
9cmovnew   %si, %di
10cmovbew   %si, %di
11cmovaw    %si, %di
12cmovsw    %si, %di
13cmovnsw   %si, %di
14cmovpw    %si, %di
15cmovnpw   %si, %di
16cmovlw    %si, %di
17cmovgew   %si, %di
18cmovlew   %si, %di
19cmovgw    %si, %di
20
21cmovow    (%rax), %di
22cmovnow   (%rax), %di
23cmovbw    (%rax), %di
24cmovaew   (%rax), %di
25cmovew    (%rax), %di
26cmovnew   (%rax), %di
27cmovbew   (%rax), %di
28cmovaw    (%rax), %di
29cmovsw    (%rax), %di
30cmovnsw   (%rax), %di
31cmovpw    (%rax), %di
32cmovnpw   (%rax), %di
33cmovlw    (%rax), %di
34cmovgew   (%rax), %di
35cmovlew   (%rax), %di
36cmovgw    (%rax), %di
37
38cmovol    %esi, %edi
39cmovnol   %esi, %edi
40cmovbl    %esi, %edi
41cmovael   %esi, %edi
42cmovel    %esi, %edi
43cmovnel   %esi, %edi
44cmovbel   %esi, %edi
45cmoval    %esi, %edi
46cmovsl    %esi, %edi
47cmovnsl   %esi, %edi
48cmovpl    %esi, %edi
49cmovnpl   %esi, %edi
50cmovll    %esi, %edi
51cmovgel   %esi, %edi
52cmovlel   %esi, %edi
53cmovgl    %esi, %edi
54
55cmovol    (%rax), %edi
56cmovnol   (%rax), %edi
57cmovbl    (%rax), %edi
58cmovael   (%rax), %edi
59cmovel    (%rax), %edi
60cmovnel   (%rax), %edi
61cmovbel   (%rax), %edi
62cmoval    (%rax), %edi
63cmovsl    (%rax), %edi
64cmovnsl   (%rax), %edi
65cmovpl    (%rax), %edi
66cmovnpl   (%rax), %edi
67cmovll    (%rax), %edi
68cmovgel   (%rax), %edi
69cmovlel   (%rax), %edi
70cmovgl    (%rax), %edi
71
72cmovoq    %rsi, %rdi
73cmovnoq   %rsi, %rdi
74cmovbq    %rsi, %rdi
75cmovaeq   %rsi, %rdi
76cmoveq    %rsi, %rdi
77cmovneq   %rsi, %rdi
78cmovbeq   %rsi, %rdi
79cmovaq    %rsi, %rdi
80cmovsq    %rsi, %rdi
81cmovnsq   %rsi, %rdi
82cmovpq    %rsi, %rdi
83cmovnpq   %rsi, %rdi
84cmovlq    %rsi, %rdi
85cmovgeq   %rsi, %rdi
86cmovleq   %rsi, %rdi
87cmovgq    %rsi, %rdi
88
89cmovoq    (%rax), %rdi
90cmovnoq   (%rax), %rdi
91cmovbq    (%rax), %rdi
92cmovaeq   (%rax), %rdi
93cmoveq    (%rax), %rdi
94cmovneq   (%rax), %rdi
95cmovbeq   (%rax), %rdi
96cmovaq    (%rax), %rdi
97cmovsq    (%rax), %rdi
98cmovnsq   (%rax), %rdi
99cmovpq    (%rax), %rdi
100cmovnpq   (%rax), %rdi
101cmovlq    (%rax), %rdi
102cmovgeq   (%rax), %rdi
103cmovleq   (%rax), %rdi
104cmovgq    (%rax), %rdi
105
106# CHECK:      Instruction Info:
107# CHECK-NEXT: [1]: #uOps
108# CHECK-NEXT: [2]: Latency
109# CHECK-NEXT: [3]: RThroughput
110# CHECK-NEXT: [4]: MayLoad
111# CHECK-NEXT: [5]: MayStore
112# CHECK-NEXT: [6]: HasSideEffects (U)
113
114# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
115# CHECK-NEXT:  1      1     0.50                        cmovow	%si, %di
116# CHECK-NEXT:  1      1     0.50                        cmovnow	%si, %di
117# CHECK-NEXT:  1      1     0.50                        cmovbw	%si, %di
118# CHECK-NEXT:  1      1     0.50                        cmovaew	%si, %di
119# CHECK-NEXT:  1      1     0.50                        cmovew	%si, %di
120# CHECK-NEXT:  1      1     0.50                        cmovnew	%si, %di
121# CHECK-NEXT:  1      1     0.50                        cmovbew	%si, %di
122# CHECK-NEXT:  1      1     0.50                        cmovaw	%si, %di
123# CHECK-NEXT:  1      1     0.50                        cmovsw	%si, %di
124# CHECK-NEXT:  1      1     0.50                        cmovnsw	%si, %di
125# CHECK-NEXT:  1      1     0.50                        cmovpw	%si, %di
126# CHECK-NEXT:  1      1     0.50                        cmovnpw	%si, %di
127# CHECK-NEXT:  1      1     0.50                        cmovlw	%si, %di
128# CHECK-NEXT:  1      1     0.50                        cmovgew	%si, %di
129# CHECK-NEXT:  1      1     0.50                        cmovlew	%si, %di
130# CHECK-NEXT:  1      1     0.50                        cmovgw	%si, %di
131# CHECK-NEXT:  1      1     1.00    *                   cmovow	(%rax), %di
132# CHECK-NEXT:  1      1     1.00    *                   cmovnow	(%rax), %di
133# CHECK-NEXT:  1      1     1.00    *                   cmovbw	(%rax), %di
134# CHECK-NEXT:  1      1     1.00    *                   cmovaew	(%rax), %di
135# CHECK-NEXT:  1      1     1.00    *                   cmovew	(%rax), %di
136# CHECK-NEXT:  1      1     1.00    *                   cmovnew	(%rax), %di
137# CHECK-NEXT:  1      1     1.00    *                   cmovbew	(%rax), %di
138# CHECK-NEXT:  1      1     1.00    *                   cmovaw	(%rax), %di
139# CHECK-NEXT:  1      1     1.00    *                   cmovsw	(%rax), %di
140# CHECK-NEXT:  1      1     1.00    *                   cmovnsw	(%rax), %di
141# CHECK-NEXT:  1      1     1.00    *                   cmovpw	(%rax), %di
142# CHECK-NEXT:  1      1     1.00    *                   cmovnpw	(%rax), %di
143# CHECK-NEXT:  1      1     1.00    *                   cmovlw	(%rax), %di
144# CHECK-NEXT:  1      1     1.00    *                   cmovgew	(%rax), %di
145# CHECK-NEXT:  1      1     1.00    *                   cmovlew	(%rax), %di
146# CHECK-NEXT:  1      1     1.00    *                   cmovgw	(%rax), %di
147# CHECK-NEXT:  1      1     0.50                        cmovol	%esi, %edi
148# CHECK-NEXT:  1      1     0.50                        cmovnol	%esi, %edi
149# CHECK-NEXT:  1      1     0.50                        cmovbl	%esi, %edi
150# CHECK-NEXT:  1      1     0.50                        cmovael	%esi, %edi
151# CHECK-NEXT:  1      1     0.50                        cmovel	%esi, %edi
152# CHECK-NEXT:  1      1     0.50                        cmovnel	%esi, %edi
153# CHECK-NEXT:  1      1     0.50                        cmovbel	%esi, %edi
154# CHECK-NEXT:  1      1     0.50                        cmoval	%esi, %edi
155# CHECK-NEXT:  1      1     0.50                        cmovsl	%esi, %edi
156# CHECK-NEXT:  1      1     0.50                        cmovnsl	%esi, %edi
157# CHECK-NEXT:  1      1     0.50                        cmovpl	%esi, %edi
158# CHECK-NEXT:  1      1     0.50                        cmovnpl	%esi, %edi
159# CHECK-NEXT:  1      1     0.50                        cmovll	%esi, %edi
160# CHECK-NEXT:  1      1     0.50                        cmovgel	%esi, %edi
161# CHECK-NEXT:  1      1     0.50                        cmovlel	%esi, %edi
162# CHECK-NEXT:  1      1     0.50                        cmovgl	%esi, %edi
163# CHECK-NEXT:  1      1     1.00    *                   cmovol	(%rax), %edi
164# CHECK-NEXT:  1      1     1.00    *                   cmovnol	(%rax), %edi
165# CHECK-NEXT:  1      1     1.00    *                   cmovbl	(%rax), %edi
166# CHECK-NEXT:  1      1     1.00    *                   cmovael	(%rax), %edi
167# CHECK-NEXT:  1      1     1.00    *                   cmovel	(%rax), %edi
168# CHECK-NEXT:  1      1     1.00    *                   cmovnel	(%rax), %edi
169# CHECK-NEXT:  1      1     1.00    *                   cmovbel	(%rax), %edi
170# CHECK-NEXT:  1      1     1.00    *                   cmoval	(%rax), %edi
171# CHECK-NEXT:  1      1     1.00    *                   cmovsl	(%rax), %edi
172# CHECK-NEXT:  1      1     1.00    *                   cmovnsl	(%rax), %edi
173# CHECK-NEXT:  1      1     1.00    *                   cmovpl	(%rax), %edi
174# CHECK-NEXT:  1      1     1.00    *                   cmovnpl	(%rax), %edi
175# CHECK-NEXT:  1      1     1.00    *                   cmovll	(%rax), %edi
176# CHECK-NEXT:  1      1     1.00    *                   cmovgel	(%rax), %edi
177# CHECK-NEXT:  1      1     1.00    *                   cmovlel	(%rax), %edi
178# CHECK-NEXT:  1      1     1.00    *                   cmovgl	(%rax), %edi
179# CHECK-NEXT:  1      1     0.50                        cmovoq	%rsi, %rdi
180# CHECK-NEXT:  1      1     0.50                        cmovnoq	%rsi, %rdi
181# CHECK-NEXT:  1      1     0.50                        cmovbq	%rsi, %rdi
182# CHECK-NEXT:  1      1     0.50                        cmovaeq	%rsi, %rdi
183# CHECK-NEXT:  1      1     0.50                        cmoveq	%rsi, %rdi
184# CHECK-NEXT:  1      1     0.50                        cmovneq	%rsi, %rdi
185# CHECK-NEXT:  1      1     0.50                        cmovbeq	%rsi, %rdi
186# CHECK-NEXT:  1      1     0.50                        cmovaq	%rsi, %rdi
187# CHECK-NEXT:  1      1     0.50                        cmovsq	%rsi, %rdi
188# CHECK-NEXT:  1      1     0.50                        cmovnsq	%rsi, %rdi
189# CHECK-NEXT:  1      1     0.50                        cmovpq	%rsi, %rdi
190# CHECK-NEXT:  1      1     0.50                        cmovnpq	%rsi, %rdi
191# CHECK-NEXT:  1      1     0.50                        cmovlq	%rsi, %rdi
192# CHECK-NEXT:  1      1     0.50                        cmovgeq	%rsi, %rdi
193# CHECK-NEXT:  1      1     0.50                        cmovleq	%rsi, %rdi
194# CHECK-NEXT:  1      1     0.50                        cmovgq	%rsi, %rdi
195# CHECK-NEXT:  1      1     1.00    *                   cmovoq	(%rax), %rdi
196# CHECK-NEXT:  1      1     1.00    *                   cmovnoq	(%rax), %rdi
197# CHECK-NEXT:  1      1     1.00    *                   cmovbq	(%rax), %rdi
198# CHECK-NEXT:  1      1     1.00    *                   cmovaeq	(%rax), %rdi
199# CHECK-NEXT:  1      1     1.00    *                   cmoveq	(%rax), %rdi
200# CHECK-NEXT:  1      1     1.00    *                   cmovneq	(%rax), %rdi
201# CHECK-NEXT:  1      1     1.00    *                   cmovbeq	(%rax), %rdi
202# CHECK-NEXT:  1      1     1.00    *                   cmovaq	(%rax), %rdi
203# CHECK-NEXT:  1      1     1.00    *                   cmovsq	(%rax), %rdi
204# CHECK-NEXT:  1      1     1.00    *                   cmovnsq	(%rax), %rdi
205# CHECK-NEXT:  1      1     1.00    *                   cmovpq	(%rax), %rdi
206# CHECK-NEXT:  1      1     1.00    *                   cmovnpq	(%rax), %rdi
207# CHECK-NEXT:  1      1     1.00    *                   cmovlq	(%rax), %rdi
208# CHECK-NEXT:  1      1     1.00    *                   cmovgeq	(%rax), %rdi
209# CHECK-NEXT:  1      1     1.00    *                   cmovleq	(%rax), %rdi
210# CHECK-NEXT:  1      1     1.00    *                   cmovgq	(%rax), %rdi
211
212# CHECK:      Resources:
213# CHECK-NEXT: [0]   - AtomPort0
214# CHECK-NEXT: [1]   - AtomPort1
215
216# CHECK:      Resource pressure per iteration:
217# CHECK-NEXT: [0]    [1]
218# CHECK-NEXT: 72.00  24.00
219
220# CHECK:      Resource pressure by instruction:
221# CHECK-NEXT: [0]    [1]    Instructions:
222# CHECK-NEXT: 0.50   0.50   cmovow	%si, %di
223# CHECK-NEXT: 0.50   0.50   cmovnow	%si, %di
224# CHECK-NEXT: 0.50   0.50   cmovbw	%si, %di
225# CHECK-NEXT: 0.50   0.50   cmovaew	%si, %di
226# CHECK-NEXT: 0.50   0.50   cmovew	%si, %di
227# CHECK-NEXT: 0.50   0.50   cmovnew	%si, %di
228# CHECK-NEXT: 0.50   0.50   cmovbew	%si, %di
229# CHECK-NEXT: 0.50   0.50   cmovaw	%si, %di
230# CHECK-NEXT: 0.50   0.50   cmovsw	%si, %di
231# CHECK-NEXT: 0.50   0.50   cmovnsw	%si, %di
232# CHECK-NEXT: 0.50   0.50   cmovpw	%si, %di
233# CHECK-NEXT: 0.50   0.50   cmovnpw	%si, %di
234# CHECK-NEXT: 0.50   0.50   cmovlw	%si, %di
235# CHECK-NEXT: 0.50   0.50   cmovgew	%si, %di
236# CHECK-NEXT: 0.50   0.50   cmovlew	%si, %di
237# CHECK-NEXT: 0.50   0.50   cmovgw	%si, %di
238# CHECK-NEXT: 1.00    -     cmovow	(%rax), %di
239# CHECK-NEXT: 1.00    -     cmovnow	(%rax), %di
240# CHECK-NEXT: 1.00    -     cmovbw	(%rax), %di
241# CHECK-NEXT: 1.00    -     cmovaew	(%rax), %di
242# CHECK-NEXT: 1.00    -     cmovew	(%rax), %di
243# CHECK-NEXT: 1.00    -     cmovnew	(%rax), %di
244# CHECK-NEXT: 1.00    -     cmovbew	(%rax), %di
245# CHECK-NEXT: 1.00    -     cmovaw	(%rax), %di
246# CHECK-NEXT: 1.00    -     cmovsw	(%rax), %di
247# CHECK-NEXT: 1.00    -     cmovnsw	(%rax), %di
248# CHECK-NEXT: 1.00    -     cmovpw	(%rax), %di
249# CHECK-NEXT: 1.00    -     cmovnpw	(%rax), %di
250# CHECK-NEXT: 1.00    -     cmovlw	(%rax), %di
251# CHECK-NEXT: 1.00    -     cmovgew	(%rax), %di
252# CHECK-NEXT: 1.00    -     cmovlew	(%rax), %di
253# CHECK-NEXT: 1.00    -     cmovgw	(%rax), %di
254# CHECK-NEXT: 0.50   0.50   cmovol	%esi, %edi
255# CHECK-NEXT: 0.50   0.50   cmovnol	%esi, %edi
256# CHECK-NEXT: 0.50   0.50   cmovbl	%esi, %edi
257# CHECK-NEXT: 0.50   0.50   cmovael	%esi, %edi
258# CHECK-NEXT: 0.50   0.50   cmovel	%esi, %edi
259# CHECK-NEXT: 0.50   0.50   cmovnel	%esi, %edi
260# CHECK-NEXT: 0.50   0.50   cmovbel	%esi, %edi
261# CHECK-NEXT: 0.50   0.50   cmoval	%esi, %edi
262# CHECK-NEXT: 0.50   0.50   cmovsl	%esi, %edi
263# CHECK-NEXT: 0.50   0.50   cmovnsl	%esi, %edi
264# CHECK-NEXT: 0.50   0.50   cmovpl	%esi, %edi
265# CHECK-NEXT: 0.50   0.50   cmovnpl	%esi, %edi
266# CHECK-NEXT: 0.50   0.50   cmovll	%esi, %edi
267# CHECK-NEXT: 0.50   0.50   cmovgel	%esi, %edi
268# CHECK-NEXT: 0.50   0.50   cmovlel	%esi, %edi
269# CHECK-NEXT: 0.50   0.50   cmovgl	%esi, %edi
270# CHECK-NEXT: 1.00    -     cmovol	(%rax), %edi
271# CHECK-NEXT: 1.00    -     cmovnol	(%rax), %edi
272# CHECK-NEXT: 1.00    -     cmovbl	(%rax), %edi
273# CHECK-NEXT: 1.00    -     cmovael	(%rax), %edi
274# CHECK-NEXT: 1.00    -     cmovel	(%rax), %edi
275# CHECK-NEXT: 1.00    -     cmovnel	(%rax), %edi
276# CHECK-NEXT: 1.00    -     cmovbel	(%rax), %edi
277# CHECK-NEXT: 1.00    -     cmoval	(%rax), %edi
278# CHECK-NEXT: 1.00    -     cmovsl	(%rax), %edi
279# CHECK-NEXT: 1.00    -     cmovnsl	(%rax), %edi
280# CHECK-NEXT: 1.00    -     cmovpl	(%rax), %edi
281# CHECK-NEXT: 1.00    -     cmovnpl	(%rax), %edi
282# CHECK-NEXT: 1.00    -     cmovll	(%rax), %edi
283# CHECK-NEXT: 1.00    -     cmovgel	(%rax), %edi
284# CHECK-NEXT: 1.00    -     cmovlel	(%rax), %edi
285# CHECK-NEXT: 1.00    -     cmovgl	(%rax), %edi
286# CHECK-NEXT: 0.50   0.50   cmovoq	%rsi, %rdi
287# CHECK-NEXT: 0.50   0.50   cmovnoq	%rsi, %rdi
288# CHECK-NEXT: 0.50   0.50   cmovbq	%rsi, %rdi
289# CHECK-NEXT: 0.50   0.50   cmovaeq	%rsi, %rdi
290# CHECK-NEXT: 0.50   0.50   cmoveq	%rsi, %rdi
291# CHECK-NEXT: 0.50   0.50   cmovneq	%rsi, %rdi
292# CHECK-NEXT: 0.50   0.50   cmovbeq	%rsi, %rdi
293# CHECK-NEXT: 0.50   0.50   cmovaq	%rsi, %rdi
294# CHECK-NEXT: 0.50   0.50   cmovsq	%rsi, %rdi
295# CHECK-NEXT: 0.50   0.50   cmovnsq	%rsi, %rdi
296# CHECK-NEXT: 0.50   0.50   cmovpq	%rsi, %rdi
297# CHECK-NEXT: 0.50   0.50   cmovnpq	%rsi, %rdi
298# CHECK-NEXT: 0.50   0.50   cmovlq	%rsi, %rdi
299# CHECK-NEXT: 0.50   0.50   cmovgeq	%rsi, %rdi
300# CHECK-NEXT: 0.50   0.50   cmovleq	%rsi, %rdi
301# CHECK-NEXT: 0.50   0.50   cmovgq	%rsi, %rdi
302# CHECK-NEXT: 1.00    -     cmovoq	(%rax), %rdi
303# CHECK-NEXT: 1.00    -     cmovnoq	(%rax), %rdi
304# CHECK-NEXT: 1.00    -     cmovbq	(%rax), %rdi
305# CHECK-NEXT: 1.00    -     cmovaeq	(%rax), %rdi
306# CHECK-NEXT: 1.00    -     cmoveq	(%rax), %rdi
307# CHECK-NEXT: 1.00    -     cmovneq	(%rax), %rdi
308# CHECK-NEXT: 1.00    -     cmovbeq	(%rax), %rdi
309# CHECK-NEXT: 1.00    -     cmovaq	(%rax), %rdi
310# CHECK-NEXT: 1.00    -     cmovsq	(%rax), %rdi
311# CHECK-NEXT: 1.00    -     cmovnsq	(%rax), %rdi
312# CHECK-NEXT: 1.00    -     cmovpq	(%rax), %rdi
313# CHECK-NEXT: 1.00    -     cmovnpq	(%rax), %rdi
314# CHECK-NEXT: 1.00    -     cmovlq	(%rax), %rdi
315# CHECK-NEXT: 1.00    -     cmovgeq	(%rax), %rdi
316# CHECK-NEXT: 1.00    -     cmovleq	(%rax), %rdi
317# CHECK-NEXT: 1.00    -     cmovgq	(%rax), %rdi
318