1 # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2 # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=haswell -iterations=1 -timeline -resource-pressure=false < %s | FileCheck %s -check-prefix=ALL -check-prefix=HASWELL
3 # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=broadwell -iterations=1 -timeline -resource-pressure=false < %s | FileCheck %s -check-prefix=ALL -check-prefix=BDWELL
4 # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=skylake -iterations=1 -timeline -resource-pressure=false < %s | FileCheck %s -check-prefix=ALL -check-prefix=SKYLAKE
5 # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=bdver2 -iterations=1 -timeline -resource-pressure=false < %s | FileCheck %s -check-prefix=ALL -check-prefix=BDVER2
6 # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -iterations=1 -timeline -resource-pressure=false < %s | FileCheck %s -check-prefix=ALL -check-prefix=BTVER2
7 # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=znver1 -iterations=1 -timeline -resource-pressure=false < %s | FileCheck %s -check-prefix=ALL -check-prefix=ZNVER1
10 bextrl
%esi
, (%rdi
), %eax
13 # ALL-NEXT: Instructions: 2
15 # BDVER2-NEXT: Total Cycles: 9
16 # BDVER2-NEXT: Total uOps: 3
18 # BDWELL-NEXT: Total Cycles: 10
19 # BDWELL-NEXT: Total uOps: 4
21 # BTVER2-NEXT: Total Cycles: 7
22 # BTVER2-NEXT: Total uOps: 2
24 # HASWELL-NEXT: Total Cycles: 10
25 # HASWELL-NEXT: Total uOps: 4
27 # SKYLAKE-NEXT: Total Cycles: 10
28 # SKYLAKE-NEXT: Total uOps: 4
30 # ZNVER1-NEXT: Total Cycles: 8
31 # ZNVER1-NEXT: Total uOps: 3
33 # BDVER2: Dispatch Width: 4
34 # BDVER2-NEXT: uOps Per Cycle: 0.33
35 # BDVER2-NEXT: IPC: 0.22
36 # BDVER2-NEXT: Block RThroughput: 2.0
38 # BDWELL: Dispatch Width: 4
39 # BDWELL-NEXT: uOps Per Cycle: 0.40
40 # BDWELL-NEXT: IPC: 0.20
41 # BDWELL-NEXT: Block RThroughput: 1.0
43 # BTVER2: Dispatch Width: 2
44 # BTVER2-NEXT: uOps Per Cycle: 0.29
45 # BTVER2-NEXT: IPC: 0.29
46 # BTVER2-NEXT: Block RThroughput: 1.0
48 # HASWELL: Dispatch Width: 4
49 # HASWELL-NEXT: uOps Per Cycle: 0.40
50 # HASWELL-NEXT: IPC: 0.20
51 # HASWELL-NEXT: Block RThroughput: 1.0
53 # SKYLAKE: Dispatch Width: 6
54 # SKYLAKE-NEXT: uOps Per Cycle: 0.40
55 # SKYLAKE-NEXT: IPC: 0.20
56 # SKYLAKE-NEXT: Block RThroughput: 0.7
58 # ZNVER1: Dispatch Width: 4
59 # ZNVER1-NEXT: uOps Per Cycle: 0.38
60 # ZNVER1-NEXT: IPC: 0.25
61 # ZNVER1-NEXT: Block RThroughput: 0.8
63 # ALL: Instruction Info:
64 # ALL-NEXT: [1]: #uOps
65 # ALL-NEXT: [2]: Latency
66 # ALL-NEXT: [3]: RThroughput
67 # ALL-NEXT: [4]: MayLoad
68 # ALL-NEXT: [5]: MayStore
69 # ALL-NEXT: [6]: HasSideEffects (U)
71 # ALL: [1] [2] [3] [4] [5] [6] Instructions:
73 # BDVER2-NEXT: 1 1 1.00 addl %edi, %esi
74 # BDVER2-NEXT: 2 6 1.50 * bextrl %esi, (%rdi), %eax
76 # BDWELL-NEXT: 1 1 0.25 addl %edi, %esi
77 # BDWELL-NEXT: 3 7 0.50 * bextrl %esi, (%rdi), %eax
79 # BTVER2-NEXT: 1 1 0.50 addl %edi, %esi
80 # BTVER2-NEXT: 1 4 1.00 * bextrl %esi, (%rdi), %eax
82 # HASWELL-NEXT: 1 1 0.25 addl %edi, %esi
83 # HASWELL-NEXT: 3 7 0.50 * bextrl %esi, (%rdi), %eax
85 # SKYLAKE-NEXT: 1 1 0.25 addl %edi, %esi
86 # SKYLAKE-NEXT: 3 7 0.50 * bextrl %esi, (%rdi), %eax
88 # ZNVER1-NEXT: 1 1 0.25 addl %edi, %esi
89 # ZNVER1-NEXT: 2 5 0.50 * bextrl %esi, (%rdi), %eax
93 # BDVER2-NEXT: Index 012345678
94 # BDWELL-NEXT: Index 0123456789
95 # BTVER2-NEXT: Index 0123456
96 # HASWELL-NEXT: Index 0123456789
97 # SKYLAKE-NEXT: Index 0123456789
98 # ZNVER1-NEXT: Index 01234567
100 # BDVER2: [0,0] DeER . . addl %edi, %esi
101 # BDVER2-NEXT: [0,1] DeeeeeeER bextrl %esi, (%rdi), %eax
103 # BDWELL: [0,0] DeER . . addl %edi, %esi
104 # BDWELL-NEXT: [0,1] DeeeeeeeER bextrl %esi, (%rdi), %eax
106 # BTVER2: [0,0] DeER .. addl %edi, %esi
107 # BTVER2-NEXT: [0,1] DeeeeER bextrl %esi, (%rdi), %eax
109 # HASWELL: [0,0] DeER . . addl %edi, %esi
110 # HASWELL-NEXT: [0,1] DeeeeeeeER bextrl %esi, (%rdi), %eax
112 # SKYLAKE: [0,0] DeER . . addl %edi, %esi
113 # SKYLAKE-NEXT: [0,1] DeeeeeeeER bextrl %esi, (%rdi), %eax
115 # ZNVER1: [0,0] DeER . . addl %edi, %esi
116 # ZNVER1-NEXT: [0,1] DeeeeeER bextrl %esi, (%rdi), %eax
118 # ALL: Average Wait times (based on the timeline view):
119 # ALL-NEXT: [0]: Executions
120 # ALL-NEXT: [1]: Average time spent waiting in a scheduler's queue
121 # ALL-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
122 # ALL-NEXT: [3]: Average time elapsed from WB until retire stage
124 # ALL: [0] [1] [2] [3]
125 # ALL-NEXT: 0. 1 1.0 1.0 0.0 addl %edi, %esi
126 # ALL-NEXT: 1. 1 1.0 0.0 0.0 bextrl %esi, (%rdi), %eax