xref: /llvm-project/llvm/test/tools/llvm-mca/X86/BdVer2/load-store-throughput.s (revision 85e6e748d426f8992016914b07bc67c4da22e278)
1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=bdver2 -scheduler-stats -dispatch-stats -iterations=100 -timeline -timeline-max-iterations=1 < %s | FileCheck %s
3
4# LLVM-MCA-BEGIN
5movb %spl, (%rax)
6movb (%rcx), %bpl
7movb (%rdx), %sil
8movb %dil, (%rbx)
9# LLVM-MCA-END
10
11# LLVM-MCA-BEGIN
12movw %sp, (%rax)
13movw (%rcx), %bp
14movw (%rdx), %si
15movw %di, (%rbx)
16# LLVM-MCA-END
17
18# LLVM-MCA-BEGIN
19movl %esp, (%rax)
20movl (%rcx), %ebp
21movl (%rdx), %esi
22movl %edi, (%rbx)
23# LLVM-MCA-END
24
25# LLVM-MCA-BEGIN
26movq %rsp, (%rax)
27movq (%rcx), %rbp
28movq (%rdx), %rsi
29movq %rdi, (%rbx)
30# LLVM-MCA-END
31
32# LLVM-MCA-BEGIN
33movd %mm0, (%rax)
34movd (%rcx), %mm1
35movd (%rdx), %mm2
36movd %mm3, (%rbx)
37# LLVM-MCA-END
38
39# LLVM-MCA-BEGIN
40movaps %xmm0, (%rax)
41movaps (%rcx), %xmm1
42movaps (%rdx), %xmm2
43movaps %xmm3, (%rbx)
44# LLVM-MCA-END
45
46# CHECK:      [0] Code Region
47
48# CHECK:      Iterations:        100
49# CHECK-NEXT: Instructions:      400
50# CHECK-NEXT: Total Cycles:      306
51# CHECK-NEXT: Total uOps:        400
52
53# CHECK:      Dispatch Width:    4
54# CHECK-NEXT: uOps Per Cycle:    1.31
55# CHECK-NEXT: IPC:               1.31
56# CHECK-NEXT: Block RThroughput: 3.0
57
58# CHECK:      Instruction Info:
59# CHECK-NEXT: [1]: #uOps
60# CHECK-NEXT: [2]: Latency
61# CHECK-NEXT: [3]: RThroughput
62# CHECK-NEXT: [4]: MayLoad
63# CHECK-NEXT: [5]: MayStore
64# CHECK-NEXT: [6]: HasSideEffects (U)
65
66# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
67# CHECK-NEXT:  1      1     1.00           *            movb	%spl, (%rax)
68# CHECK-NEXT:  1      5     1.00    *                   movb	(%rcx), %bpl
69# CHECK-NEXT:  1      5     1.00    *                   movb	(%rdx), %sil
70# CHECK-NEXT:  1      1     1.00           *            movb	%dil, (%rbx)
71
72# CHECK:      Dynamic Dispatch Stall Cycles:
73# CHECK-NEXT: RAT     - Register unavailable:                      0
74# CHECK-NEXT: RCU     - Retire tokens unavailable:                 0
75# CHECK-NEXT: SCHEDQ  - Scheduler full:                            256  (83.7%)
76# CHECK-NEXT: LQ      - Load queue full:                           0
77# CHECK-NEXT: SQ      - Store queue full:                          0
78# CHECK-NEXT: GROUP   - Static restrictions on the dispatch group: 0
79# CHECK-NEXT: USH     - Uncategorised Structural Hazard:           0
80
81# CHECK:      Dispatch Logic - number of cycles where we saw N micro opcodes dispatched:
82# CHECK-NEXT: [# dispatched], [# cycles]
83# CHECK-NEXT:  0,              35  (11.4%)
84# CHECK-NEXT:  1,              171  (55.9%)
85# CHECK-NEXT:  2,              85  (27.8%)
86# CHECK-NEXT:  3,              1  (0.3%)
87# CHECK-NEXT:  4,              14  (4.6%)
88
89# CHECK:      Schedulers - number of cycles where we saw N micro opcodes issued:
90# CHECK-NEXT: [# issued], [# cycles]
91# CHECK-NEXT:  0,          6  (2.0%)
92# CHECK-NEXT:  1,          200  (65.4%)
93# CHECK-NEXT:  2,          100  (32.7%)
94
95# CHECK:      Scheduler's queue usage:
96# CHECK-NEXT: [1] Resource name.
97# CHECK-NEXT: [2] Average number of used buffer entries.
98# CHECK-NEXT: [3] Maximum number of used buffer entries.
99# CHECK-NEXT: [4] Total number of buffer entries.
100
101# CHECK:       [1]            [2]        [3]        [4]
102# CHECK-NEXT: PdEX             36         40         40
103# CHECK-NEXT: PdFPU            0          0          64
104# CHECK-NEXT: PdLoad           21         24         40
105# CHECK-NEXT: PdStore          18         21         24
106
107# CHECK:      Resources:
108# CHECK-NEXT: [0.0] - PdAGLU01
109# CHECK-NEXT: [0.1] - PdAGLU01
110# CHECK-NEXT: [1]   - PdBranch
111# CHECK-NEXT: [2]   - PdCount
112# CHECK-NEXT: [3]   - PdDiv
113# CHECK-NEXT: [4]   - PdEX0
114# CHECK-NEXT: [5]   - PdEX1
115# CHECK-NEXT: [6]   - PdFPCVT
116# CHECK-NEXT: [7.0] - PdFPFMA
117# CHECK-NEXT: [7.1] - PdFPFMA
118# CHECK-NEXT: [8.0] - PdFPMAL
119# CHECK-NEXT: [8.1] - PdFPMAL
120# CHECK-NEXT: [9]   - PdFPMMA
121# CHECK-NEXT: [10]  - PdFPSTO
122# CHECK-NEXT: [11]  - PdFPU0
123# CHECK-NEXT: [12]  - PdFPU1
124# CHECK-NEXT: [13]  - PdFPU2
125# CHECK-NEXT: [14]  - PdFPU3
126# CHECK-NEXT: [15]  - PdFPXBR
127# CHECK-NEXT: [16.0] - PdLoad
128# CHECK-NEXT: [16.1] - PdLoad
129# CHECK-NEXT: [17]  - PdMul
130# CHECK-NEXT: [18]  - PdStore
131
132# CHECK:      Resource pressure per iteration:
133# CHECK-NEXT: [0.0]  [0.1]  [1]    [2]    [3]    [4]    [5]    [6]    [7.0]  [7.1]  [8.0]  [8.1]  [9]    [10]   [11]   [12]   [13]   [14]   [15]   [16.0] [16.1] [17]   [18]
134# CHECK-NEXT: 3.00   3.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     2.00   2.00    -     2.00
135
136# CHECK:      Resource pressure by instruction:
137# CHECK-NEXT: [0.0]  [0.1]  [1]    [2]    [3]    [4]    [5]    [6]    [7.0]  [7.1]  [8.0]  [8.1]  [9]    [10]   [11]   [12]   [13]   [14]   [15]   [16.0] [16.1] [17]   [18]   Instructions:
138# CHECK-NEXT:  -     1.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     1.00   movb	%spl, (%rax)
139# CHECK-NEXT: 2.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     2.00    -      -     movb	(%rcx), %bpl
140# CHECK-NEXT:  -     2.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     2.00    -      -      -     movb	(%rdx), %sil
141# CHECK-NEXT: 1.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     1.00   movb	%dil, (%rbx)
142
143# CHECK:      Timeline view:
144# CHECK-NEXT: Index     012345678
145
146# CHECK:      [0,0]     DeER .  .   movb	%spl, (%rax)
147# CHECK-NEXT: [0,1]     DeeeeeER.   movb	(%rcx), %bpl
148# CHECK-NEXT: [0,2]     D=eeeeeER   movb	(%rdx), %sil
149# CHECK-NEXT: [0,3]     D==eE---R   movb	%dil, (%rbx)
150
151# CHECK:      Average Wait times (based on the timeline view):
152# CHECK-NEXT: [0]: Executions
153# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
154# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
155# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
156
157# CHECK:            [0]    [1]    [2]    [3]
158# CHECK-NEXT: 0.     1     1.0    1.0    0.0       movb	%spl, (%rax)
159# CHECK-NEXT: 1.     1     1.0    1.0    0.0       movb	(%rcx), %bpl
160# CHECK-NEXT: 2.     1     2.0    2.0    0.0       movb	(%rdx), %sil
161# CHECK-NEXT: 3.     1     3.0    1.0    3.0       movb	%dil, (%rbx)
162# CHECK-NEXT:        1     1.8    1.3    0.8       <total>
163
164# CHECK:      [1] Code Region
165
166# CHECK:      Iterations:        100
167# CHECK-NEXT: Instructions:      400
168# CHECK-NEXT: Total Cycles:      306
169# CHECK-NEXT: Total uOps:        400
170
171# CHECK:      Dispatch Width:    4
172# CHECK-NEXT: uOps Per Cycle:    1.31
173# CHECK-NEXT: IPC:               1.31
174# CHECK-NEXT: Block RThroughput: 3.0
175
176# CHECK:      Instruction Info:
177# CHECK-NEXT: [1]: #uOps
178# CHECK-NEXT: [2]: Latency
179# CHECK-NEXT: [3]: RThroughput
180# CHECK-NEXT: [4]: MayLoad
181# CHECK-NEXT: [5]: MayStore
182# CHECK-NEXT: [6]: HasSideEffects (U)
183
184# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
185# CHECK-NEXT:  1      1     1.00           *            movw	%sp, (%rax)
186# CHECK-NEXT:  1      5     1.00    *                   movw	(%rcx), %bp
187# CHECK-NEXT:  1      5     1.00    *                   movw	(%rdx), %si
188# CHECK-NEXT:  1      1     1.00           *            movw	%di, (%rbx)
189
190# CHECK:      Dynamic Dispatch Stall Cycles:
191# CHECK-NEXT: RAT     - Register unavailable:                      0
192# CHECK-NEXT: RCU     - Retire tokens unavailable:                 0
193# CHECK-NEXT: SCHEDQ  - Scheduler full:                            256  (83.7%)
194# CHECK-NEXT: LQ      - Load queue full:                           0
195# CHECK-NEXT: SQ      - Store queue full:                          0
196# CHECK-NEXT: GROUP   - Static restrictions on the dispatch group: 0
197# CHECK-NEXT: USH     - Uncategorised Structural Hazard:           0
198
199# CHECK:      Dispatch Logic - number of cycles where we saw N micro opcodes dispatched:
200# CHECK-NEXT: [# dispatched], [# cycles]
201# CHECK-NEXT:  0,              35  (11.4%)
202# CHECK-NEXT:  1,              171  (55.9%)
203# CHECK-NEXT:  2,              85  (27.8%)
204# CHECK-NEXT:  3,              1  (0.3%)
205# CHECK-NEXT:  4,              14  (4.6%)
206
207# CHECK:      Schedulers - number of cycles where we saw N micro opcodes issued:
208# CHECK-NEXT: [# issued], [# cycles]
209# CHECK-NEXT:  0,          6  (2.0%)
210# CHECK-NEXT:  1,          200  (65.4%)
211# CHECK-NEXT:  2,          100  (32.7%)
212
213# CHECK:      Scheduler's queue usage:
214# CHECK-NEXT: [1] Resource name.
215# CHECK-NEXT: [2] Average number of used buffer entries.
216# CHECK-NEXT: [3] Maximum number of used buffer entries.
217# CHECK-NEXT: [4] Total number of buffer entries.
218
219# CHECK:       [1]            [2]        [3]        [4]
220# CHECK-NEXT: PdEX             36         40         40
221# CHECK-NEXT: PdFPU            0          0          64
222# CHECK-NEXT: PdLoad           21         24         40
223# CHECK-NEXT: PdStore          18         21         24
224
225# CHECK:      Resources:
226# CHECK-NEXT: [0.0] - PdAGLU01
227# CHECK-NEXT: [0.1] - PdAGLU01
228# CHECK-NEXT: [1]   - PdBranch
229# CHECK-NEXT: [2]   - PdCount
230# CHECK-NEXT: [3]   - PdDiv
231# CHECK-NEXT: [4]   - PdEX0
232# CHECK-NEXT: [5]   - PdEX1
233# CHECK-NEXT: [6]   - PdFPCVT
234# CHECK-NEXT: [7.0] - PdFPFMA
235# CHECK-NEXT: [7.1] - PdFPFMA
236# CHECK-NEXT: [8.0] - PdFPMAL
237# CHECK-NEXT: [8.1] - PdFPMAL
238# CHECK-NEXT: [9]   - PdFPMMA
239# CHECK-NEXT: [10]  - PdFPSTO
240# CHECK-NEXT: [11]  - PdFPU0
241# CHECK-NEXT: [12]  - PdFPU1
242# CHECK-NEXT: [13]  - PdFPU2
243# CHECK-NEXT: [14]  - PdFPU3
244# CHECK-NEXT: [15]  - PdFPXBR
245# CHECK-NEXT: [16.0] - PdLoad
246# CHECK-NEXT: [16.1] - PdLoad
247# CHECK-NEXT: [17]  - PdMul
248# CHECK-NEXT: [18]  - PdStore
249
250# CHECK:      Resource pressure per iteration:
251# CHECK-NEXT: [0.0]  [0.1]  [1]    [2]    [3]    [4]    [5]    [6]    [7.0]  [7.1]  [8.0]  [8.1]  [9]    [10]   [11]   [12]   [13]   [14]   [15]   [16.0] [16.1] [17]   [18]
252# CHECK-NEXT: 3.00   3.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     2.00   2.00    -     2.00
253
254# CHECK:      Resource pressure by instruction:
255# CHECK-NEXT: [0.0]  [0.1]  [1]    [2]    [3]    [4]    [5]    [6]    [7.0]  [7.1]  [8.0]  [8.1]  [9]    [10]   [11]   [12]   [13]   [14]   [15]   [16.0] [16.1] [17]   [18]   Instructions:
256# CHECK-NEXT:  -     1.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     1.00   movw	%sp, (%rax)
257# CHECK-NEXT: 2.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     2.00    -      -     movw	(%rcx), %bp
258# CHECK-NEXT:  -     2.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     2.00    -      -      -     movw	(%rdx), %si
259# CHECK-NEXT: 1.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     1.00   movw	%di, (%rbx)
260
261# CHECK:      Timeline view:
262# CHECK-NEXT: Index     012345678
263
264# CHECK:      [0,0]     DeER .  .   movw	%sp, (%rax)
265# CHECK-NEXT: [0,1]     DeeeeeER.   movw	(%rcx), %bp
266# CHECK-NEXT: [0,2]     D=eeeeeER   movw	(%rdx), %si
267# CHECK-NEXT: [0,3]     D==eE---R   movw	%di, (%rbx)
268
269# CHECK:      Average Wait times (based on the timeline view):
270# CHECK-NEXT: [0]: Executions
271# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
272# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
273# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
274
275# CHECK:            [0]    [1]    [2]    [3]
276# CHECK-NEXT: 0.     1     1.0    1.0    0.0       movw	%sp, (%rax)
277# CHECK-NEXT: 1.     1     1.0    1.0    0.0       movw	(%rcx), %bp
278# CHECK-NEXT: 2.     1     2.0    2.0    0.0       movw	(%rdx), %si
279# CHECK-NEXT: 3.     1     3.0    1.0    3.0       movw	%di, (%rbx)
280# CHECK-NEXT:        1     1.8    1.3    0.8       <total>
281
282# CHECK:      [2] Code Region
283
284# CHECK:      Iterations:        100
285# CHECK-NEXT: Instructions:      400
286# CHECK-NEXT: Total Cycles:      306
287# CHECK-NEXT: Total uOps:        400
288
289# CHECK:      Dispatch Width:    4
290# CHECK-NEXT: uOps Per Cycle:    1.31
291# CHECK-NEXT: IPC:               1.31
292# CHECK-NEXT: Block RThroughput: 3.0
293
294# CHECK:      Instruction Info:
295# CHECK-NEXT: [1]: #uOps
296# CHECK-NEXT: [2]: Latency
297# CHECK-NEXT: [3]: RThroughput
298# CHECK-NEXT: [4]: MayLoad
299# CHECK-NEXT: [5]: MayStore
300# CHECK-NEXT: [6]: HasSideEffects (U)
301
302# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
303# CHECK-NEXT:  1      1     1.00           *            movl	%esp, (%rax)
304# CHECK-NEXT:  1      5     1.00    *                   movl	(%rcx), %ebp
305# CHECK-NEXT:  1      5     1.00    *                   movl	(%rdx), %esi
306# CHECK-NEXT:  1      1     1.00           *            movl	%edi, (%rbx)
307
308# CHECK:      Dynamic Dispatch Stall Cycles:
309# CHECK-NEXT: RAT     - Register unavailable:                      0
310# CHECK-NEXT: RCU     - Retire tokens unavailable:                 0
311# CHECK-NEXT: SCHEDQ  - Scheduler full:                            256  (83.7%)
312# CHECK-NEXT: LQ      - Load queue full:                           0
313# CHECK-NEXT: SQ      - Store queue full:                          0
314# CHECK-NEXT: GROUP   - Static restrictions on the dispatch group: 0
315# CHECK-NEXT: USH     - Uncategorised Structural Hazard:           0
316
317# CHECK:      Dispatch Logic - number of cycles where we saw N micro opcodes dispatched:
318# CHECK-NEXT: [# dispatched], [# cycles]
319# CHECK-NEXT:  0,              35  (11.4%)
320# CHECK-NEXT:  1,              171  (55.9%)
321# CHECK-NEXT:  2,              85  (27.8%)
322# CHECK-NEXT:  3,              1  (0.3%)
323# CHECK-NEXT:  4,              14  (4.6%)
324
325# CHECK:      Schedulers - number of cycles where we saw N micro opcodes issued:
326# CHECK-NEXT: [# issued], [# cycles]
327# CHECK-NEXT:  0,          6  (2.0%)
328# CHECK-NEXT:  1,          200  (65.4%)
329# CHECK-NEXT:  2,          100  (32.7%)
330
331# CHECK:      Scheduler's queue usage:
332# CHECK-NEXT: [1] Resource name.
333# CHECK-NEXT: [2] Average number of used buffer entries.
334# CHECK-NEXT: [3] Maximum number of used buffer entries.
335# CHECK-NEXT: [4] Total number of buffer entries.
336
337# CHECK:       [1]            [2]        [3]        [4]
338# CHECK-NEXT: PdEX             36         40         40
339# CHECK-NEXT: PdFPU            0          0          64
340# CHECK-NEXT: PdLoad           21         24         40
341# CHECK-NEXT: PdStore          18         21         24
342
343# CHECK:      Resources:
344# CHECK-NEXT: [0.0] - PdAGLU01
345# CHECK-NEXT: [0.1] - PdAGLU01
346# CHECK-NEXT: [1]   - PdBranch
347# CHECK-NEXT: [2]   - PdCount
348# CHECK-NEXT: [3]   - PdDiv
349# CHECK-NEXT: [4]   - PdEX0
350# CHECK-NEXT: [5]   - PdEX1
351# CHECK-NEXT: [6]   - PdFPCVT
352# CHECK-NEXT: [7.0] - PdFPFMA
353# CHECK-NEXT: [7.1] - PdFPFMA
354# CHECK-NEXT: [8.0] - PdFPMAL
355# CHECK-NEXT: [8.1] - PdFPMAL
356# CHECK-NEXT: [9]   - PdFPMMA
357# CHECK-NEXT: [10]  - PdFPSTO
358# CHECK-NEXT: [11]  - PdFPU0
359# CHECK-NEXT: [12]  - PdFPU1
360# CHECK-NEXT: [13]  - PdFPU2
361# CHECK-NEXT: [14]  - PdFPU3
362# CHECK-NEXT: [15]  - PdFPXBR
363# CHECK-NEXT: [16.0] - PdLoad
364# CHECK-NEXT: [16.1] - PdLoad
365# CHECK-NEXT: [17]  - PdMul
366# CHECK-NEXT: [18]  - PdStore
367
368# CHECK:      Resource pressure per iteration:
369# CHECK-NEXT: [0.0]  [0.1]  [1]    [2]    [3]    [4]    [5]    [6]    [7.0]  [7.1]  [8.0]  [8.1]  [9]    [10]   [11]   [12]   [13]   [14]   [15]   [16.0] [16.1] [17]   [18]
370# CHECK-NEXT: 3.00   3.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     2.00   2.00    -     2.00
371
372# CHECK:      Resource pressure by instruction:
373# CHECK-NEXT: [0.0]  [0.1]  [1]    [2]    [3]    [4]    [5]    [6]    [7.0]  [7.1]  [8.0]  [8.1]  [9]    [10]   [11]   [12]   [13]   [14]   [15]   [16.0] [16.1] [17]   [18]   Instructions:
374# CHECK-NEXT:  -     1.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     1.00   movl	%esp, (%rax)
375# CHECK-NEXT: 2.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     2.00    -      -     movl	(%rcx), %ebp
376# CHECK-NEXT:  -     2.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     2.00    -      -      -     movl	(%rdx), %esi
377# CHECK-NEXT: 1.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     1.00   movl	%edi, (%rbx)
378
379# CHECK:      Timeline view:
380# CHECK-NEXT: Index     012345678
381
382# CHECK:      [0,0]     DeER .  .   movl	%esp, (%rax)
383# CHECK-NEXT: [0,1]     DeeeeeER.   movl	(%rcx), %ebp
384# CHECK-NEXT: [0,2]     D=eeeeeER   movl	(%rdx), %esi
385# CHECK-NEXT: [0,3]     D==eE---R   movl	%edi, (%rbx)
386
387# CHECK:      Average Wait times (based on the timeline view):
388# CHECK-NEXT: [0]: Executions
389# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
390# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
391# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
392
393# CHECK:            [0]    [1]    [2]    [3]
394# CHECK-NEXT: 0.     1     1.0    1.0    0.0       movl	%esp, (%rax)
395# CHECK-NEXT: 1.     1     1.0    1.0    0.0       movl	(%rcx), %ebp
396# CHECK-NEXT: 2.     1     2.0    2.0    0.0       movl	(%rdx), %esi
397# CHECK-NEXT: 3.     1     3.0    1.0    3.0       movl	%edi, (%rbx)
398# CHECK-NEXT:        1     1.8    1.3    0.8       <total>
399
400# CHECK:      [3] Code Region
401
402# CHECK:      Iterations:        100
403# CHECK-NEXT: Instructions:      400
404# CHECK-NEXT: Total Cycles:      306
405# CHECK-NEXT: Total uOps:        400
406
407# CHECK:      Dispatch Width:    4
408# CHECK-NEXT: uOps Per Cycle:    1.31
409# CHECK-NEXT: IPC:               1.31
410# CHECK-NEXT: Block RThroughput: 3.0
411
412# CHECK:      Instruction Info:
413# CHECK-NEXT: [1]: #uOps
414# CHECK-NEXT: [2]: Latency
415# CHECK-NEXT: [3]: RThroughput
416# CHECK-NEXT: [4]: MayLoad
417# CHECK-NEXT: [5]: MayStore
418# CHECK-NEXT: [6]: HasSideEffects (U)
419
420# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
421# CHECK-NEXT:  1      1     1.00           *            movq	%rsp, (%rax)
422# CHECK-NEXT:  1      5     1.00    *                   movq	(%rcx), %rbp
423# CHECK-NEXT:  1      5     1.00    *                   movq	(%rdx), %rsi
424# CHECK-NEXT:  1      1     1.00           *            movq	%rdi, (%rbx)
425
426# CHECK:      Dynamic Dispatch Stall Cycles:
427# CHECK-NEXT: RAT     - Register unavailable:                      0
428# CHECK-NEXT: RCU     - Retire tokens unavailable:                 0
429# CHECK-NEXT: SCHEDQ  - Scheduler full:                            256  (83.7%)
430# CHECK-NEXT: LQ      - Load queue full:                           0
431# CHECK-NEXT: SQ      - Store queue full:                          0
432# CHECK-NEXT: GROUP   - Static restrictions on the dispatch group: 0
433# CHECK-NEXT: USH     - Uncategorised Structural Hazard:           0
434
435# CHECK:      Dispatch Logic - number of cycles where we saw N micro opcodes dispatched:
436# CHECK-NEXT: [# dispatched], [# cycles]
437# CHECK-NEXT:  0,              35  (11.4%)
438# CHECK-NEXT:  1,              171  (55.9%)
439# CHECK-NEXT:  2,              85  (27.8%)
440# CHECK-NEXT:  3,              1  (0.3%)
441# CHECK-NEXT:  4,              14  (4.6%)
442
443# CHECK:      Schedulers - number of cycles where we saw N micro opcodes issued:
444# CHECK-NEXT: [# issued], [# cycles]
445# CHECK-NEXT:  0,          6  (2.0%)
446# CHECK-NEXT:  1,          200  (65.4%)
447# CHECK-NEXT:  2,          100  (32.7%)
448
449# CHECK:      Scheduler's queue usage:
450# CHECK-NEXT: [1] Resource name.
451# CHECK-NEXT: [2] Average number of used buffer entries.
452# CHECK-NEXT: [3] Maximum number of used buffer entries.
453# CHECK-NEXT: [4] Total number of buffer entries.
454
455# CHECK:       [1]            [2]        [3]        [4]
456# CHECK-NEXT: PdEX             36         40         40
457# CHECK-NEXT: PdFPU            0          0          64
458# CHECK-NEXT: PdLoad           21         24         40
459# CHECK-NEXT: PdStore          18         21         24
460
461# CHECK:      Resources:
462# CHECK-NEXT: [0.0] - PdAGLU01
463# CHECK-NEXT: [0.1] - PdAGLU01
464# CHECK-NEXT: [1]   - PdBranch
465# CHECK-NEXT: [2]   - PdCount
466# CHECK-NEXT: [3]   - PdDiv
467# CHECK-NEXT: [4]   - PdEX0
468# CHECK-NEXT: [5]   - PdEX1
469# CHECK-NEXT: [6]   - PdFPCVT
470# CHECK-NEXT: [7.0] - PdFPFMA
471# CHECK-NEXT: [7.1] - PdFPFMA
472# CHECK-NEXT: [8.0] - PdFPMAL
473# CHECK-NEXT: [8.1] - PdFPMAL
474# CHECK-NEXT: [9]   - PdFPMMA
475# CHECK-NEXT: [10]  - PdFPSTO
476# CHECK-NEXT: [11]  - PdFPU0
477# CHECK-NEXT: [12]  - PdFPU1
478# CHECK-NEXT: [13]  - PdFPU2
479# CHECK-NEXT: [14]  - PdFPU3
480# CHECK-NEXT: [15]  - PdFPXBR
481# CHECK-NEXT: [16.0] - PdLoad
482# CHECK-NEXT: [16.1] - PdLoad
483# CHECK-NEXT: [17]  - PdMul
484# CHECK-NEXT: [18]  - PdStore
485
486# CHECK:      Resource pressure per iteration:
487# CHECK-NEXT: [0.0]  [0.1]  [1]    [2]    [3]    [4]    [5]    [6]    [7.0]  [7.1]  [8.0]  [8.1]  [9]    [10]   [11]   [12]   [13]   [14]   [15]   [16.0] [16.1] [17]   [18]
488# CHECK-NEXT: 3.00   3.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     2.00   2.00    -     2.00
489
490# CHECK:      Resource pressure by instruction:
491# CHECK-NEXT: [0.0]  [0.1]  [1]    [2]    [3]    [4]    [5]    [6]    [7.0]  [7.1]  [8.0]  [8.1]  [9]    [10]   [11]   [12]   [13]   [14]   [15]   [16.0] [16.1] [17]   [18]   Instructions:
492# CHECK-NEXT:  -     1.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     1.00   movq	%rsp, (%rax)
493# CHECK-NEXT: 2.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     2.00    -      -     movq	(%rcx), %rbp
494# CHECK-NEXT:  -     2.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     2.00    -      -      -     movq	(%rdx), %rsi
495# CHECK-NEXT: 1.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     1.00   movq	%rdi, (%rbx)
496
497# CHECK:      Timeline view:
498# CHECK-NEXT: Index     012345678
499
500# CHECK:      [0,0]     DeER .  .   movq	%rsp, (%rax)
501# CHECK-NEXT: [0,1]     DeeeeeER.   movq	(%rcx), %rbp
502# CHECK-NEXT: [0,2]     D=eeeeeER   movq	(%rdx), %rsi
503# CHECK-NEXT: [0,3]     D==eE---R   movq	%rdi, (%rbx)
504
505# CHECK:      Average Wait times (based on the timeline view):
506# CHECK-NEXT: [0]: Executions
507# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
508# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
509# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
510
511# CHECK:            [0]    [1]    [2]    [3]
512# CHECK-NEXT: 0.     1     1.0    1.0    0.0       movq	%rsp, (%rax)
513# CHECK-NEXT: 1.     1     1.0    1.0    0.0       movq	(%rcx), %rbp
514# CHECK-NEXT: 2.     1     2.0    2.0    0.0       movq	(%rdx), %rsi
515# CHECK-NEXT: 3.     1     3.0    1.0    3.0       movq	%rdi, (%rbx)
516# CHECK-NEXT:        1     1.8    1.3    0.8       <total>
517
518# CHECK:      [4] Code Region
519
520# CHECK:      Iterations:        100
521# CHECK-NEXT: Instructions:      400
522# CHECK-NEXT: Total Cycles:      405
523# CHECK-NEXT: Total uOps:        400
524
525# CHECK:      Dispatch Width:    4
526# CHECK-NEXT: uOps Per Cycle:    0.99
527# CHECK-NEXT: IPC:               0.99
528# CHECK-NEXT: Block RThroughput: 4.0
529
530# CHECK:      Instruction Info:
531# CHECK-NEXT: [1]: #uOps
532# CHECK-NEXT: [2]: Latency
533# CHECK-NEXT: [3]: RThroughput
534# CHECK-NEXT: [4]: MayLoad
535# CHECK-NEXT: [5]: MayStore
536# CHECK-NEXT: [6]: HasSideEffects (U)
537
538# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
539# CHECK-NEXT:  1      2     1.50           *      U     movd	%mm0, (%rax)
540# CHECK-NEXT:  1      5     1.50    *                   movd	(%rcx), %mm1
541# CHECK-NEXT:  1      5     1.50    *                   movd	(%rdx), %mm2
542# CHECK-NEXT:  1      2     1.50           *      U     movd	%mm3, (%rbx)
543
544# CHECK:      Dynamic Dispatch Stall Cycles:
545# CHECK-NEXT: RAT     - Register unavailable:                      0
546# CHECK-NEXT: RCU     - Retire tokens unavailable:                 0
547# CHECK-NEXT: SCHEDQ  - Scheduler full:                            347  (85.7%)
548# CHECK-NEXT: LQ      - Load queue full:                           0
549# CHECK-NEXT: SQ      - Store queue full:                          0
550# CHECK-NEXT: GROUP   - Static restrictions on the dispatch group: 0
551# CHECK-NEXT: USH     - Uncategorised Structural Hazard:           0
552
553# CHECK:      Dispatch Logic - number of cycles where we saw N micro opcodes dispatched:
554# CHECK-NEXT: [# dispatched], [# cycles]
555# CHECK-NEXT:  0,              131  (32.3%)
556# CHECK-NEXT:  1,              174  (43.0%)
557# CHECK-NEXT:  2,              87  (21.5%)
558# CHECK-NEXT:  4,              13  (3.2%)
559
560# CHECK:      Schedulers - number of cycles where we saw N micro opcodes issued:
561# CHECK-NEXT: [# issued], [# cycles]
562# CHECK-NEXT:  0,          105  (25.9%)
563# CHECK-NEXT:  1,          200  (49.4%)
564# CHECK-NEXT:  2,          100  (24.7%)
565
566# CHECK:      Scheduler's queue usage:
567# CHECK-NEXT: [1] Resource name.
568# CHECK-NEXT: [2] Average number of used buffer entries.
569# CHECK-NEXT: [3] Maximum number of used buffer entries.
570# CHECK-NEXT: [4] Total number of buffer entries.
571
572# CHECK:       [1]            [2]        [3]        [4]
573# CHECK-NEXT: PdEX             36         40         40
574# CHECK-NEXT: PdFPU            36         40         64
575# CHECK-NEXT: PdLoad           20         23         40
576# CHECK-NEXT: PdStore          19         22         24
577
578# CHECK:      Resources:
579# CHECK-NEXT: [0.0] - PdAGLU01
580# CHECK-NEXT: [0.1] - PdAGLU01
581# CHECK-NEXT: [1]   - PdBranch
582# CHECK-NEXT: [2]   - PdCount
583# CHECK-NEXT: [3]   - PdDiv
584# CHECK-NEXT: [4]   - PdEX0
585# CHECK-NEXT: [5]   - PdEX1
586# CHECK-NEXT: [6]   - PdFPCVT
587# CHECK-NEXT: [7.0] - PdFPFMA
588# CHECK-NEXT: [7.1] - PdFPFMA
589# CHECK-NEXT: [8.0] - PdFPMAL
590# CHECK-NEXT: [8.1] - PdFPMAL
591# CHECK-NEXT: [9]   - PdFPMMA
592# CHECK-NEXT: [10]  - PdFPSTO
593# CHECK-NEXT: [11]  - PdFPU0
594# CHECK-NEXT: [12]  - PdFPU1
595# CHECK-NEXT: [13]  - PdFPU2
596# CHECK-NEXT: [14]  - PdFPU3
597# CHECK-NEXT: [15]  - PdFPXBR
598# CHECK-NEXT: [16.0] - PdLoad
599# CHECK-NEXT: [16.1] - PdLoad
600# CHECK-NEXT: [17]  - PdMul
601# CHECK-NEXT: [18]  - PdStore
602
603# CHECK:      Resource pressure per iteration:
604# CHECK-NEXT: [0.0]  [0.1]  [1]    [2]    [3]    [4]    [5]    [6]    [7.0]  [7.1]  [8.0]  [8.1]  [9]    [10]   [11]   [12]   [13]   [14]   [15]   [16.0] [16.1] [17]   [18]
605# CHECK-NEXT: 4.00   4.00    -      -      -      -      -      -      -      -     3.00   3.00    -     2.00   1.00   1.00   3.00   3.00    -     3.00   3.00    -     2.00
606
607# CHECK:      Resource pressure by instruction:
608# CHECK-NEXT: [0.0]  [0.1]  [1]    [2]    [3]    [4]    [5]    [6]    [7.0]  [7.1]  [8.0]  [8.1]  [9]    [10]   [11]   [12]   [13]   [14]   [15]   [16.0] [16.1] [17]   [18]   Instructions:
609# CHECK-NEXT:  -     1.00    -      -      -      -      -      -      -      -      -      -      -     1.00    -      -      -     3.00    -      -      -      -     1.00   movd	%mm0, (%rax)
610# CHECK-NEXT: 3.00    -      -      -      -      -      -      -      -      -      -     3.00    -      -      -     1.00    -      -      -      -     3.00    -      -     movd	(%rcx), %mm1
611# CHECK-NEXT:  -     3.00    -      -      -      -      -      -      -      -     3.00    -      -      -     1.00    -      -      -      -     3.00    -      -      -     movd	(%rdx), %mm2
612# CHECK-NEXT: 1.00    -      -      -      -      -      -      -      -      -      -      -      -     1.00    -      -     3.00    -      -      -      -      -     1.00   movd	%mm3, (%rbx)
613
614# CHECK:      Timeline view:
615# CHECK-NEXT: Index     012345678
616
617# CHECK:      [0,0]     DeeER.  .   movd	%mm0, (%rax)
618# CHECK-NEXT: [0,1]     DeeeeeER.   movd	(%rcx), %mm1
619# CHECK-NEXT: [0,2]     D=eeeeeER   movd	(%rdx), %mm2
620# CHECK-NEXT: [0,3]     D===eeE-R   movd	%mm3, (%rbx)
621
622# CHECK:      Average Wait times (based on the timeline view):
623# CHECK-NEXT: [0]: Executions
624# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
625# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
626# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
627
628# CHECK:            [0]    [1]    [2]    [3]
629# CHECK-NEXT: 0.     1     1.0    1.0    0.0       movd	%mm0, (%rax)
630# CHECK-NEXT: 1.     1     1.0    1.0    0.0       movd	(%rcx), %mm1
631# CHECK-NEXT: 2.     1     2.0    2.0    0.0       movd	(%rdx), %mm2
632# CHECK-NEXT: 3.     1     4.0    2.0    1.0       movd	%mm3, (%rbx)
633# CHECK-NEXT:        1     2.0    1.5    0.3       <total>
634
635# CHECK:      [5] Code Region
636
637# CHECK:      Iterations:        100
638# CHECK-NEXT: Instructions:      400
639# CHECK-NEXT: Total Cycles:      405
640# CHECK-NEXT: Total uOps:        400
641
642# CHECK:      Dispatch Width:    4
643# CHECK-NEXT: uOps Per Cycle:    0.99
644# CHECK-NEXT: IPC:               0.99
645# CHECK-NEXT: Block RThroughput: 4.0
646
647# CHECK:      Instruction Info:
648# CHECK-NEXT: [1]: #uOps
649# CHECK-NEXT: [2]: Latency
650# CHECK-NEXT: [3]: RThroughput
651# CHECK-NEXT: [4]: MayLoad
652# CHECK-NEXT: [5]: MayStore
653# CHECK-NEXT: [6]: HasSideEffects (U)
654
655# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
656# CHECK-NEXT:  1      1     1.50           *            movaps	%xmm0, (%rax)
657# CHECK-NEXT:  1      5     1.50    *                   movaps	(%rcx), %xmm1
658# CHECK-NEXT:  1      5     1.50    *                   movaps	(%rdx), %xmm2
659# CHECK-NEXT:  1      1     1.50           *            movaps	%xmm3, (%rbx)
660
661# CHECK:      Dynamic Dispatch Stall Cycles:
662# CHECK-NEXT: RAT     - Register unavailable:                      0
663# CHECK-NEXT: RCU     - Retire tokens unavailable:                 0
664# CHECK-NEXT: SCHEDQ  - Scheduler full:                            347  (85.7%)
665# CHECK-NEXT: LQ      - Load queue full:                           0
666# CHECK-NEXT: SQ      - Store queue full:                          0
667# CHECK-NEXT: GROUP   - Static restrictions on the dispatch group: 0
668# CHECK-NEXT: USH     - Uncategorised Structural Hazard:           0
669
670# CHECK:      Dispatch Logic - number of cycles where we saw N micro opcodes dispatched:
671# CHECK-NEXT: [# dispatched], [# cycles]
672# CHECK-NEXT:  0,              131  (32.3%)
673# CHECK-NEXT:  1,              174  (43.0%)
674# CHECK-NEXT:  2,              87  (21.5%)
675# CHECK-NEXT:  4,              13  (3.2%)
676
677# CHECK:      Schedulers - number of cycles where we saw N micro opcodes issued:
678# CHECK-NEXT: [# issued], [# cycles]
679# CHECK-NEXT:  0,          105  (25.9%)
680# CHECK-NEXT:  1,          200  (49.4%)
681# CHECK-NEXT:  2,          100  (24.7%)
682
683# CHECK:      Scheduler's queue usage:
684# CHECK-NEXT: [1] Resource name.
685# CHECK-NEXT: [2] Average number of used buffer entries.
686# CHECK-NEXT: [3] Maximum number of used buffer entries.
687# CHECK-NEXT: [4] Total number of buffer entries.
688
689# CHECK:       [1]            [2]        [3]        [4]
690# CHECK-NEXT: PdEX             36         40         40
691# CHECK-NEXT: PdFPU            36         40         64
692# CHECK-NEXT: PdLoad           20         23         40
693# CHECK-NEXT: PdStore          19         21         24
694
695# CHECK:      Resources:
696# CHECK-NEXT: [0.0] - PdAGLU01
697# CHECK-NEXT: [0.1] - PdAGLU01
698# CHECK-NEXT: [1]   - PdBranch
699# CHECK-NEXT: [2]   - PdCount
700# CHECK-NEXT: [3]   - PdDiv
701# CHECK-NEXT: [4]   - PdEX0
702# CHECK-NEXT: [5]   - PdEX1
703# CHECK-NEXT: [6]   - PdFPCVT
704# CHECK-NEXT: [7.0] - PdFPFMA
705# CHECK-NEXT: [7.1] - PdFPFMA
706# CHECK-NEXT: [8.0] - PdFPMAL
707# CHECK-NEXT: [8.1] - PdFPMAL
708# CHECK-NEXT: [9]   - PdFPMMA
709# CHECK-NEXT: [10]  - PdFPSTO
710# CHECK-NEXT: [11]  - PdFPU0
711# CHECK-NEXT: [12]  - PdFPU1
712# CHECK-NEXT: [13]  - PdFPU2
713# CHECK-NEXT: [14]  - PdFPU3
714# CHECK-NEXT: [15]  - PdFPXBR
715# CHECK-NEXT: [16.0] - PdLoad
716# CHECK-NEXT: [16.1] - PdLoad
717# CHECK-NEXT: [17]  - PdMul
718# CHECK-NEXT: [18]  - PdStore
719
720# CHECK:      Resource pressure per iteration:
721# CHECK-NEXT: [0.0]  [0.1]  [1]    [2]    [3]    [4]    [5]    [6]    [7.0]  [7.1]  [8.0]  [8.1]  [9]    [10]   [11]   [12]   [13]   [14]   [15]   [16.0] [16.1] [17]   [18]
722# CHECK-NEXT: 4.00   4.00    -      -      -      -      -      -     3.00   3.00    -      -      -     2.00   1.00   1.00   3.00   3.00    -     3.00   3.00    -     2.00
723
724# CHECK:      Resource pressure by instruction:
725# CHECK-NEXT: [0.0]  [0.1]  [1]    [2]    [3]    [4]    [5]    [6]    [7.0]  [7.1]  [8.0]  [8.1]  [9]    [10]   [11]   [12]   [13]   [14]   [15]   [16.0] [16.1] [17]   [18]   Instructions:
726# CHECK-NEXT:  -     1.00    -      -      -      -      -      -      -      -      -      -      -     1.00    -      -      -     3.00    -      -      -      -     1.00   movaps	%xmm0, (%rax)
727# CHECK-NEXT: 3.00    -      -      -      -      -      -      -      -     3.00    -      -      -      -      -     1.00    -      -      -      -     3.00    -      -     movaps	(%rcx), %xmm1
728# CHECK-NEXT:  -     3.00    -      -      -      -      -      -     3.00    -      -      -      -      -     1.00    -      -      -      -     3.00    -      -      -     movaps	(%rdx), %xmm2
729# CHECK-NEXT: 1.00    -      -      -      -      -      -      -      -      -      -      -      -     1.00    -      -     3.00    -      -      -      -      -     1.00   movaps	%xmm3, (%rbx)
730
731# CHECK:      Timeline view:
732# CHECK-NEXT: Index     012345678
733
734# CHECK:      [0,0]     DeER .  .   movaps	%xmm0, (%rax)
735# CHECK-NEXT: [0,1]     DeeeeeER.   movaps	(%rcx), %xmm1
736# CHECK-NEXT: [0,2]     D=eeeeeER   movaps	(%rdx), %xmm2
737# CHECK-NEXT: [0,3]     D===eE--R   movaps	%xmm3, (%rbx)
738
739# CHECK:      Average Wait times (based on the timeline view):
740# CHECK-NEXT: [0]: Executions
741# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
742# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
743# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
744
745# CHECK:            [0]    [1]    [2]    [3]
746# CHECK-NEXT: 0.     1     1.0    1.0    0.0       movaps	%xmm0, (%rax)
747# CHECK-NEXT: 1.     1     1.0    1.0    0.0       movaps	(%rcx), %xmm1
748# CHECK-NEXT: 2.     1     2.0    2.0    0.0       movaps	(%rdx), %xmm2
749# CHECK-NEXT: 3.     1     4.0    2.0    2.0       movaps	%xmm3, (%rbx)
750# CHECK-NEXT:        1     2.0    1.5    0.5       <total>
751