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