xref: /llvm-project/llvm/test/tools/llvm-mca/X86/Barcelona/load-store-throughput.s (revision f0658c7a429b9e356da1670b280ab943ad0b0b94)
1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -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:      207
51# CHECK-NEXT: Total uOps:        400
52
53# CHECK:      Dispatch Width:    4
54# CHECK-NEXT: uOps Per Cycle:    1.93
55# CHECK-NEXT: IPC:               1.93
56# CHECK-NEXT: Block RThroughput: 2.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     0.50    *                   movb	(%rcx), %bpl
69# CHECK-NEXT:  1      5     0.50    *                   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:                            147  (71.0%)
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,              33  (15.9%)
84# CHECK-NEXT:  2,              148  (71.5%)
85# CHECK-NEXT:  4,              26  (12.6%)
86
87# CHECK:      Schedulers - number of cycles where we saw N micro opcodes issued:
88# CHECK-NEXT: [# issued], [# cycles]
89# CHECK-NEXT:  0,          7  (3.4%)
90# CHECK-NEXT:  2,          200  (96.6%)
91
92# CHECK:      Scheduler's queue usage:
93# CHECK-NEXT: [1] Resource name.
94# CHECK-NEXT: [2] Average number of used buffer entries.
95# CHECK-NEXT: [3] Maximum number of used buffer entries.
96# CHECK-NEXT: [4] Total number of buffer entries.
97
98# CHECK:       [1]            [2]        [3]        [4]
99# CHECK-NEXT: SBPortAny        45         54         54
100
101# CHECK:      Resources:
102# CHECK-NEXT: [0]   - SBDivider
103# CHECK-NEXT: [1]   - SBFPDivider
104# CHECK-NEXT: [2]   - SBPort0
105# CHECK-NEXT: [3]   - SBPort1
106# CHECK-NEXT: [4]   - SBPort4
107# CHECK-NEXT: [5]   - SBPort5
108# CHECK-NEXT: [6.0] - SBPort23
109# CHECK-NEXT: [6.1] - SBPort23
110
111# CHECK:      Resource pressure per iteration:
112# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
113# CHECK-NEXT:  -      -      -      -     2.00    -     2.00   2.00
114
115# CHECK:      Resource pressure by instruction:
116# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
117# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   movb	%spl, (%rax)
118# CHECK-NEXT:  -      -      -      -      -      -     1.00    -     movb	(%rcx), %bpl
119# CHECK-NEXT:  -      -      -      -      -      -      -     1.00   movb	(%rdx), %sil
120# CHECK-NEXT:  -      -      -      -     1.00    -     1.00    -     movb	%dil, (%rbx)
121
122# CHECK:      Timeline view:
123# CHECK-NEXT: Index     012345678
124
125# CHECK:      [0,0]     DeER .  .   movb	%spl, (%rax)
126# CHECK-NEXT: [0,1]     DeeeeeER.   movb	(%rcx), %bpl
127# CHECK-NEXT: [0,2]     D=eeeeeER   movb	(%rdx), %sil
128# CHECK-NEXT: [0,3]     D=eE----R   movb	%dil, (%rbx)
129
130# CHECK:      Average Wait times (based on the timeline view):
131# CHECK-NEXT: [0]: Executions
132# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
133# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
134# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
135
136# CHECK:            [0]    [1]    [2]    [3]
137# CHECK-NEXT: 0.     1     1.0    1.0    0.0       movb	%spl, (%rax)
138# CHECK-NEXT: 1.     1     1.0    1.0    0.0       movb	(%rcx), %bpl
139# CHECK-NEXT: 2.     1     2.0    2.0    0.0       movb	(%rdx), %sil
140# CHECK-NEXT: 3.     1     2.0    0.0    4.0       movb	%dil, (%rbx)
141# CHECK-NEXT:        1     1.5    1.0    1.0       <total>
142
143# CHECK:      [1] Code Region
144
145# CHECK:      Iterations:        100
146# CHECK-NEXT: Instructions:      400
147# CHECK-NEXT: Total Cycles:      207
148# CHECK-NEXT: Total uOps:        400
149
150# CHECK:      Dispatch Width:    4
151# CHECK-NEXT: uOps Per Cycle:    1.93
152# CHECK-NEXT: IPC:               1.93
153# CHECK-NEXT: Block RThroughput: 2.0
154
155# CHECK:      Instruction Info:
156# CHECK-NEXT: [1]: #uOps
157# CHECK-NEXT: [2]: Latency
158# CHECK-NEXT: [3]: RThroughput
159# CHECK-NEXT: [4]: MayLoad
160# CHECK-NEXT: [5]: MayStore
161# CHECK-NEXT: [6]: HasSideEffects (U)
162
163# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
164# CHECK-NEXT:  1      1     1.00           *            movw	%sp, (%rax)
165# CHECK-NEXT:  1      5     0.50    *                   movw	(%rcx), %bp
166# CHECK-NEXT:  1      5     0.50    *                   movw	(%rdx), %si
167# CHECK-NEXT:  1      1     1.00           *            movw	%di, (%rbx)
168
169# CHECK:      Dynamic Dispatch Stall Cycles:
170# CHECK-NEXT: RAT     - Register unavailable:                      0
171# CHECK-NEXT: RCU     - Retire tokens unavailable:                 0
172# CHECK-NEXT: SCHEDQ  - Scheduler full:                            147  (71.0%)
173# CHECK-NEXT: LQ      - Load queue full:                           0
174# CHECK-NEXT: SQ      - Store queue full:                          0
175# CHECK-NEXT: GROUP   - Static restrictions on the dispatch group: 0
176# CHECK-NEXT: USH     - Uncategorised Structural Hazard:           0
177
178# CHECK:      Dispatch Logic - number of cycles where we saw N micro opcodes dispatched:
179# CHECK-NEXT: [# dispatched], [# cycles]
180# CHECK-NEXT:  0,              33  (15.9%)
181# CHECK-NEXT:  2,              148  (71.5%)
182# CHECK-NEXT:  4,              26  (12.6%)
183
184# CHECK:      Schedulers - number of cycles where we saw N micro opcodes issued:
185# CHECK-NEXT: [# issued], [# cycles]
186# CHECK-NEXT:  0,          7  (3.4%)
187# CHECK-NEXT:  2,          200  (96.6%)
188
189# CHECK:      Scheduler's queue usage:
190# CHECK-NEXT: [1] Resource name.
191# CHECK-NEXT: [2] Average number of used buffer entries.
192# CHECK-NEXT: [3] Maximum number of used buffer entries.
193# CHECK-NEXT: [4] Total number of buffer entries.
194
195# CHECK:       [1]            [2]        [3]        [4]
196# CHECK-NEXT: SBPortAny        45         54         54
197
198# CHECK:      Resources:
199# CHECK-NEXT: [0]   - SBDivider
200# CHECK-NEXT: [1]   - SBFPDivider
201# CHECK-NEXT: [2]   - SBPort0
202# CHECK-NEXT: [3]   - SBPort1
203# CHECK-NEXT: [4]   - SBPort4
204# CHECK-NEXT: [5]   - SBPort5
205# CHECK-NEXT: [6.0] - SBPort23
206# CHECK-NEXT: [6.1] - SBPort23
207
208# CHECK:      Resource pressure per iteration:
209# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
210# CHECK-NEXT:  -      -      -      -     2.00    -     2.00   2.00
211
212# CHECK:      Resource pressure by instruction:
213# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
214# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   movw	%sp, (%rax)
215# CHECK-NEXT:  -      -      -      -      -      -     1.00    -     movw	(%rcx), %bp
216# CHECK-NEXT:  -      -      -      -      -      -      -     1.00   movw	(%rdx), %si
217# CHECK-NEXT:  -      -      -      -     1.00    -     1.00    -     movw	%di, (%rbx)
218
219# CHECK:      Timeline view:
220# CHECK-NEXT: Index     012345678
221
222# CHECK:      [0,0]     DeER .  .   movw	%sp, (%rax)
223# CHECK-NEXT: [0,1]     DeeeeeER.   movw	(%rcx), %bp
224# CHECK-NEXT: [0,2]     D=eeeeeER   movw	(%rdx), %si
225# CHECK-NEXT: [0,3]     D=eE----R   movw	%di, (%rbx)
226
227# CHECK:      Average Wait times (based on the timeline view):
228# CHECK-NEXT: [0]: Executions
229# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
230# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
231# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
232
233# CHECK:            [0]    [1]    [2]    [3]
234# CHECK-NEXT: 0.     1     1.0    1.0    0.0       movw	%sp, (%rax)
235# CHECK-NEXT: 1.     1     1.0    1.0    0.0       movw	(%rcx), %bp
236# CHECK-NEXT: 2.     1     2.0    2.0    0.0       movw	(%rdx), %si
237# CHECK-NEXT: 3.     1     2.0    0.0    4.0       movw	%di, (%rbx)
238# CHECK-NEXT:        1     1.5    1.0    1.0       <total>
239
240# CHECK:      [2] Code Region
241
242# CHECK:      Iterations:        100
243# CHECK-NEXT: Instructions:      400
244# CHECK-NEXT: Total Cycles:      207
245# CHECK-NEXT: Total uOps:        400
246
247# CHECK:      Dispatch Width:    4
248# CHECK-NEXT: uOps Per Cycle:    1.93
249# CHECK-NEXT: IPC:               1.93
250# CHECK-NEXT: Block RThroughput: 2.0
251
252# CHECK:      Instruction Info:
253# CHECK-NEXT: [1]: #uOps
254# CHECK-NEXT: [2]: Latency
255# CHECK-NEXT: [3]: RThroughput
256# CHECK-NEXT: [4]: MayLoad
257# CHECK-NEXT: [5]: MayStore
258# CHECK-NEXT: [6]: HasSideEffects (U)
259
260# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
261# CHECK-NEXT:  1      1     1.00           *            movl	%esp, (%rax)
262# CHECK-NEXT:  1      5     0.50    *                   movl	(%rcx), %ebp
263# CHECK-NEXT:  1      5     0.50    *                   movl	(%rdx), %esi
264# CHECK-NEXT:  1      1     1.00           *            movl	%edi, (%rbx)
265
266# CHECK:      Dynamic Dispatch Stall Cycles:
267# CHECK-NEXT: RAT     - Register unavailable:                      0
268# CHECK-NEXT: RCU     - Retire tokens unavailable:                 0
269# CHECK-NEXT: SCHEDQ  - Scheduler full:                            147  (71.0%)
270# CHECK-NEXT: LQ      - Load queue full:                           0
271# CHECK-NEXT: SQ      - Store queue full:                          0
272# CHECK-NEXT: GROUP   - Static restrictions on the dispatch group: 0
273# CHECK-NEXT: USH     - Uncategorised Structural Hazard:           0
274
275# CHECK:      Dispatch Logic - number of cycles where we saw N micro opcodes dispatched:
276# CHECK-NEXT: [# dispatched], [# cycles]
277# CHECK-NEXT:  0,              33  (15.9%)
278# CHECK-NEXT:  2,              148  (71.5%)
279# CHECK-NEXT:  4,              26  (12.6%)
280
281# CHECK:      Schedulers - number of cycles where we saw N micro opcodes issued:
282# CHECK-NEXT: [# issued], [# cycles]
283# CHECK-NEXT:  0,          7  (3.4%)
284# CHECK-NEXT:  2,          200  (96.6%)
285
286# CHECK:      Scheduler's queue usage:
287# CHECK-NEXT: [1] Resource name.
288# CHECK-NEXT: [2] Average number of used buffer entries.
289# CHECK-NEXT: [3] Maximum number of used buffer entries.
290# CHECK-NEXT: [4] Total number of buffer entries.
291
292# CHECK:       [1]            [2]        [3]        [4]
293# CHECK-NEXT: SBPortAny        45         54         54
294
295# CHECK:      Resources:
296# CHECK-NEXT: [0]   - SBDivider
297# CHECK-NEXT: [1]   - SBFPDivider
298# CHECK-NEXT: [2]   - SBPort0
299# CHECK-NEXT: [3]   - SBPort1
300# CHECK-NEXT: [4]   - SBPort4
301# CHECK-NEXT: [5]   - SBPort5
302# CHECK-NEXT: [6.0] - SBPort23
303# CHECK-NEXT: [6.1] - SBPort23
304
305# CHECK:      Resource pressure per iteration:
306# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
307# CHECK-NEXT:  -      -      -      -     2.00    -     2.00   2.00
308
309# CHECK:      Resource pressure by instruction:
310# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
311# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   movl	%esp, (%rax)
312# CHECK-NEXT:  -      -      -      -      -      -     1.00    -     movl	(%rcx), %ebp
313# CHECK-NEXT:  -      -      -      -      -      -      -     1.00   movl	(%rdx), %esi
314# CHECK-NEXT:  -      -      -      -     1.00    -     1.00    -     movl	%edi, (%rbx)
315
316# CHECK:      Timeline view:
317# CHECK-NEXT: Index     012345678
318
319# CHECK:      [0,0]     DeER .  .   movl	%esp, (%rax)
320# CHECK-NEXT: [0,1]     DeeeeeER.   movl	(%rcx), %ebp
321# CHECK-NEXT: [0,2]     D=eeeeeER   movl	(%rdx), %esi
322# CHECK-NEXT: [0,3]     D=eE----R   movl	%edi, (%rbx)
323
324# CHECK:      Average Wait times (based on the timeline view):
325# CHECK-NEXT: [0]: Executions
326# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
327# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
328# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
329
330# CHECK:            [0]    [1]    [2]    [3]
331# CHECK-NEXT: 0.     1     1.0    1.0    0.0       movl	%esp, (%rax)
332# CHECK-NEXT: 1.     1     1.0    1.0    0.0       movl	(%rcx), %ebp
333# CHECK-NEXT: 2.     1     2.0    2.0    0.0       movl	(%rdx), %esi
334# CHECK-NEXT: 3.     1     2.0    0.0    4.0       movl	%edi, (%rbx)
335# CHECK-NEXT:        1     1.5    1.0    1.0       <total>
336
337# CHECK:      [3] Code Region
338
339# CHECK:      Iterations:        100
340# CHECK-NEXT: Instructions:      400
341# CHECK-NEXT: Total Cycles:      207
342# CHECK-NEXT: Total uOps:        400
343
344# CHECK:      Dispatch Width:    4
345# CHECK-NEXT: uOps Per Cycle:    1.93
346# CHECK-NEXT: IPC:               1.93
347# CHECK-NEXT: Block RThroughput: 2.0
348
349# CHECK:      Instruction Info:
350# CHECK-NEXT: [1]: #uOps
351# CHECK-NEXT: [2]: Latency
352# CHECK-NEXT: [3]: RThroughput
353# CHECK-NEXT: [4]: MayLoad
354# CHECK-NEXT: [5]: MayStore
355# CHECK-NEXT: [6]: HasSideEffects (U)
356
357# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
358# CHECK-NEXT:  1      1     1.00           *            movq	%rsp, (%rax)
359# CHECK-NEXT:  1      5     0.50    *                   movq	(%rcx), %rbp
360# CHECK-NEXT:  1      5     0.50    *                   movq	(%rdx), %rsi
361# CHECK-NEXT:  1      1     1.00           *            movq	%rdi, (%rbx)
362
363# CHECK:      Dynamic Dispatch Stall Cycles:
364# CHECK-NEXT: RAT     - Register unavailable:                      0
365# CHECK-NEXT: RCU     - Retire tokens unavailable:                 0
366# CHECK-NEXT: SCHEDQ  - Scheduler full:                            147  (71.0%)
367# CHECK-NEXT: LQ      - Load queue full:                           0
368# CHECK-NEXT: SQ      - Store queue full:                          0
369# CHECK-NEXT: GROUP   - Static restrictions on the dispatch group: 0
370# CHECK-NEXT: USH     - Uncategorised Structural Hazard:           0
371
372# CHECK:      Dispatch Logic - number of cycles where we saw N micro opcodes dispatched:
373# CHECK-NEXT: [# dispatched], [# cycles]
374# CHECK-NEXT:  0,              33  (15.9%)
375# CHECK-NEXT:  2,              148  (71.5%)
376# CHECK-NEXT:  4,              26  (12.6%)
377
378# CHECK:      Schedulers - number of cycles where we saw N micro opcodes issued:
379# CHECK-NEXT: [# issued], [# cycles]
380# CHECK-NEXT:  0,          7  (3.4%)
381# CHECK-NEXT:  2,          200  (96.6%)
382
383# CHECK:      Scheduler's queue usage:
384# CHECK-NEXT: [1] Resource name.
385# CHECK-NEXT: [2] Average number of used buffer entries.
386# CHECK-NEXT: [3] Maximum number of used buffer entries.
387# CHECK-NEXT: [4] Total number of buffer entries.
388
389# CHECK:       [1]            [2]        [3]        [4]
390# CHECK-NEXT: SBPortAny        45         54         54
391
392# CHECK:      Resources:
393# CHECK-NEXT: [0]   - SBDivider
394# CHECK-NEXT: [1]   - SBFPDivider
395# CHECK-NEXT: [2]   - SBPort0
396# CHECK-NEXT: [3]   - SBPort1
397# CHECK-NEXT: [4]   - SBPort4
398# CHECK-NEXT: [5]   - SBPort5
399# CHECK-NEXT: [6.0] - SBPort23
400# CHECK-NEXT: [6.1] - SBPort23
401
402# CHECK:      Resource pressure per iteration:
403# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
404# CHECK-NEXT:  -      -      -      -     2.00    -     2.00   2.00
405
406# CHECK:      Resource pressure by instruction:
407# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
408# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   movq	%rsp, (%rax)
409# CHECK-NEXT:  -      -      -      -      -      -     1.00    -     movq	(%rcx), %rbp
410# CHECK-NEXT:  -      -      -      -      -      -      -     1.00   movq	(%rdx), %rsi
411# CHECK-NEXT:  -      -      -      -     1.00    -     1.00    -     movq	%rdi, (%rbx)
412
413# CHECK:      Timeline view:
414# CHECK-NEXT: Index     012345678
415
416# CHECK:      [0,0]     DeER .  .   movq	%rsp, (%rax)
417# CHECK-NEXT: [0,1]     DeeeeeER.   movq	(%rcx), %rbp
418# CHECK-NEXT: [0,2]     D=eeeeeER   movq	(%rdx), %rsi
419# CHECK-NEXT: [0,3]     D=eE----R   movq	%rdi, (%rbx)
420
421# CHECK:      Average Wait times (based on the timeline view):
422# CHECK-NEXT: [0]: Executions
423# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
424# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
425# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
426
427# CHECK:            [0]    [1]    [2]    [3]
428# CHECK-NEXT: 0.     1     1.0    1.0    0.0       movq	%rsp, (%rax)
429# CHECK-NEXT: 1.     1     1.0    1.0    0.0       movq	(%rcx), %rbp
430# CHECK-NEXT: 2.     1     2.0    2.0    0.0       movq	(%rdx), %rsi
431# CHECK-NEXT: 3.     1     2.0    0.0    4.0       movq	%rdi, (%rbx)
432# CHECK-NEXT:        1     1.5    1.0    1.0       <total>
433
434# CHECK:      [4] Code Region
435
436# CHECK:      Iterations:        100
437# CHECK-NEXT: Instructions:      400
438# CHECK-NEXT: Total Cycles:      207
439# CHECK-NEXT: Total uOps:        400
440
441# CHECK:      Dispatch Width:    4
442# CHECK-NEXT: uOps Per Cycle:    1.93
443# CHECK-NEXT: IPC:               1.93
444# CHECK-NEXT: Block RThroughput: 2.0
445
446# CHECK:      Instruction Info:
447# CHECK-NEXT: [1]: #uOps
448# CHECK-NEXT: [2]: Latency
449# CHECK-NEXT: [3]: RThroughput
450# CHECK-NEXT: [4]: MayLoad
451# CHECK-NEXT: [5]: MayStore
452# CHECK-NEXT: [6]: HasSideEffects (U)
453
454# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
455# CHECK-NEXT:  1      1     1.00           *      U     movd	%mm0, (%rax)
456# CHECK-NEXT:  1      5     0.50    *                   movd	(%rcx), %mm1
457# CHECK-NEXT:  1      5     0.50    *                   movd	(%rdx), %mm2
458# CHECK-NEXT:  1      1     1.00           *      U     movd	%mm3, (%rbx)
459
460# CHECK:      Dynamic Dispatch Stall Cycles:
461# CHECK-NEXT: RAT     - Register unavailable:                      0
462# CHECK-NEXT: RCU     - Retire tokens unavailable:                 0
463# CHECK-NEXT: SCHEDQ  - Scheduler full:                            147  (71.0%)
464# CHECK-NEXT: LQ      - Load queue full:                           0
465# CHECK-NEXT: SQ      - Store queue full:                          0
466# CHECK-NEXT: GROUP   - Static restrictions on the dispatch group: 0
467# CHECK-NEXT: USH     - Uncategorised Structural Hazard:           0
468
469# CHECK:      Dispatch Logic - number of cycles where we saw N micro opcodes dispatched:
470# CHECK-NEXT: [# dispatched], [# cycles]
471# CHECK-NEXT:  0,              33  (15.9%)
472# CHECK-NEXT:  2,              148  (71.5%)
473# CHECK-NEXT:  4,              26  (12.6%)
474
475# CHECK:      Schedulers - number of cycles where we saw N micro opcodes issued:
476# CHECK-NEXT: [# issued], [# cycles]
477# CHECK-NEXT:  0,          7  (3.4%)
478# CHECK-NEXT:  2,          200  (96.6%)
479
480# CHECK:      Scheduler's queue usage:
481# CHECK-NEXT: [1] Resource name.
482# CHECK-NEXT: [2] Average number of used buffer entries.
483# CHECK-NEXT: [3] Maximum number of used buffer entries.
484# CHECK-NEXT: [4] Total number of buffer entries.
485
486# CHECK:       [1]            [2]        [3]        [4]
487# CHECK-NEXT: SBPortAny        45         54         54
488
489# CHECK:      Resources:
490# CHECK-NEXT: [0]   - SBDivider
491# CHECK-NEXT: [1]   - SBFPDivider
492# CHECK-NEXT: [2]   - SBPort0
493# CHECK-NEXT: [3]   - SBPort1
494# CHECK-NEXT: [4]   - SBPort4
495# CHECK-NEXT: [5]   - SBPort5
496# CHECK-NEXT: [6.0] - SBPort23
497# CHECK-NEXT: [6.1] - SBPort23
498
499# CHECK:      Resource pressure per iteration:
500# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
501# CHECK-NEXT:  -      -      -      -     2.00    -     2.00   2.00
502
503# CHECK:      Resource pressure by instruction:
504# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
505# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   movd	%mm0, (%rax)
506# CHECK-NEXT:  -      -      -      -      -      -     1.00    -     movd	(%rcx), %mm1
507# CHECK-NEXT:  -      -      -      -      -      -      -     1.00   movd	(%rdx), %mm2
508# CHECK-NEXT:  -      -      -      -     1.00    -     1.00    -     movd	%mm3, (%rbx)
509
510# CHECK:      Timeline view:
511# CHECK-NEXT: Index     012345678
512
513# CHECK:      [0,0]     DeER .  .   movd	%mm0, (%rax)
514# CHECK-NEXT: [0,1]     DeeeeeER.   movd	(%rcx), %mm1
515# CHECK-NEXT: [0,2]     D=eeeeeER   movd	(%rdx), %mm2
516# CHECK-NEXT: [0,3]     D=eE----R   movd	%mm3, (%rbx)
517
518# CHECK:      Average Wait times (based on the timeline view):
519# CHECK-NEXT: [0]: Executions
520# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
521# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
522# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
523
524# CHECK:            [0]    [1]    [2]    [3]
525# CHECK-NEXT: 0.     1     1.0    1.0    0.0       movd	%mm0, (%rax)
526# CHECK-NEXT: 1.     1     1.0    1.0    0.0       movd	(%rcx), %mm1
527# CHECK-NEXT: 2.     1     2.0    2.0    0.0       movd	(%rdx), %mm2
528# CHECK-NEXT: 3.     1     2.0    0.0    4.0       movd	%mm3, (%rbx)
529# CHECK-NEXT:        1     1.5    1.0    1.0       <total>
530
531# CHECK:      [5] Code Region
532
533# CHECK:      Iterations:        100
534# CHECK-NEXT: Instructions:      400
535# CHECK-NEXT: Total Cycles:      208
536# CHECK-NEXT: Total uOps:        400
537
538# CHECK:      Dispatch Width:    4
539# CHECK-NEXT: uOps Per Cycle:    1.92
540# CHECK-NEXT: IPC:               1.92
541# CHECK-NEXT: Block RThroughput: 2.0
542
543# CHECK:      Instruction Info:
544# CHECK-NEXT: [1]: #uOps
545# CHECK-NEXT: [2]: Latency
546# CHECK-NEXT: [3]: RThroughput
547# CHECK-NEXT: [4]: MayLoad
548# CHECK-NEXT: [5]: MayStore
549# CHECK-NEXT: [6]: HasSideEffects (U)
550
551# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
552# CHECK-NEXT:  1      1     1.00           *            movaps	%xmm0, (%rax)
553# CHECK-NEXT:  1      6     0.50    *                   movaps	(%rcx), %xmm1
554# CHECK-NEXT:  1      6     0.50    *                   movaps	(%rdx), %xmm2
555# CHECK-NEXT:  1      1     1.00           *            movaps	%xmm3, (%rbx)
556
557# CHECK:      Dynamic Dispatch Stall Cycles:
558# CHECK-NEXT: RAT     - Register unavailable:                      0
559# CHECK-NEXT: RCU     - Retire tokens unavailable:                 0
560# CHECK-NEXT: SCHEDQ  - Scheduler full:                            147  (70.7%)
561# CHECK-NEXT: LQ      - Load queue full:                           0
562# CHECK-NEXT: SQ      - Store queue full:                          0
563# CHECK-NEXT: GROUP   - Static restrictions on the dispatch group: 0
564# CHECK-NEXT: USH     - Uncategorised Structural Hazard:           0
565
566# CHECK:      Dispatch Logic - number of cycles where we saw N micro opcodes dispatched:
567# CHECK-NEXT: [# dispatched], [# cycles]
568# CHECK-NEXT:  0,              34  (16.3%)
569# CHECK-NEXT:  2,              148  (71.2%)
570# CHECK-NEXT:  4,              26  (12.5%)
571
572# CHECK:      Schedulers - number of cycles where we saw N micro opcodes issued:
573# CHECK-NEXT: [# issued], [# cycles]
574# CHECK-NEXT:  0,          8  (3.8%)
575# CHECK-NEXT:  2,          200  (96.2%)
576
577# CHECK:      Scheduler's queue usage:
578# CHECK-NEXT: [1] Resource name.
579# CHECK-NEXT: [2] Average number of used buffer entries.
580# CHECK-NEXT: [3] Maximum number of used buffer entries.
581# CHECK-NEXT: [4] Total number of buffer entries.
582
583# CHECK:       [1]            [2]        [3]        [4]
584# CHECK-NEXT: SBPortAny        45         54         54
585
586# CHECK:      Resources:
587# CHECK-NEXT: [0]   - SBDivider
588# CHECK-NEXT: [1]   - SBFPDivider
589# CHECK-NEXT: [2]   - SBPort0
590# CHECK-NEXT: [3]   - SBPort1
591# CHECK-NEXT: [4]   - SBPort4
592# CHECK-NEXT: [5]   - SBPort5
593# CHECK-NEXT: [6.0] - SBPort23
594# CHECK-NEXT: [6.1] - SBPort23
595
596# CHECK:      Resource pressure per iteration:
597# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
598# CHECK-NEXT:  -      -      -      -     2.00    -     2.00   2.00
599
600# CHECK:      Resource pressure by instruction:
601# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
602# CHECK-NEXT:  -      -      -      -     1.00    -      -     1.00   movaps	%xmm0, (%rax)
603# CHECK-NEXT:  -      -      -      -      -      -     1.00    -     movaps	(%rcx), %xmm1
604# CHECK-NEXT:  -      -      -      -      -      -      -     1.00   movaps	(%rdx), %xmm2
605# CHECK-NEXT:  -      -      -      -     1.00    -     1.00    -     movaps	%xmm3, (%rbx)
606
607# CHECK:      Timeline view:
608# CHECK-NEXT: Index     0123456789
609
610# CHECK:      [0,0]     DeER .   .   movaps	%xmm0, (%rax)
611# CHECK-NEXT: [0,1]     DeeeeeeER.   movaps	(%rcx), %xmm1
612# CHECK-NEXT: [0,2]     D=eeeeeeER   movaps	(%rdx), %xmm2
613# CHECK-NEXT: [0,3]     D=eE-----R   movaps	%xmm3, (%rbx)
614
615# CHECK:      Average Wait times (based on the timeline view):
616# CHECK-NEXT: [0]: Executions
617# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
618# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
619# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
620
621# CHECK:            [0]    [1]    [2]    [3]
622# CHECK-NEXT: 0.     1     1.0    1.0    0.0       movaps	%xmm0, (%rax)
623# CHECK-NEXT: 1.     1     1.0    1.0    0.0       movaps	(%rcx), %xmm1
624# CHECK-NEXT: 2.     1     2.0    2.0    0.0       movaps	(%rdx), %xmm2
625# CHECK-NEXT: 3.     1     2.0    0.0    5.0       movaps	%xmm3, (%rbx)
626# CHECK-NEXT:        1     1.5    1.0    1.3       <total>
627