1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=sandybridge -iterations=1 -resource-pressure=false -instruction-info=false -timeline < %s | FileCheck %s -check-prefixes=ALL,SANDY
3# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=haswell -iterations=1 -resource-pressure=false -instruction-info=false -timeline < %s | FileCheck %s -check-prefixes=ALL,HASWELL
4# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=broadwell -iterations=1 -resource-pressure=false -instruction-info=false -timeline < %s | FileCheck %s -check-prefixes=ALL,BDWELL
5# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=skylake -iterations=1 -resource-pressure=false -instruction-info=false -timeline < %s | FileCheck %s -check-prefixes=ALL,SKYLAKE
6# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -iterations=1 -resource-pressure=false -instruction-info=false -timeline < %s | FileCheck %s -check-prefixes=ALL,BARCELONA
7# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=bdver2 -iterations=1 -resource-pressure=false -instruction-info=false -timeline < %s | FileCheck %s -check-prefixes=ALL,BDVER2
8# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -iterations=1 -resource-pressure=false -instruction-info=false -timeline < %s | FileCheck %s -check-prefixes=ALL,BTVER2
9# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=znver1 -iterations=1 -resource-pressure=false -instruction-info=false -timeline < %s | FileCheck %s -check-prefixes=ALL,ZNVER1
10# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=znver2 -iterations=1 -resource-pressure=false -instruction-info=false -timeline < %s | FileCheck %s -check-prefixes=ALL,ZNVER2
11
12vdivps  %xmm0, %xmm1, %xmm1
13vaddps  (%rax), %xmm1, %xmm1
14
15# ALL:            Iterations:        1
16# ALL-NEXT:       Instructions:      2
17
18# BARCELONA-NEXT: Total Cycles:      20
19# BARCELONA-NEXT: Total uOps:        3
20
21# BDVER2-NEXT:    Total Cycles:      17
22# BDVER2-NEXT:    Total uOps:        2
23
24# BDWELL-NEXT:    Total Cycles:      17
25# BDWELL-NEXT:    Total uOps:        3
26
27# BTVER2-NEXT:    Total Cycles:      25
28# BTVER2-NEXT:    Total uOps:        2
29
30# HASWELL-NEXT:   Total Cycles:      19
31# HASWELL-NEXT:   Total uOps:        3
32
33# SANDY-NEXT:     Total Cycles:      20
34# SANDY-NEXT:     Total uOps:        3
35
36# SKYLAKE-NEXT:   Total Cycles:      18
37# SKYLAKE-NEXT:   Total uOps:        3
38
39# ZNVER1-NEXT:    Total Cycles:      20
40# ZNVER1-NEXT:    Total uOps:        2
41
42# ZNVER2-NEXT:    Total Cycles:      21
43# ZNVER2-NEXT:    Total uOps:        2
44
45# BARCELONA:      Dispatch Width:    4
46# BARCELONA-NEXT: uOps Per Cycle:    0.15
47# BARCELONA-NEXT: IPC:               0.10
48# BARCELONA-NEXT: Block RThroughput: 14.0
49
50# BDVER2:         Dispatch Width:    4
51# BDVER2-NEXT:    uOps Per Cycle:    0.12
52# BDVER2-NEXT:    IPC:               0.12
53# BDVER2-NEXT:    Block RThroughput: 5.0
54
55# BDWELL:         Dispatch Width:    4
56# BDWELL-NEXT:    uOps Per Cycle:    0.18
57# BDWELL-NEXT:    IPC:               0.12
58# BDWELL-NEXT:    Block RThroughput: 5.0
59
60# BTVER2:         Dispatch Width:    2
61# BTVER2-NEXT:    uOps Per Cycle:    0.08
62# BTVER2-NEXT:    IPC:               0.08
63# BTVER2-NEXT:    Block RThroughput: 19.0
64
65# HASWELL:        Dispatch Width:    4
66# HASWELL-NEXT:   uOps Per Cycle:    0.16
67# HASWELL-NEXT:   IPC:               0.11
68# HASWELL-NEXT:   Block RThroughput: 7.0
69
70# SANDY:          Dispatch Width:    4
71# SANDY-NEXT:     uOps Per Cycle:    0.15
72# SANDY-NEXT:     IPC:               0.10
73# SANDY-NEXT:     Block RThroughput: 14.0
74
75# SKYLAKE:        Dispatch Width:    6
76# SKYLAKE-NEXT:   uOps Per Cycle:    0.17
77# SKYLAKE-NEXT:   IPC:               0.11
78# SKYLAKE-NEXT:   Block RThroughput: 3.0
79
80# ZNVER1:         Dispatch Width:    4
81# ZNVER1-NEXT:    uOps Per Cycle:    0.10
82# ZNVER1-NEXT:    IPC:               0.10
83# ZNVER1-NEXT:    Block RThroughput: 1.0
84
85# ZNVER2:         Dispatch Width:    4
86# ZNVER2-NEXT:    uOps Per Cycle:    0.10
87# ZNVER2-NEXT:    IPC:               0.10
88# ZNVER2-NEXT:    Block RThroughput: 1.0
89
90# ALL:            Timeline view:
91
92# BARCELONA-NEXT:                     0123456789
93# BARCELONA-NEXT: Index     0123456789
94
95# BDVER2-NEXT:                        0123456
96# BDVER2-NEXT:    Index     0123456789
97
98# BDWELL-NEXT:                        0123456
99# BDWELL-NEXT:    Index     0123456789
100
101# BTVER2-NEXT:                        0123456789
102# BTVER2-NEXT:    Index     0123456789          01234
103
104# HASWELL-NEXT:                       012345678
105# HASWELL-NEXT:   Index     0123456789
106
107# SANDY-NEXT:                         0123456789
108# SANDY-NEXT:     Index     0123456789
109
110# SKYLAKE-NEXT:                       01234567
111# SKYLAKE-NEXT:   Index     0123456789
112
113# ZNVER1-NEXT:                        0123456789
114# ZNVER1-NEXT:    Index     0123456789
115
116# ZNVER2-NEXT:                        0123456789
117# ZNVER2-NEXT:    Index     0123456789          0
118
119# BARCELONA:      [0,0]     DeeeeeeeeeeeeeeER  .   vdivps	%xmm0, %xmm1, %xmm1
120# BARCELONA-NEXT: [0,1]     D========eeeeeeeeeER   vaddps	(%rax), %xmm1, %xmm1
121
122# BDVER2:         [0,0]     DeeeeeeeeeER   ..   vdivps	%xmm0, %xmm1, %xmm1
123# BDVER2-NEXT:    [0,1]     D====eeeeeeeeeeER   vaddps	(%rax), %xmm1, %xmm1
124
125# BDWELL:         [0,0]     DeeeeeeeeeeeER ..   vdivps	%xmm0, %xmm1, %xmm1
126# BDWELL-NEXT:    [0,1]     D======eeeeeeeeER   vaddps	(%rax), %xmm1, %xmm1
127
128# BTVER2:         [0,0]     DeeeeeeeeeeeeeeeeeeeER  .   vdivps	%xmm0, %xmm1, %xmm1
129# BTVER2-NEXT:    [0,1]     D==============eeeeeeeeER   vaddps	(%rax), %xmm1, %xmm1
130
131# HASWELL:        [0,0]     DeeeeeeeeeeeeeER  .   vdivps	%xmm0, %xmm1, %xmm1
132# HASWELL-NEXT:   [0,1]     D=======eeeeeeeeeER   vaddps	(%rax), %xmm1, %xmm1
133
134# SANDY:          [0,0]     DeeeeeeeeeeeeeeER  .   vdivps	%xmm0, %xmm1, %xmm1
135# SANDY-NEXT:     [0,1]     D========eeeeeeeeeER   vaddps	(%rax), %xmm1, %xmm1
136
137# SKYLAKE:        [0,0]     DeeeeeeeeeeeER . .   vdivps	%xmm0, %xmm1, %xmm1
138# SKYLAKE-NEXT:   [0,1]     D=====eeeeeeeeeeER   vaddps	(%rax), %xmm1, %xmm1
139
140# ZNVER1:         [0,0]     DeeeeeeeeeeeeeeeER .   vdivps	%xmm0, %xmm1, %xmm1
141# ZNVER1-NEXT:    [0,1]     D=======eeeeeeeeeeER   vaddps	(%rax), %xmm1, %xmm1
142
143# ZNVER2:         [0,0]     DeeeeeeeeeeeeeeeER  .   vdivps	%xmm0, %xmm1, %xmm1
144# ZNVER2-NEXT:    [0,1]     D========eeeeeeeeeeER   vaddps	(%rax), %xmm1, %xmm1
145
146# ALL:            Average Wait times (based on the timeline view):
147# ALL-NEXT:       [0]: Executions
148# ALL-NEXT:       [1]: Average time spent waiting in a scheduler's queue
149# ALL-NEXT:       [2]: Average time spent waiting in a scheduler's queue while ready
150# ALL-NEXT:       [3]: Average time elapsed from WB until retire stage
151
152# ALL:                  [0]    [1]    [2]    [3]
153# ALL-NEXT:       0.     1     1.0    1.0    0.0       vdivps	%xmm0, %xmm1, %xmm1
154
155# BARCELONA-NEXT: 1.     1     9.0    0.0    0.0       vaddps	(%rax), %xmm1, %xmm1
156# BARCELONA-NEXT:        1     5.0    0.5    0.0       <total>
157
158# BDVER2-NEXT:    1.     1     5.0    0.0    0.0       vaddps	(%rax), %xmm1, %xmm1
159# BDVER2-NEXT:           1     3.0    0.5    0.0       <total>
160
161# BDWELL-NEXT:    1.     1     7.0    0.0    0.0       vaddps	(%rax), %xmm1, %xmm1
162# BDWELL-NEXT:           1     4.0    0.5    0.0       <total>
163
164# BTVER2-NEXT:    1.     1     15.0   0.0    0.0       vaddps	(%rax), %xmm1, %xmm1
165# BTVER2-NEXT:           1     8.0    0.5    0.0       <total>
166
167# HASWELL-NEXT:   1.     1     8.0    0.0    0.0       vaddps	(%rax), %xmm1, %xmm1
168# HASWELL-NEXT:          1     4.5    0.5    0.0       <total>
169
170# SANDY-NEXT:     1.     1     9.0    0.0    0.0       vaddps	(%rax), %xmm1, %xmm1
171# SANDY-NEXT:            1     5.0    0.5    0.0       <total>
172
173# SKYLAKE-NEXT:   1.     1     6.0    0.0    0.0       vaddps	(%rax), %xmm1, %xmm1
174# SKYLAKE-NEXT:          1     3.5    0.5    0.0       <total>
175
176# ZNVER1-NEXT:    1.     1     8.0    0.0    0.0       vaddps	(%rax), %xmm1, %xmm1
177# ZNVER1-NEXT:           1     4.5    0.5    0.0       <total>
178
179# ZNVER2-NEXT:    1.     1     9.0    0.0    0.0       vaddps	(%rax), %xmm1, %xmm1
180# ZNVER2-NEXT:           1     5.0    0.5    0.0       <total>
181