1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=haswell -timeline -register-file-stats -iterations=1 < %s | FileCheck %s
3
4# On HSW, renamer-based zeroing does not work for:
5#  - 16 and 8-bit GPRs
6#  - MMX
7#  - ANDN variants
8
9subl  %eax, %eax
10subq  %rax, %rax
11xorl  %eax, %eax
12xorq  %rax, %rax
13
14pcmpgtb   %mm2, %mm2
15pcmpgtd   %mm2, %mm2
16# pcmpgtq   %mm2, %mm2 # invalid operand for instruction
17pcmpgtw   %mm2, %mm2
18
19pcmpgtb   %xmm2, %xmm2
20pcmpgtd   %xmm2, %xmm2
21pcmpgtq   %xmm2, %xmm2
22pcmpgtw   %xmm2, %xmm2
23
24vpcmpgtb  %xmm3, %xmm3, %xmm3
25vpcmpgtd  %xmm3, %xmm3, %xmm3
26vpcmpgtq  %xmm3, %xmm3, %xmm3
27vpcmpgtw  %xmm3, %xmm3, %xmm3
28
29vpcmpgtb  %xmm3, %xmm3, %xmm5
30vpcmpgtd  %xmm3, %xmm3, %xmm5
31vpcmpgtq  %xmm3, %xmm3, %xmm5
32vpcmpgtw  %xmm3, %xmm3, %xmm5
33
34vpcmpgtb  %ymm3, %ymm3, %ymm3
35vpcmpgtd  %ymm3, %ymm3, %ymm3
36vpcmpgtq  %ymm3, %ymm3, %ymm3
37vpcmpgtw  %ymm3, %ymm3, %ymm3
38
39vpcmpgtb  %ymm3, %ymm3, %ymm5
40vpcmpgtd  %ymm3, %ymm3, %ymm5
41vpcmpgtq  %ymm3, %ymm3, %ymm5
42vpcmpgtw  %ymm3, %ymm3, %ymm5
43
44psubb   %mm2, %mm2
45psubd   %mm2, %mm2
46psubq   %mm2, %mm2
47psubw   %mm2, %mm2
48psubb   %xmm2, %xmm2
49psubd   %xmm2, %xmm2
50psubq   %xmm2, %xmm2
51psubw   %xmm2, %xmm2
52vpsubb  %xmm3, %xmm3, %xmm3
53vpsubd  %xmm3, %xmm3, %xmm3
54vpsubq  %xmm3, %xmm3, %xmm3
55vpsubw  %xmm3, %xmm3, %xmm3
56vpsubb  %ymm3, %ymm3, %ymm3
57vpsubd  %ymm3, %ymm3, %ymm3
58vpsubq  %ymm3, %ymm3, %ymm3
59vpsubw  %ymm3, %ymm3, %ymm3
60
61vpsubb  %xmm3, %xmm3, %xmm5
62vpsubd  %xmm3, %xmm3, %xmm5
63vpsubq  %xmm3, %xmm3, %xmm5
64vpsubw  %xmm3, %xmm3, %xmm5
65vpsubb  %ymm3, %ymm3, %ymm5
66vpsubd  %ymm3, %ymm3, %ymm5
67vpsubq  %ymm3, %ymm3, %ymm5
68vpsubw  %ymm3, %ymm3, %ymm5
69
70andnps  %xmm0, %xmm0
71andnpd  %xmm1, %xmm1
72vandnps %xmm2, %xmm2, %xmm2
73vandnpd %xmm1, %xmm1, %xmm1
74vandnps %ymm2, %ymm2, %ymm2
75vandnpd %ymm1, %ymm1, %ymm1
76pandn   %mm2, %mm2
77pandn   %xmm2, %xmm2
78vpandn  %xmm3, %xmm3, %xmm3
79vpandn  %ymm3, %ymm3, %ymm3
80
81vandnps %xmm2, %xmm2, %xmm5
82vandnpd %xmm1, %xmm1, %xmm5
83vpandn  %xmm3, %xmm3, %xmm5
84vandnps %ymm2, %ymm2, %ymm5
85vandnpd %ymm1, %ymm1, %ymm5
86vpandn  %ymm3, %ymm3, %ymm5
87
88xorps  %xmm0, %xmm0
89xorpd  %xmm1, %xmm1
90vxorps %xmm2, %xmm2, %xmm2
91vxorpd %xmm1, %xmm1, %xmm1
92vxorps %ymm2, %ymm2, %ymm2
93vxorpd %ymm1, %ymm1, %ymm1
94pxor   %mm2, %mm2
95pxor   %xmm2, %xmm2
96vpxor  %xmm3, %xmm3, %xmm3
97vpxor  %ymm3, %ymm3, %ymm3
98
99vxorps %xmm4, %xmm4, %xmm5
100vxorpd %xmm1, %xmm1, %xmm3
101vxorps %ymm4, %ymm4, %ymm5
102vxorpd %ymm1, %ymm1, %ymm3
103vpxor  %xmm3, %xmm3, %xmm5
104vpxor  %ymm3, %ymm3, %ymm5
105
106# CHECK:      Iterations:        1
107# CHECK-NEXT: Instructions:      83
108# CHECK-NEXT: Total Cycles:      25
109# CHECK-NEXT: Total uOps:        83
110
111# CHECK:      Dispatch Width:    4
112# CHECK-NEXT: uOps Per Cycle:    3.32
113# CHECK-NEXT: IPC:               3.32
114# CHECK-NEXT: Block RThroughput: 20.8
115
116# CHECK:      Instruction Info:
117# CHECK-NEXT: [1]: #uOps
118# CHECK-NEXT: [2]: Latency
119# CHECK-NEXT: [3]: RThroughput
120# CHECK-NEXT: [4]: MayLoad
121# CHECK-NEXT: [5]: MayStore
122# CHECK-NEXT: [6]: HasSideEffects (U)
123
124# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
125# CHECK-NEXT:  1      0     0.25                        subl	%eax, %eax
126# CHECK-NEXT:  1      0     0.25                        subq	%rax, %rax
127# CHECK-NEXT:  1      0     0.25                        xorl	%eax, %eax
128# CHECK-NEXT:  1      0     0.25                        xorq	%rax, %rax
129# CHECK-NEXT:  1      1     0.50                        pcmpgtb	%mm2, %mm2
130# CHECK-NEXT:  1      1     0.50                        pcmpgtd	%mm2, %mm2
131# CHECK-NEXT:  1      1     0.50                        pcmpgtw	%mm2, %mm2
132# CHECK-NEXT:  1      0     0.25                        pcmpgtb	%xmm2, %xmm2
133# CHECK-NEXT:  1      0     0.25                        pcmpgtd	%xmm2, %xmm2
134# CHECK-NEXT:  1      0     0.25                        pcmpgtq	%xmm2, %xmm2
135# CHECK-NEXT:  1      0     0.25                        pcmpgtw	%xmm2, %xmm2
136# CHECK-NEXT:  1      0     0.25                        vpcmpgtb	%xmm3, %xmm3, %xmm3
137# CHECK-NEXT:  1      0     0.25                        vpcmpgtd	%xmm3, %xmm3, %xmm3
138# CHECK-NEXT:  1      0     0.25                        vpcmpgtq	%xmm3, %xmm3, %xmm3
139# CHECK-NEXT:  1      0     0.25                        vpcmpgtw	%xmm3, %xmm3, %xmm3
140# CHECK-NEXT:  1      0     0.25                        vpcmpgtb	%xmm3, %xmm3, %xmm5
141# CHECK-NEXT:  1      0     0.25                        vpcmpgtd	%xmm3, %xmm3, %xmm5
142# CHECK-NEXT:  1      0     0.25                        vpcmpgtq	%xmm3, %xmm3, %xmm5
143# CHECK-NEXT:  1      0     0.25                        vpcmpgtw	%xmm3, %xmm3, %xmm5
144# CHECK-NEXT:  1      0     0.25                        vpcmpgtb	%ymm3, %ymm3, %ymm3
145# CHECK-NEXT:  1      0     0.25                        vpcmpgtd	%ymm3, %ymm3, %ymm3
146# CHECK-NEXT:  1      0     0.25                        vpcmpgtq	%ymm3, %ymm3, %ymm3
147# CHECK-NEXT:  1      0     0.25                        vpcmpgtw	%ymm3, %ymm3, %ymm3
148# CHECK-NEXT:  1      0     0.25                        vpcmpgtb	%ymm3, %ymm3, %ymm5
149# CHECK-NEXT:  1      0     0.25                        vpcmpgtd	%ymm3, %ymm3, %ymm5
150# CHECK-NEXT:  1      0     0.25                        vpcmpgtq	%ymm3, %ymm3, %ymm5
151# CHECK-NEXT:  1      0     0.25                        vpcmpgtw	%ymm3, %ymm3, %ymm5
152# CHECK-NEXT:  1      1     0.50                        psubb	%mm2, %mm2
153# CHECK-NEXT:  1      1     0.50                        psubd	%mm2, %mm2
154# CHECK-NEXT:  1      1     0.50                        psubq	%mm2, %mm2
155# CHECK-NEXT:  1      1     0.50                        psubw	%mm2, %mm2
156# CHECK-NEXT:  1      0     0.25                        psubb	%xmm2, %xmm2
157# CHECK-NEXT:  1      0     0.25                        psubd	%xmm2, %xmm2
158# CHECK-NEXT:  1      0     0.25                        psubq	%xmm2, %xmm2
159# CHECK-NEXT:  1      0     0.25                        psubw	%xmm2, %xmm2
160# CHECK-NEXT:  1      0     0.25                        vpsubb	%xmm3, %xmm3, %xmm3
161# CHECK-NEXT:  1      0     0.25                        vpsubd	%xmm3, %xmm3, %xmm3
162# CHECK-NEXT:  1      0     0.25                        vpsubq	%xmm3, %xmm3, %xmm3
163# CHECK-NEXT:  1      0     0.25                        vpsubw	%xmm3, %xmm3, %xmm3
164# CHECK-NEXT:  1      0     0.25                        vpsubb	%ymm3, %ymm3, %ymm3
165# CHECK-NEXT:  1      0     0.25                        vpsubd	%ymm3, %ymm3, %ymm3
166# CHECK-NEXT:  1      0     0.25                        vpsubq	%ymm3, %ymm3, %ymm3
167# CHECK-NEXT:  1      0     0.25                        vpsubw	%ymm3, %ymm3, %ymm3
168# CHECK-NEXT:  1      0     0.25                        vpsubb	%xmm3, %xmm3, %xmm5
169# CHECK-NEXT:  1      0     0.25                        vpsubd	%xmm3, %xmm3, %xmm5
170# CHECK-NEXT:  1      0     0.25                        vpsubq	%xmm3, %xmm3, %xmm5
171# CHECK-NEXT:  1      0     0.25                        vpsubw	%xmm3, %xmm3, %xmm5
172# CHECK-NEXT:  1      0     0.25                        vpsubb	%ymm3, %ymm3, %ymm5
173# CHECK-NEXT:  1      0     0.25                        vpsubd	%ymm3, %ymm3, %ymm5
174# CHECK-NEXT:  1      0     0.25                        vpsubq	%ymm3, %ymm3, %ymm5
175# CHECK-NEXT:  1      0     0.25                        vpsubw	%ymm3, %ymm3, %ymm5
176# CHECK-NEXT:  1      1     1.00                        andnps	%xmm0, %xmm0
177# CHECK-NEXT:  1      1     1.00                        andnpd	%xmm1, %xmm1
178# CHECK-NEXT:  1      1     1.00                        vandnps	%xmm2, %xmm2, %xmm2
179# CHECK-NEXT:  1      1     1.00                        vandnpd	%xmm1, %xmm1, %xmm1
180# CHECK-NEXT:  1      1     1.00                        vandnps	%ymm2, %ymm2, %ymm2
181# CHECK-NEXT:  1      1     1.00                        vandnpd	%ymm1, %ymm1, %ymm1
182# CHECK-NEXT:  1      1     0.33                        pandn	%mm2, %mm2
183# CHECK-NEXT:  1      1     0.33                        pandn	%xmm2, %xmm2
184# CHECK-NEXT:  1      1     0.33                        vpandn	%xmm3, %xmm3, %xmm3
185# CHECK-NEXT:  1      1     0.33                        vpandn	%ymm3, %ymm3, %ymm3
186# CHECK-NEXT:  1      1     1.00                        vandnps	%xmm2, %xmm2, %xmm5
187# CHECK-NEXT:  1      1     1.00                        vandnpd	%xmm1, %xmm1, %xmm5
188# CHECK-NEXT:  1      1     0.33                        vpandn	%xmm3, %xmm3, %xmm5
189# CHECK-NEXT:  1      1     1.00                        vandnps	%ymm2, %ymm2, %ymm5
190# CHECK-NEXT:  1      1     1.00                        vandnpd	%ymm1, %ymm1, %ymm5
191# CHECK-NEXT:  1      1     0.33                        vpandn	%ymm3, %ymm3, %ymm5
192# CHECK-NEXT:  1      0     0.25                        xorps	%xmm0, %xmm0
193# CHECK-NEXT:  1      0     0.25                        xorpd	%xmm1, %xmm1
194# CHECK-NEXT:  1      0     0.25                        vxorps	%xmm2, %xmm2, %xmm2
195# CHECK-NEXT:  1      0     0.25                        vxorpd	%xmm1, %xmm1, %xmm1
196# CHECK-NEXT:  1      0     0.25                        vxorps	%ymm2, %ymm2, %ymm2
197# CHECK-NEXT:  1      0     0.25                        vxorpd	%ymm1, %ymm1, %ymm1
198# CHECK-NEXT:  1      1     0.33                        pxor	%mm2, %mm2
199# CHECK-NEXT:  1      0     0.25                        pxor	%xmm2, %xmm2
200# CHECK-NEXT:  1      0     0.25                        vpxor	%xmm3, %xmm3, %xmm3
201# CHECK-NEXT:  1      0     0.25                        vpxor	%ymm3, %ymm3, %ymm3
202# CHECK-NEXT:  1      0     0.25                        vxorps	%xmm4, %xmm4, %xmm5
203# CHECK-NEXT:  1      0     0.25                        vxorpd	%xmm1, %xmm1, %xmm3
204# CHECK-NEXT:  1      0     0.25                        vxorps	%ymm4, %ymm4, %ymm5
205# CHECK-NEXT:  1      0     0.25                        vxorpd	%ymm1, %ymm1, %ymm3
206# CHECK-NEXT:  1      0     0.25                        vpxor	%xmm3, %xmm3, %xmm5
207# CHECK-NEXT:  1      0     0.25                        vpxor	%ymm3, %ymm3, %ymm5
208
209# CHECK:      Register File statistics:
210# CHECK-NEXT: Total number of mappings created:    87
211# CHECK-NEXT: Max number of mappings used:         24
212
213# CHECK:      Resources:
214# CHECK-NEXT: [0]   - HWDivider
215# CHECK-NEXT: [1]   - HWFPDivider
216# CHECK-NEXT: [2]   - HWPort0
217# CHECK-NEXT: [3]   - HWPort1
218# CHECK-NEXT: [4]   - HWPort2
219# CHECK-NEXT: [5]   - HWPort3
220# CHECK-NEXT: [6]   - HWPort4
221# CHECK-NEXT: [7]   - HWPort5
222# CHECK-NEXT: [8]   - HWPort6
223# CHECK-NEXT: [9]   - HWPort7
224
225# CHECK:      Resource pressure per iteration:
226# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
227# CHECK-NEXT:  -      -     4.00   6.00    -      -      -     14.00   -      -
228
229# CHECK:      Resource pressure by instruction:
230# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
231# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     subl	%eax, %eax
232# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     subq	%rax, %rax
233# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     xorl	%eax, %eax
234# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     xorq	%rax, %rax
235# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     pcmpgtb	%mm2, %mm2
236# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     pcmpgtd	%mm2, %mm2
237# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     pcmpgtw	%mm2, %mm2
238# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     pcmpgtb	%xmm2, %xmm2
239# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     pcmpgtd	%xmm2, %xmm2
240# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     pcmpgtq	%xmm2, %xmm2
241# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     pcmpgtw	%xmm2, %xmm2
242# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtb	%xmm3, %xmm3, %xmm3
243# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtd	%xmm3, %xmm3, %xmm3
244# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtq	%xmm3, %xmm3, %xmm3
245# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtw	%xmm3, %xmm3, %xmm3
246# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtb	%xmm3, %xmm3, %xmm5
247# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtd	%xmm3, %xmm3, %xmm5
248# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtq	%xmm3, %xmm3, %xmm5
249# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtw	%xmm3, %xmm3, %xmm5
250# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtb	%ymm3, %ymm3, %ymm3
251# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtd	%ymm3, %ymm3, %ymm3
252# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtq	%ymm3, %ymm3, %ymm3
253# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtw	%ymm3, %ymm3, %ymm3
254# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtb	%ymm3, %ymm3, %ymm5
255# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtd	%ymm3, %ymm3, %ymm5
256# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtq	%ymm3, %ymm3, %ymm5
257# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpcmpgtw	%ymm3, %ymm3, %ymm5
258# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     psubb	%mm2, %mm2
259# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     psubd	%mm2, %mm2
260# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     psubq	%mm2, %mm2
261# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     psubw	%mm2, %mm2
262# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     psubb	%xmm2, %xmm2
263# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     psubd	%xmm2, %xmm2
264# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     psubq	%xmm2, %xmm2
265# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     psubw	%xmm2, %xmm2
266# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubb	%xmm3, %xmm3, %xmm3
267# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubd	%xmm3, %xmm3, %xmm3
268# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubq	%xmm3, %xmm3, %xmm3
269# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubw	%xmm3, %xmm3, %xmm3
270# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubb	%ymm3, %ymm3, %ymm3
271# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubd	%ymm3, %ymm3, %ymm3
272# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubq	%ymm3, %ymm3, %ymm3
273# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubw	%ymm3, %ymm3, %ymm3
274# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubb	%xmm3, %xmm3, %xmm5
275# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubd	%xmm3, %xmm3, %xmm5
276# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubq	%xmm3, %xmm3, %xmm5
277# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubw	%xmm3, %xmm3, %xmm5
278# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubb	%ymm3, %ymm3, %ymm5
279# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubd	%ymm3, %ymm3, %ymm5
280# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubq	%ymm3, %ymm3, %ymm5
281# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpsubw	%ymm3, %ymm3, %ymm5
282# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     andnps	%xmm0, %xmm0
283# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     andnpd	%xmm1, %xmm1
284# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vandnps	%xmm2, %xmm2, %xmm2
285# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vandnpd	%xmm1, %xmm1, %xmm1
286# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vandnps	%ymm2, %ymm2, %ymm2
287# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vandnpd	%ymm1, %ymm1, %ymm1
288# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     pandn	%mm2, %mm2
289# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     pandn	%xmm2, %xmm2
290# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     vpandn	%xmm3, %xmm3, %xmm3
291# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     vpandn	%ymm3, %ymm3, %ymm3
292# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vandnps	%xmm2, %xmm2, %xmm5
293# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vandnpd	%xmm1, %xmm1, %xmm5
294# CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     vpandn	%xmm3, %xmm3, %xmm5
295# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vandnps	%ymm2, %ymm2, %ymm5
296# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vandnpd	%ymm1, %ymm1, %ymm5
297# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     vpandn	%ymm3, %ymm3, %ymm5
298# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     xorps	%xmm0, %xmm0
299# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     xorpd	%xmm1, %xmm1
300# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vxorps	%xmm2, %xmm2, %xmm2
301# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vxorpd	%xmm1, %xmm1, %xmm1
302# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vxorps	%ymm2, %ymm2, %ymm2
303# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vxorpd	%ymm1, %ymm1, %ymm1
304# CHECK-NEXT:  -      -     1.00    -      -      -      -      -      -      -     pxor	%mm2, %mm2
305# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     pxor	%xmm2, %xmm2
306# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpxor	%xmm3, %xmm3, %xmm3
307# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpxor	%ymm3, %ymm3, %ymm3
308# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vxorps	%xmm4, %xmm4, %xmm5
309# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vxorpd	%xmm1, %xmm1, %xmm3
310# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vxorps	%ymm4, %ymm4, %ymm5
311# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vxorpd	%ymm1, %ymm1, %ymm3
312# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpxor	%xmm3, %xmm3, %xmm5
313# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     vpxor	%ymm3, %ymm3, %ymm5
314
315# CHECK:      Timeline view:
316# CHECK-NEXT:                     0123456789
317# CHECK-NEXT: Index     0123456789          01234
318
319# CHECK:      [0,0]     DR   .    .    .    .   .   subl	%eax, %eax
320# CHECK-NEXT: [0,1]     DR   .    .    .    .   .   subq	%rax, %rax
321# CHECK-NEXT: [0,2]     DR   .    .    .    .   .   xorl	%eax, %eax
322# CHECK-NEXT: [0,3]     DR   .    .    .    .   .   xorq	%rax, %rax
323# CHECK-NEXT: [0,4]     .DeER.    .    .    .   .   pcmpgtb	%mm2, %mm2
324# CHECK-NEXT: [0,5]     .D=eER    .    .    .   .   pcmpgtd	%mm2, %mm2
325# CHECK-NEXT: [0,6]     .D==eER   .    .    .   .   pcmpgtw	%mm2, %mm2
326# CHECK-NEXT: [0,7]     .D----R   .    .    .   .   pcmpgtb	%xmm2, %xmm2
327# CHECK-NEXT: [0,8]     . D---R   .    .    .   .   pcmpgtd	%xmm2, %xmm2
328# CHECK-NEXT: [0,9]     . D---R   .    .    .   .   pcmpgtq	%xmm2, %xmm2
329# CHECK-NEXT: [0,10]    . D---R   .    .    .   .   pcmpgtw	%xmm2, %xmm2
330# CHECK-NEXT: [0,11]    . D---R   .    .    .   .   vpcmpgtb	%xmm3, %xmm3, %xmm3
331# CHECK-NEXT: [0,12]    .  D--R   .    .    .   .   vpcmpgtd	%xmm3, %xmm3, %xmm3
332# CHECK-NEXT: [0,13]    .  D--R   .    .    .   .   vpcmpgtq	%xmm3, %xmm3, %xmm3
333# CHECK-NEXT: [0,14]    .  D--R   .    .    .   .   vpcmpgtw	%xmm3, %xmm3, %xmm3
334# CHECK-NEXT: [0,15]    .  D--R   .    .    .   .   vpcmpgtb	%xmm3, %xmm3, %xmm5
335# CHECK-NEXT: [0,16]    .   D-R   .    .    .   .   vpcmpgtd	%xmm3, %xmm3, %xmm5
336# CHECK-NEXT: [0,17]    .   D-R   .    .    .   .   vpcmpgtq	%xmm3, %xmm3, %xmm5
337# CHECK-NEXT: [0,18]    .   D-R   .    .    .   .   vpcmpgtw	%xmm3, %xmm3, %xmm5
338# CHECK-NEXT: [0,19]    .   D-R   .    .    .   .   vpcmpgtb	%ymm3, %ymm3, %ymm3
339# CHECK-NEXT: [0,20]    .    DR   .    .    .   .   vpcmpgtd	%ymm3, %ymm3, %ymm3
340# CHECK-NEXT: [0,21]    .    DR   .    .    .   .   vpcmpgtq	%ymm3, %ymm3, %ymm3
341# CHECK-NEXT: [0,22]    .    DR   .    .    .   .   vpcmpgtw	%ymm3, %ymm3, %ymm3
342# CHECK-NEXT: [0,23]    .    DR   .    .    .   .   vpcmpgtb	%ymm3, %ymm3, %ymm5
343# CHECK-NEXT: [0,24]    .    .DR  .    .    .   .   vpcmpgtd	%ymm3, %ymm3, %ymm5
344# CHECK-NEXT: [0,25]    .    .DR  .    .    .   .   vpcmpgtq	%ymm3, %ymm3, %ymm5
345# CHECK-NEXT: [0,26]    .    .DR  .    .    .   .   vpcmpgtw	%ymm3, %ymm3, %ymm5
346# CHECK-NEXT: [0,27]    .    .DeER.    .    .   .   psubb	%mm2, %mm2
347# CHECK-NEXT: [0,28]    .    . DeER    .    .   .   psubd	%mm2, %mm2
348# CHECK-NEXT: [0,29]    .    . D=eER   .    .   .   psubq	%mm2, %mm2
349# CHECK-NEXT: [0,30]    .    . D==eER  .    .   .   psubw	%mm2, %mm2
350# CHECK-NEXT: [0,31]    .    . D----R  .    .   .   psubb	%xmm2, %xmm2
351# CHECK-NEXT: [0,32]    .    .  D---R  .    .   .   psubd	%xmm2, %xmm2
352# CHECK-NEXT: [0,33]    .    .  D---R  .    .   .   psubq	%xmm2, %xmm2
353# CHECK-NEXT: [0,34]    .    .  D---R  .    .   .   psubw	%xmm2, %xmm2
354# CHECK-NEXT: [0,35]    .    .  D---R  .    .   .   vpsubb	%xmm3, %xmm3, %xmm3
355# CHECK-NEXT: [0,36]    .    .   D--R  .    .   .   vpsubd	%xmm3, %xmm3, %xmm3
356# CHECK-NEXT: [0,37]    .    .   D--R  .    .   .   vpsubq	%xmm3, %xmm3, %xmm3
357# CHECK-NEXT: [0,38]    .    .   D--R  .    .   .   vpsubw	%xmm3, %xmm3, %xmm3
358# CHECK-NEXT: [0,39]    .    .   D--R  .    .   .   vpsubb	%ymm3, %ymm3, %ymm3
359# CHECK-NEXT: [0,40]    .    .    D-R  .    .   .   vpsubd	%ymm3, %ymm3, %ymm3
360# CHECK-NEXT: [0,41]    .    .    D-R  .    .   .   vpsubq	%ymm3, %ymm3, %ymm3
361# CHECK-NEXT: [0,42]    .    .    D-R  .    .   .   vpsubw	%ymm3, %ymm3, %ymm3
362# CHECK-NEXT: [0,43]    .    .    D-R  .    .   .   vpsubb	%xmm3, %xmm3, %xmm5
363# CHECK-NEXT: [0,44]    .    .    .DR  .    .   .   vpsubd	%xmm3, %xmm3, %xmm5
364# CHECK-NEXT: [0,45]    .    .    .DR  .    .   .   vpsubq	%xmm3, %xmm3, %xmm5
365# CHECK-NEXT: [0,46]    .    .    .DR  .    .   .   vpsubw	%xmm3, %xmm3, %xmm5
366# CHECK-NEXT: [0,47]    .    .    .DR  .    .   .   vpsubb	%ymm3, %ymm3, %ymm5
367# CHECK-NEXT: [0,48]    .    .    . DR .    .   .   vpsubd	%ymm3, %ymm3, %ymm5
368# CHECK-NEXT: [0,49]    .    .    . DR .    .   .   vpsubq	%ymm3, %ymm3, %ymm5
369# CHECK-NEXT: [0,50]    .    .    . DR .    .   .   vpsubw	%ymm3, %ymm3, %ymm5
370# CHECK-NEXT: [0,51]    .    .    . DeER    .   .   andnps	%xmm0, %xmm0
371# CHECK-NEXT: [0,52]    .    .    .  DeER   .   .   andnpd	%xmm1, %xmm1
372# CHECK-NEXT: [0,53]    .    .    .  D=eER  .   .   vandnps	%xmm2, %xmm2, %xmm2
373# CHECK-NEXT: [0,54]    .    .    .  D==eER .   .   vandnpd	%xmm1, %xmm1, %xmm1
374# CHECK-NEXT: [0,55]    .    .    .  D===eER.   .   vandnps	%ymm2, %ymm2, %ymm2
375# CHECK-NEXT: [0,56]    .    .    .   D===eER   .   vandnpd	%ymm1, %ymm1, %ymm1
376# CHECK-NEXT: [0,57]    .    .    .   DeE---R   .   pandn	%mm2, %mm2
377# CHECK-NEXT: [0,58]    .    .    .   D===eER   .   pandn	%xmm2, %xmm2
378# CHECK-NEXT: [0,59]    .    .    .   DeE---R   .   vpandn	%xmm3, %xmm3, %xmm3
379# CHECK-NEXT: [0,60]    .    .    .    DeE--R   .   vpandn	%ymm3, %ymm3, %ymm3
380# CHECK-NEXT: [0,61]    .    .    .    D===eER  .   vandnps	%xmm2, %xmm2, %xmm5
381# CHECK-NEXT: [0,62]    .    .    .    D====eER .   vandnpd	%xmm1, %xmm1, %xmm5
382# CHECK-NEXT: [0,63]    .    .    .    D=eE---R .   vpandn	%xmm3, %xmm3, %xmm5
383# CHECK-NEXT: [0,64]    .    .    .    .D====eER.   vandnps	%ymm2, %ymm2, %ymm5
384# CHECK-NEXT: [0,65]    .    .    .    .D=====eER   vandnpd	%ymm1, %ymm1, %ymm5
385# CHECK-NEXT: [0,66]    .    .    .    .DeE-----R   vpandn	%ymm3, %ymm3, %ymm5
386# CHECK-NEXT: [0,67]    .    .    .    .D-------R   xorps	%xmm0, %xmm0
387# CHECK-NEXT: [0,68]    .    .    .    . D=E----R   xorpd	%xmm1, %xmm1
388# CHECK-NEXT: [0,69]    .    .    .    . D=E----R   vxorps	%xmm2, %xmm2, %xmm2
389# CHECK-NEXT: [0,70]    .    .    .    . D=E----R   vxorpd	%xmm1, %xmm1, %xmm1
390# CHECK-NEXT: [0,71]    .    .    .    . D=E----R   vxorps	%ymm2, %ymm2, %ymm2
391# CHECK-NEXT: [0,72]    .    .    .    .  DE----R   vxorpd	%ymm1, %ymm1, %ymm1
392# CHECK-NEXT: [0,73]    .    .    .    .  DeE---R   pxor	%mm2, %mm2
393# CHECK-NEXT: [0,74]    .    .    .    .  DE----R   pxor	%xmm2, %xmm2
394# CHECK-NEXT: [0,75]    .    .    .    .  D-----R   vpxor	%xmm3, %xmm3, %xmm3
395# CHECK-NEXT: [0,76]    .    .    .    .   D----R   vpxor	%ymm3, %ymm3, %ymm3
396# CHECK-NEXT: [0,77]    .    .    .    .   D----R   vxorps	%xmm4, %xmm4, %xmm5
397# CHECK-NEXT: [0,78]    .    .    .    .   D----R   vxorpd	%xmm1, %xmm1, %xmm3
398# CHECK-NEXT: [0,79]    .    .    .    .   D----R   vxorps	%ymm4, %ymm4, %ymm5
399# CHECK-NEXT: [0,80]    .    .    .    .    D---R   vxorpd	%ymm1, %ymm1, %ymm3
400# CHECK-NEXT: [0,81]    .    .    .    .    D---R   vpxor	%xmm3, %xmm3, %xmm5
401# CHECK-NEXT: [0,82]    .    .    .    .    D---R   vpxor	%ymm3, %ymm3, %ymm5
402
403# CHECK:      Average Wait times (based on the timeline view):
404# CHECK-NEXT: [0]: Executions
405# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
406# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
407# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
408
409# CHECK:            [0]    [1]    [2]    [3]
410# CHECK-NEXT: 0.     1     0.0    0.0    0.0       subl	%eax, %eax
411# CHECK-NEXT: 1.     1     0.0    0.0    0.0       subq	%rax, %rax
412# CHECK-NEXT: 2.     1     0.0    0.0    0.0       xorl	%eax, %eax
413# CHECK-NEXT: 3.     1     0.0    0.0    0.0       xorq	%rax, %rax
414# CHECK-NEXT: 4.     1     1.0    1.0    0.0       pcmpgtb	%mm2, %mm2
415# CHECK-NEXT: 5.     1     2.0    0.0    0.0       pcmpgtd	%mm2, %mm2
416# CHECK-NEXT: 6.     1     3.0    0.0    0.0       pcmpgtw	%mm2, %mm2
417# CHECK-NEXT: 7.     1     0.0    0.0    4.0       pcmpgtb	%xmm2, %xmm2
418# CHECK-NEXT: 8.     1     0.0    0.0    3.0       pcmpgtd	%xmm2, %xmm2
419# CHECK-NEXT: 9.     1     0.0    0.0    3.0       pcmpgtq	%xmm2, %xmm2
420# CHECK-NEXT: 10.    1     0.0    0.0    3.0       pcmpgtw	%xmm2, %xmm2
421# CHECK-NEXT: 11.    1     0.0    0.0    3.0       vpcmpgtb	%xmm3, %xmm3, %xmm3
422# CHECK-NEXT: 12.    1     0.0    0.0    2.0       vpcmpgtd	%xmm3, %xmm3, %xmm3
423# CHECK-NEXT: 13.    1     0.0    0.0    2.0       vpcmpgtq	%xmm3, %xmm3, %xmm3
424# CHECK-NEXT: 14.    1     0.0    0.0    2.0       vpcmpgtw	%xmm3, %xmm3, %xmm3
425# CHECK-NEXT: 15.    1     0.0    0.0    2.0       vpcmpgtb	%xmm3, %xmm3, %xmm5
426# CHECK-NEXT: 16.    1     0.0    0.0    1.0       vpcmpgtd	%xmm3, %xmm3, %xmm5
427# CHECK-NEXT: 17.    1     0.0    0.0    1.0       vpcmpgtq	%xmm3, %xmm3, %xmm5
428# CHECK-NEXT: 18.    1     0.0    0.0    1.0       vpcmpgtw	%xmm3, %xmm3, %xmm5
429# CHECK-NEXT: 19.    1     0.0    0.0    1.0       vpcmpgtb	%ymm3, %ymm3, %ymm3
430# CHECK-NEXT: 20.    1     0.0    0.0    0.0       vpcmpgtd	%ymm3, %ymm3, %ymm3
431# CHECK-NEXT: 21.    1     0.0    0.0    0.0       vpcmpgtq	%ymm3, %ymm3, %ymm3
432# CHECK-NEXT: 22.    1     0.0    0.0    0.0       vpcmpgtw	%ymm3, %ymm3, %ymm3
433# CHECK-NEXT: 23.    1     0.0    0.0    0.0       vpcmpgtb	%ymm3, %ymm3, %ymm5
434# CHECK-NEXT: 24.    1     0.0    0.0    0.0       vpcmpgtd	%ymm3, %ymm3, %ymm5
435# CHECK-NEXT: 25.    1     0.0    0.0    0.0       vpcmpgtq	%ymm3, %ymm3, %ymm5
436# CHECK-NEXT: 26.    1     0.0    0.0    0.0       vpcmpgtw	%ymm3, %ymm3, %ymm5
437# CHECK-NEXT: 27.    1     1.0    1.0    0.0       psubb	%mm2, %mm2
438# CHECK-NEXT: 28.    1     1.0    0.0    0.0       psubd	%mm2, %mm2
439# CHECK-NEXT: 29.    1     2.0    0.0    0.0       psubq	%mm2, %mm2
440# CHECK-NEXT: 30.    1     3.0    0.0    0.0       psubw	%mm2, %mm2
441# CHECK-NEXT: 31.    1     0.0    0.0    4.0       psubb	%xmm2, %xmm2
442# CHECK-NEXT: 32.    1     0.0    0.0    3.0       psubd	%xmm2, %xmm2
443# CHECK-NEXT: 33.    1     0.0    0.0    3.0       psubq	%xmm2, %xmm2
444# CHECK-NEXT: 34.    1     0.0    0.0    3.0       psubw	%xmm2, %xmm2
445# CHECK-NEXT: 35.    1     0.0    0.0    3.0       vpsubb	%xmm3, %xmm3, %xmm3
446# CHECK-NEXT: 36.    1     0.0    0.0    2.0       vpsubd	%xmm3, %xmm3, %xmm3
447# CHECK-NEXT: 37.    1     0.0    0.0    2.0       vpsubq	%xmm3, %xmm3, %xmm3
448# CHECK-NEXT: 38.    1     0.0    0.0    2.0       vpsubw	%xmm3, %xmm3, %xmm3
449# CHECK-NEXT: 39.    1     0.0    0.0    2.0       vpsubb	%ymm3, %ymm3, %ymm3
450# CHECK-NEXT: 40.    1     0.0    0.0    1.0       vpsubd	%ymm3, %ymm3, %ymm3
451# CHECK-NEXT: 41.    1     0.0    0.0    1.0       vpsubq	%ymm3, %ymm3, %ymm3
452# CHECK-NEXT: 42.    1     0.0    0.0    1.0       vpsubw	%ymm3, %ymm3, %ymm3
453# CHECK-NEXT: 43.    1     0.0    0.0    1.0       vpsubb	%xmm3, %xmm3, %xmm5
454# CHECK-NEXT: 44.    1     0.0    0.0    0.0       vpsubd	%xmm3, %xmm3, %xmm5
455# CHECK-NEXT: 45.    1     0.0    0.0    0.0       vpsubq	%xmm3, %xmm3, %xmm5
456# CHECK-NEXT: 46.    1     0.0    0.0    0.0       vpsubw	%xmm3, %xmm3, %xmm5
457# CHECK-NEXT: 47.    1     0.0    0.0    0.0       vpsubb	%ymm3, %ymm3, %ymm5
458# CHECK-NEXT: 48.    1     0.0    0.0    0.0       vpsubd	%ymm3, %ymm3, %ymm5
459# CHECK-NEXT: 49.    1     0.0    0.0    0.0       vpsubq	%ymm3, %ymm3, %ymm5
460# CHECK-NEXT: 50.    1     0.0    0.0    0.0       vpsubw	%ymm3, %ymm3, %ymm5
461# CHECK-NEXT: 51.    1     1.0    1.0    0.0       andnps	%xmm0, %xmm0
462# CHECK-NEXT: 52.    1     1.0    1.0    0.0       andnpd	%xmm1, %xmm1
463# CHECK-NEXT: 53.    1     2.0    2.0    0.0       vandnps	%xmm2, %xmm2, %xmm2
464# CHECK-NEXT: 54.    1     3.0    1.0    0.0       vandnpd	%xmm1, %xmm1, %xmm1
465# CHECK-NEXT: 55.    1     4.0    1.0    0.0       vandnps	%ymm2, %ymm2, %ymm2
466# CHECK-NEXT: 56.    1     4.0    1.0    0.0       vandnpd	%ymm1, %ymm1, %ymm1
467# CHECK-NEXT: 57.    1     1.0    1.0    3.0       pandn	%mm2, %mm2
468# CHECK-NEXT: 58.    1     4.0    0.0    0.0       pandn	%xmm2, %xmm2
469# CHECK-NEXT: 59.    1     1.0    1.0    3.0       vpandn	%xmm3, %xmm3, %xmm3
470# CHECK-NEXT: 60.    1     1.0    0.0    2.0       vpandn	%ymm3, %ymm3, %ymm3
471# CHECK-NEXT: 61.    1     4.0    0.0    0.0       vandnps	%xmm2, %xmm2, %xmm5
472# CHECK-NEXT: 62.    1     5.0    1.0    0.0       vandnpd	%xmm1, %xmm1, %xmm5
473# CHECK-NEXT: 63.    1     2.0    0.0    3.0       vpandn	%xmm3, %xmm3, %xmm5
474# CHECK-NEXT: 64.    1     5.0    2.0    0.0       vandnps	%ymm2, %ymm2, %ymm5
475# CHECK-NEXT: 65.    1     6.0    3.0    0.0       vandnpd	%ymm1, %ymm1, %ymm5
476# CHECK-NEXT: 66.    1     1.0    0.0    5.0       vpandn	%ymm3, %ymm3, %ymm5
477# CHECK-NEXT: 67.    1     0.0    0.0    7.0       xorps	%xmm0, %xmm0
478# CHECK-NEXT: 68.    1     2.0    0.0    4.0       xorpd	%xmm1, %xmm1
479# CHECK-NEXT: 69.    1     2.0    0.0    4.0       vxorps	%xmm2, %xmm2, %xmm2
480# CHECK-NEXT: 70.    1     2.0    0.0    4.0       vxorpd	%xmm1, %xmm1, %xmm1
481# CHECK-NEXT: 71.    1     2.0    0.0    4.0       vxorps	%ymm2, %ymm2, %ymm2
482# CHECK-NEXT: 72.    1     1.0    0.0    4.0       vxorpd	%ymm1, %ymm1, %ymm1
483# CHECK-NEXT: 73.    1     1.0    1.0    3.0       pxor	%mm2, %mm2
484# CHECK-NEXT: 74.    1     1.0    0.0    4.0       pxor	%xmm2, %xmm2
485# CHECK-NEXT: 75.    1     0.0    0.0    5.0       vpxor	%xmm3, %xmm3, %xmm3
486# CHECK-NEXT: 76.    1     0.0    0.0    4.0       vpxor	%ymm3, %ymm3, %ymm3
487# CHECK-NEXT: 77.    1     0.0    0.0    4.0       vxorps	%xmm4, %xmm4, %xmm5
488# CHECK-NEXT: 78.    1     0.0    0.0    4.0       vxorpd	%xmm1, %xmm1, %xmm3
489# CHECK-NEXT: 79.    1     0.0    0.0    4.0       vxorps	%ymm4, %ymm4, %ymm5
490# CHECK-NEXT: 80.    1     0.0    0.0    3.0       vxorpd	%ymm1, %ymm1, %ymm3
491# CHECK-NEXT: 81.    1     0.0    0.0    3.0       vpxor	%xmm3, %xmm3, %xmm5
492# CHECK-NEXT: 82.    1     0.0    0.0    3.0       vpxor	%ymm3, %ymm3, %ymm5
493# CHECK-NEXT:        1     0.8    0.2    1.6       <total>
494