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-prefix=ALL -check-prefix=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-prefix=ALL -check-prefix=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-prefix=ALL -check-prefix=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-prefix=ALL -check-prefix=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-prefix=ALL -check-prefix=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-prefix=ALL -check-prefix=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-prefix=ALL -check-prefix=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-prefix=ALL -check-prefix=ZNVER1
11 vdivps
%xmm0
, %xmm1
, %xmm1
12 vaddps
(%rax
), %xmm1
, %xmm1
15 # ALL-NEXT: Instructions: 2
17 # BARCELONA-NEXT: Total Cycles: 20
18 # BARCELONA-NEXT: Total uOps: 3
20 # BDVER2-NEXT: Total Cycles: 17
21 # BDVER2-NEXT: Total uOps: 2
23 # BDWELL-NEXT: Total Cycles: 17
24 # BDWELL-NEXT: Total uOps: 3
26 # BTVER2-NEXT: Total Cycles: 25
27 # BTVER2-NEXT: Total uOps: 2
29 # HASWELL-NEXT: Total Cycles: 19
30 # HASWELL-NEXT: Total uOps: 3
32 # SANDY-NEXT: Total Cycles: 20
33 # SANDY-NEXT: Total uOps: 3
35 # SKYLAKE-NEXT: Total Cycles: 18
36 # SKYLAKE-NEXT: Total uOps: 3
38 # ZNVER1-NEXT: Total Cycles: 20
39 # ZNVER1-NEXT: Total uOps: 2
41 # BARCELONA: Dispatch Width: 4
42 # BARCELONA-NEXT: uOps Per Cycle: 0.15
43 # BARCELONA-NEXT: IPC: 0.10
44 # BARCELONA-NEXT: Block RThroughput: 14.0
46 # BDVER2: Dispatch Width: 4
47 # BDVER2-NEXT: uOps Per Cycle: 0.12
48 # BDVER2-NEXT: IPC: 0.12
49 # BDVER2-NEXT: Block RThroughput: 5.0
51 # BDWELL: Dispatch Width: 4
52 # BDWELL-NEXT: uOps Per Cycle: 0.18
53 # BDWELL-NEXT: IPC: 0.12
54 # BDWELL-NEXT: Block RThroughput: 5.0
56 # BTVER2: Dispatch Width: 2
57 # BTVER2-NEXT: uOps Per Cycle: 0.08
58 # BTVER2-NEXT: IPC: 0.08
59 # BTVER2-NEXT: Block RThroughput: 19.0
61 # HASWELL: Dispatch Width: 4
62 # HASWELL-NEXT: uOps Per Cycle: 0.16
63 # HASWELL-NEXT: IPC: 0.11
64 # HASWELL-NEXT: Block RThroughput: 7.0
66 # SANDY: Dispatch Width: 4
67 # SANDY-NEXT: uOps Per Cycle: 0.15
68 # SANDY-NEXT: IPC: 0.10
69 # SANDY-NEXT: Block RThroughput: 14.0
71 # SKYLAKE: Dispatch Width: 6
72 # SKYLAKE-NEXT: uOps Per Cycle: 0.17
73 # SKYLAKE-NEXT: IPC: 0.11
74 # SKYLAKE-NEXT: Block RThroughput: 3.0
76 # ZNVER1: Dispatch Width: 4
77 # ZNVER1-NEXT: uOps Per Cycle: 0.10
78 # ZNVER1-NEXT: IPC: 0.10
79 # ZNVER1-NEXT: Block RThroughput: 1.0
83 # BARCELONA-NEXT: 0123456789
84 # BARCELONA-NEXT: Index 0123456789
86 # BDVER2-NEXT: 0123456
87 # BDVER2-NEXT: Index 0123456789
89 # BDWELL-NEXT: 0123456
90 # BDWELL-NEXT: Index 0123456789
92 # BTVER2-NEXT: 0123456789
93 # BTVER2-NEXT: Index 0123456789 01234
95 # HASWELL-NEXT: 012345678
96 # HASWELL-NEXT: Index 0123456789
98 # SANDY-NEXT: 0123456789
99 # SANDY-NEXT: Index 0123456789
101 # SKYLAKE-NEXT: 01234567
102 # SKYLAKE-NEXT: Index 0123456789
104 # ZNVER1-NEXT: 0123456789
105 # ZNVER1-NEXT: Index 0123456789
107 # BARCELONA: [0,0] DeeeeeeeeeeeeeeER . vdivps %xmm0, %xmm1, %xmm1
108 # BARCELONA-NEXT: [0,1] D========eeeeeeeeeER vaddps (%rax), %xmm1, %xmm1
110 # BDVER2: [0,0] DeeeeeeeeeER .. vdivps %xmm0, %xmm1, %xmm1
111 # BDVER2-NEXT: [0,1] D====eeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1
113 # BDWELL: [0,0] DeeeeeeeeeeeER .. vdivps %xmm0, %xmm1, %xmm1
114 # BDWELL-NEXT: [0,1] D======eeeeeeeeER vaddps (%rax), %xmm1, %xmm1
116 # BTVER2: [0,0] DeeeeeeeeeeeeeeeeeeeER . vdivps %xmm0, %xmm1, %xmm1
117 # BTVER2-NEXT: [0,1] D==============eeeeeeeeER vaddps (%rax), %xmm1, %xmm1
119 # HASWELL: [0,0] DeeeeeeeeeeeeeER . vdivps %xmm0, %xmm1, %xmm1
120 # HASWELL-NEXT: [0,1] D=======eeeeeeeeeER vaddps (%rax), %xmm1, %xmm1
122 # SANDY: [0,0] DeeeeeeeeeeeeeeER . vdivps %xmm0, %xmm1, %xmm1
123 # SANDY-NEXT: [0,1] D========eeeeeeeeeER vaddps (%rax), %xmm1, %xmm1
125 # SKYLAKE: [0,0] DeeeeeeeeeeeER . . vdivps %xmm0, %xmm1, %xmm1
126 # SKYLAKE-NEXT: [0,1] D=====eeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1
128 # ZNVER1: [0,0] DeeeeeeeeeeeeeeeER . vdivps %xmm0, %xmm1, %xmm1
129 # ZNVER1-NEXT: [0,1] D=======eeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1
131 # ALL: Average Wait times (based on the timeline view):
132 # ALL-NEXT: [0]: Executions
133 # ALL-NEXT: [1]: Average time spent waiting in a scheduler's queue
134 # ALL-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
135 # ALL-NEXT: [3]: Average time elapsed from WB until retire stage
137 # ALL: [0] [1] [2] [3]
138 # ALL-NEXT: 0. 1 1.0 1.0 0.0 vdivps %xmm0, %xmm1, %xmm1
140 # BARCELONA-NEXT: 1. 1 9.0 0.0 0.0 vaddps (%rax), %xmm1, %xmm1
141 # BDVER2-NEXT: 1. 1 5.0 0.0 0.0 vaddps (%rax), %xmm1, %xmm1
142 # BDWELL-NEXT: 1. 1 7.0 0.0 0.0 vaddps (%rax), %xmm1, %xmm1
143 # BTVER2-NEXT: 1. 1 15.0 0.0 0.0 vaddps (%rax), %xmm1, %xmm1
144 # HASWELL-NEXT: 1. 1 8.0 0.0 0.0 vaddps (%rax), %xmm1, %xmm1
145 # SANDY-NEXT: 1. 1 9.0 0.0 0.0 vaddps (%rax), %xmm1, %xmm1
146 # SKYLAKE-NEXT: 1. 1 6.0 0.0 0.0 vaddps (%rax), %xmm1, %xmm1
147 # ZNVER1-NEXT: 1. 1 8.0 0.0 0.0 vaddps (%rax), %xmm1, %xmm1