[InstCombine] Signed saturation patterns
[llvm-core.git] / test / tools / llvm-mca / X86 / Barcelona / resources-3dnow.s
blob52a0968d1fdeafcb5f5630219886f41c5d119da5
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 -instruction-tables < %s | FileCheck %s
4 femms
6 pavgusb %mm0, %mm2
7 pavgusb (%rax), %mm2
9 pf2id %mm0, %mm2
10 pf2id (%rax), %mm2
12 pf2iw %mm0, %mm2
13 pf2iw (%rax), %mm2
15 pfacc %mm0, %mm2
16 pfacc (%rax), %mm2
18 pfadd %mm0, %mm2
19 pfadd (%rax), %mm2
21 pfcmpeq %mm0, %mm2
22 pfcmpeq (%rax), %mm2
24 pfcmpge %mm0, %mm2
25 pfcmpge (%rax), %mm2
27 pfcmpgt %mm0, %mm2
28 pfcmpgt (%rax), %mm2
30 pfmax %mm0, %mm2
31 pfmax (%rax), %mm2
33 pfmin %mm0, %mm2
34 pfmin (%rax), %mm2
36 pfmul %mm0, %mm2
37 pfmul (%rax), %mm2
39 pfnacc %mm0, %mm2
40 pfnacc (%rax), %mm2
42 pfpnacc %mm0, %mm2
43 pfpnacc (%rax), %mm2
45 pfrcp %mm0, %mm2
46 pfrcp (%rax), %mm2
48 pfrcpit1 %mm0, %mm2
49 pfrcpit1 (%rax), %mm2
51 pfrcpit2 %mm0, %mm2
52 pfrcpit2 (%rax), %mm2
54 pfrsqit1 %mm0, %mm2
55 pfrsqit1 (%rax), %mm2
57 pfrsqrt %mm0, %mm2
58 pfrsqrt (%rax), %mm2
60 pfsub %mm0, %mm2
61 pfsub (%rax), %mm2
63 pfsubr %mm0, %mm2
64 pfsubr (%rax), %mm2
66 pi2fd %mm0, %mm2
67 pi2fd (%rax), %mm2
69 pi2fw %mm0, %mm2
70 pi2fw (%rax), %mm2
72 pmulhrw %mm0, %mm2
73 pmulhrw (%rax), %mm2
75 prefetch (%rax)
76 prefetchw (%rax)
78 pswapd %mm0, %mm2
79 pswapd (%rax), %mm2
81 # CHECK: Instruction Info:
82 # CHECK-NEXT: [1]: #uOps
83 # CHECK-NEXT: [2]: Latency
84 # CHECK-NEXT: [3]: RThroughput
85 # CHECK-NEXT: [4]: MayLoad
86 # CHECK-NEXT: [5]: MayStore
87 # CHECK-NEXT: [6]: HasSideEffects (U)
89 # CHECK: [1] [2] [3] [4] [5] [6] Instructions:
90 # CHECK-NEXT: 31 31 10.33 * * U femms
91 # CHECK-NEXT: 1 3 1.00 pavgusb %mm0, %mm2
92 # CHECK-NEXT: 2 8 1.00 * pavgusb (%rax), %mm2
93 # CHECK-NEXT: 1 3 1.00 pf2id %mm0, %mm2
94 # CHECK-NEXT: 2 9 1.00 * pf2id (%rax), %mm2
95 # CHECK-NEXT: 1 3 1.00 pf2iw %mm0, %mm2
96 # CHECK-NEXT: 2 9 1.00 * pf2iw (%rax), %mm2
97 # CHECK-NEXT: 1 3 1.00 pfacc %mm0, %mm2
98 # CHECK-NEXT: 2 9 1.00 * pfacc (%rax), %mm2
99 # CHECK-NEXT: 1 3 1.00 pfadd %mm0, %mm2
100 # CHECK-NEXT: 2 9 1.00 * pfadd (%rax), %mm2
101 # CHECK-NEXT: 1 3 1.00 pfcmpeq %mm0, %mm2
102 # CHECK-NEXT: 2 9 1.00 * pfcmpeq (%rax), %mm2
103 # CHECK-NEXT: 1 3 1.00 pfcmpge %mm0, %mm2
104 # CHECK-NEXT: 2 9 1.00 * pfcmpge (%rax), %mm2
105 # CHECK-NEXT: 1 3 1.00 pfcmpgt %mm0, %mm2
106 # CHECK-NEXT: 2 9 1.00 * pfcmpgt (%rax), %mm2
107 # CHECK-NEXT: 1 3 1.00 pfmax %mm0, %mm2
108 # CHECK-NEXT: 2 9 1.00 * pfmax (%rax), %mm2
109 # CHECK-NEXT: 1 3 1.00 pfmin %mm0, %mm2
110 # CHECK-NEXT: 2 9 1.00 * pfmin (%rax), %mm2
111 # CHECK-NEXT: 1 3 1.00 pfmul %mm0, %mm2
112 # CHECK-NEXT: 2 9 1.00 * pfmul (%rax), %mm2
113 # CHECK-NEXT: 1 3 1.00 pfnacc %mm0, %mm2
114 # CHECK-NEXT: 2 9 1.00 * pfnacc (%rax), %mm2
115 # CHECK-NEXT: 1 3 1.00 pfpnacc %mm0, %mm2
116 # CHECK-NEXT: 2 9 1.00 * pfpnacc (%rax), %mm2
117 # CHECK-NEXT: 1 3 1.00 pfrcp %mm0, %mm2
118 # CHECK-NEXT: 2 9 1.00 * pfrcp (%rax), %mm2
119 # CHECK-NEXT: 1 3 1.00 pfrcpit1 %mm0, %mm2
120 # CHECK-NEXT: 2 9 1.00 * pfrcpit1 (%rax), %mm2
121 # CHECK-NEXT: 1 3 1.00 pfrcpit2 %mm0, %mm2
122 # CHECK-NEXT: 2 9 1.00 * pfrcpit2 (%rax), %mm2
123 # CHECK-NEXT: 1 3 1.00 pfrsqit1 %mm0, %mm2
124 # CHECK-NEXT: 2 9 1.00 * pfrsqit1 (%rax), %mm2
125 # CHECK-NEXT: 1 3 1.00 pfrsqrt %mm0, %mm2
126 # CHECK-NEXT: 2 9 1.00 * pfrsqrt (%rax), %mm2
127 # CHECK-NEXT: 1 3 1.00 pfsub %mm0, %mm2
128 # CHECK-NEXT: 2 9 1.00 * pfsub (%rax), %mm2
129 # CHECK-NEXT: 1 3 1.00 pfsubr %mm0, %mm2
130 # CHECK-NEXT: 2 9 1.00 * pfsubr (%rax), %mm2
131 # CHECK-NEXT: 1 3 1.00 pi2fd %mm0, %mm2
132 # CHECK-NEXT: 2 9 1.00 * pi2fd (%rax), %mm2
133 # CHECK-NEXT: 1 3 1.00 pi2fw %mm0, %mm2
134 # CHECK-NEXT: 2 9 1.00 * pi2fw (%rax), %mm2
135 # CHECK-NEXT: 1 5 1.00 pmulhrw %mm0, %mm2
136 # CHECK-NEXT: 2 10 1.00 * pmulhrw (%rax), %mm2
137 # CHECK-NEXT: 1 5 0.50 * * prefetch (%rax)
138 # CHECK-NEXT: 1 5 0.50 * * prefetchw (%rax)
139 # CHECK-NEXT: 1 1 1.00 pswapd %mm0, %mm2
140 # CHECK-NEXT: 2 6 1.00 * pswapd (%rax), %mm2
142 # CHECK: Resources:
143 # CHECK-NEXT: [0] - SBDivider
144 # CHECK-NEXT: [1] - SBFPDivider
145 # CHECK-NEXT: [2] - SBPort0
146 # CHECK-NEXT: [3] - SBPort1
147 # CHECK-NEXT: [4] - SBPort4
148 # CHECK-NEXT: [5] - SBPort5
149 # CHECK-NEXT: [6.0] - SBPort23
150 # CHECK-NEXT: [6.1] - SBPort23
152 # CHECK: Resource pressure per iteration:
153 # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
154 # CHECK-NEXT: - - 12.33 54.33 - 12.33 13.00 13.00
156 # CHECK: Resource pressure by instruction:
157 # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
158 # CHECK-NEXT: - - 10.33 10.33 - 10.33 - - femms
159 # CHECK-NEXT: - - - 1.00 - - - - pavgusb %mm0, %mm2
160 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pavgusb (%rax), %mm2
161 # CHECK-NEXT: - - - 1.00 - - - - pf2id %mm0, %mm2
162 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pf2id (%rax), %mm2
163 # CHECK-NEXT: - - - 1.00 - - - - pf2iw %mm0, %mm2
164 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pf2iw (%rax), %mm2
165 # CHECK-NEXT: - - - 1.00 - - - - pfacc %mm0, %mm2
166 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfacc (%rax), %mm2
167 # CHECK-NEXT: - - - 1.00 - - - - pfadd %mm0, %mm2
168 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfadd (%rax), %mm2
169 # CHECK-NEXT: - - - 1.00 - - - - pfcmpeq %mm0, %mm2
170 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfcmpeq (%rax), %mm2
171 # CHECK-NEXT: - - - 1.00 - - - - pfcmpge %mm0, %mm2
172 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfcmpge (%rax), %mm2
173 # CHECK-NEXT: - - - 1.00 - - - - pfcmpgt %mm0, %mm2
174 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfcmpgt (%rax), %mm2
175 # CHECK-NEXT: - - - 1.00 - - - - pfmax %mm0, %mm2
176 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfmax (%rax), %mm2
177 # CHECK-NEXT: - - - 1.00 - - - - pfmin %mm0, %mm2
178 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfmin (%rax), %mm2
179 # CHECK-NEXT: - - - 1.00 - - - - pfmul %mm0, %mm2
180 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfmul (%rax), %mm2
181 # CHECK-NEXT: - - - 1.00 - - - - pfnacc %mm0, %mm2
182 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfnacc (%rax), %mm2
183 # CHECK-NEXT: - - - 1.00 - - - - pfpnacc %mm0, %mm2
184 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfpnacc (%rax), %mm2
185 # CHECK-NEXT: - - - 1.00 - - - - pfrcp %mm0, %mm2
186 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfrcp (%rax), %mm2
187 # CHECK-NEXT: - - - 1.00 - - - - pfrcpit1 %mm0, %mm2
188 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfrcpit1 (%rax), %mm2
189 # CHECK-NEXT: - - - 1.00 - - - - pfrcpit2 %mm0, %mm2
190 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfrcpit2 (%rax), %mm2
191 # CHECK-NEXT: - - - 1.00 - - - - pfrsqit1 %mm0, %mm2
192 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfrsqit1 (%rax), %mm2
193 # CHECK-NEXT: - - - 1.00 - - - - pfrsqrt %mm0, %mm2
194 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfrsqrt (%rax), %mm2
195 # CHECK-NEXT: - - - 1.00 - - - - pfsub %mm0, %mm2
196 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfsub (%rax), %mm2
197 # CHECK-NEXT: - - - 1.00 - - - - pfsubr %mm0, %mm2
198 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pfsubr (%rax), %mm2
199 # CHECK-NEXT: - - - 1.00 - - - - pi2fd %mm0, %mm2
200 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pi2fd (%rax), %mm2
201 # CHECK-NEXT: - - - 1.00 - - - - pi2fw %mm0, %mm2
202 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 pi2fw (%rax), %mm2
203 # CHECK-NEXT: - - 1.00 - - - - - pmulhrw %mm0, %mm2
204 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 pmulhrw (%rax), %mm2
205 # CHECK-NEXT: - - - - - - 0.50 0.50 prefetch (%rax)
206 # CHECK-NEXT: - - - - - - 0.50 0.50 prefetchw (%rax)
207 # CHECK-NEXT: - - - - - 1.00 - - pswapd %mm0, %mm2
208 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 pswapd (%rax), %mm2