Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Analysis / CostModel / SystemZ / cmp-ext-02.ll
blobcb178eace69004bdc1ebad206714eee051e6b1b6
1 ; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -mtriple=systemz-unknown -mcpu=zEC12 | FileCheck %s
3 ; Check the cost values for older subtargets that use an IPM sequence for
4 ; extension of a compare result.
6 define i8 @fun0(i8 %val1, i8 %val2) {
7   %cmp = icmp eq i8 %val1, %val2
8   %v = sext i1 %cmp to i8
9   ret i8 %v
11 ; CHECK: fun0
12 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
13 ; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i8
16 define i16 @fun1(i8 %val1, i8 %val2) {
17   %cmp = icmp eq i8 %val1, %val2
18   %v = sext i1 %cmp to i16
19   ret i16 %v
21 ; CHECK: fun1
22 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
23 ; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i16
26 define i32 @fun2(i8 %val1, i8 %val2) {
27   %cmp = icmp eq i8 %val1, %val2
28   %v = sext i1 %cmp to i32
29   ret i32 %v
31 ; CHECK: fun2
32 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
33 ; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i32
36 define i64 @fun3(i8 %val1, i8 %val2) {
37   %cmp = icmp eq i8 %val1, %val2
38   %v = sext i1 %cmp to i64
39   ret i64 %v
41 ; CHECK: fun3
42 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
43 ; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i64
46 define i8 @fun4(i16 %val1, i16 %val2) {
47   %cmp = icmp eq i16 %val1, %val2
48   %v = sext i1 %cmp to i8
49   ret i8 %v
51 ; CHECK: fun4
52 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
53 ; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i8
56 define i16 @fun5(i16 %val1, i16 %val2) {
57   %cmp = icmp eq i16 %val1, %val2
58   %v = sext i1 %cmp to i16
59   ret i16 %v
61 ; CHECK: fun5
62 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
63 ; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i16
66 define i32 @fun6(i16 %val1, i16 %val2) {
67   %cmp = icmp eq i16 %val1, %val2
68   %v = sext i1 %cmp to i32
69   ret i32 %v
71 ; CHECK: fun6
72 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
73 ; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i32
76 define i64 @fun7(i16 %val1, i16 %val2) {
77   %cmp = icmp eq i16 %val1, %val2
78   %v = sext i1 %cmp to i64
79   ret i64 %v
81 ; CHECK: fun7
82 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
83 ; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i64
86 define i8 @fun8(i32 %val1, i32 %val2) {
87   %cmp = icmp eq i32 %val1, %val2
88   %v = sext i1 %cmp to i8
89   ret i8 %v
91 ; CHECK: fun8
92 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
93 ; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i8
96 define i16 @fun9(i32 %val1, i32 %val2) {
97   %cmp = icmp eq i32 %val1, %val2
98   %v = sext i1 %cmp to i16
99   ret i16 %v
101 ; CHECK: fun9
102 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
103 ; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i16
106 define i32 @fun10(i32 %val1, i32 %val2) {
107   %cmp = icmp eq i32 %val1, %val2
108   %v = sext i1 %cmp to i32
109   ret i32 %v
111 ; CHECK: fun10
112 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
113 ; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i32
116 define i64 @fun11(i32 %val1, i32 %val2) {
117   %cmp = icmp eq i32 %val1, %val2
118   %v = sext i1 %cmp to i64
119   ret i64 %v
121 ; CHECK: fun11
122 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
123 ; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i64
126 define i8 @fun12(i64 %val1, i64 %val2) {
127   %cmp = icmp eq i64 %val1, %val2
128   %v = sext i1 %cmp to i8
129   ret i8 %v
131 ; CHECK: fun12
132 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
133 ; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i8
136 define i16 @fun13(i64 %val1, i64 %val2) {
137   %cmp = icmp eq i64 %val1, %val2
138   %v = sext i1 %cmp to i16
139   ret i16 %v
141 ; CHECK: fun13
142 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
143 ; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i16
146 define i32 @fun14(i64 %val1, i64 %val2) {
147   %cmp = icmp eq i64 %val1, %val2
148   %v = sext i1 %cmp to i32
149   ret i32 %v
151 ; CHECK: fun14
152 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
153 ; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i32
156 define i64 @fun15(i64 %val1, i64 %val2) {
157   %cmp = icmp eq i64 %val1, %val2
158   %v = sext i1 %cmp to i64
159   ret i64 %v
161 ; CHECK: fun15
162 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
163 ; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i64
166 define i8 @fun16(float %val1, float %val2) {
167   %cmp = fcmp ogt float %val1, %val2
168   %v = sext i1 %cmp to i8
169   ret i8 %v
171 ; CHECK: fun16
172 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
173 ; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i8
176 define i16 @fun17(float %val1, float %val2) {
177   %cmp = fcmp ogt float %val1, %val2
178   %v = sext i1 %cmp to i16
179   ret i16 %v
181 ; CHECK: fun17
182 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
183 ; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i16
186 define i32 @fun18(float %val1, float %val2) {
187   %cmp = fcmp ogt float %val1, %val2
188   %v = sext i1 %cmp to i32
189   ret i32 %v
191 ; CHECK: fun18
192 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
193 ; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i32
196 define i64 @fun19(float %val1, float %val2) {
197   %cmp = fcmp ogt float %val1, %val2
198   %v = sext i1 %cmp to i64
199   ret i64 %v
201 ; CHECK: fun19
202 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
203 ; CHECK: cost of 5 for instruction:   %v = sext i1 %cmp to i64
206 define i8 @fun20(double %val1, double %val2) {
207   %cmp = fcmp ogt double %val1, %val2
208   %v = sext i1 %cmp to i8
209   ret i8 %v
211 ; CHECK: fun20
212 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
213 ; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i8
216 define i16 @fun21(double %val1, double %val2) {
217   %cmp = fcmp ogt double %val1, %val2
218   %v = sext i1 %cmp to i16
219   ret i16 %v
221 ; CHECK: fun21
222 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
223 ; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i16
226 define i32 @fun22(double %val1, double %val2) {
227   %cmp = fcmp ogt double %val1, %val2
228   %v = sext i1 %cmp to i32
229   ret i32 %v
231 ; CHECK: fun22
232 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
233 ; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i32
236 define i64 @fun23(double %val1, double %val2) {
237   %cmp = fcmp ogt double %val1, %val2
238   %v = sext i1 %cmp to i64
239   ret i64 %v
241 ; CHECK: fun23
242 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
243 ; CHECK: cost of 5 for instruction:   %v = sext i1 %cmp to i64
246 define i8 @fun120(i8 %val1, i8 %val2) {
247   %cmp = icmp eq i8 %val1, %val2
248   %v = zext i1 %cmp to i8
249   ret i8 %v
251 ; CHECK: fun120
252 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
253 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i8
256 define i16 @fun121(i8 %val1, i8 %val2) {
257   %cmp = icmp eq i8 %val1, %val2
258   %v = zext i1 %cmp to i16
259   ret i16 %v
261 ; CHECK: fun121
262 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
263 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i16
266 define i32 @fun122(i8 %val1, i8 %val2) {
267   %cmp = icmp eq i8 %val1, %val2
268   %v = zext i1 %cmp to i32
269   ret i32 %v
271 ; CHECK: fun122
272 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
273 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i32
276 define i64 @fun123(i8 %val1, i8 %val2) {
277   %cmp = icmp eq i8 %val1, %val2
278   %v = zext i1 %cmp to i64
279   ret i64 %v
281 ; CHECK: fun123
282 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
283 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i64
286 define i8 @fun124(i16 %val1, i16 %val2) {
287   %cmp = icmp eq i16 %val1, %val2
288   %v = zext i1 %cmp to i8
289   ret i8 %v
291 ; CHECK: fun124
292 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
293 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i8
296 define i16 @fun125(i16 %val1, i16 %val2) {
297   %cmp = icmp eq i16 %val1, %val2
298   %v = zext i1 %cmp to i16
299   ret i16 %v
301 ; CHECK: fun125
302 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
303 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i16
306 define i32 @fun126(i16 %val1, i16 %val2) {
307   %cmp = icmp eq i16 %val1, %val2
308   %v = zext i1 %cmp to i32
309   ret i32 %v
311 ; CHECK: fun126
312 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
313 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i32
316 define i64 @fun127(i16 %val1, i16 %val2) {
317   %cmp = icmp eq i16 %val1, %val2
318   %v = zext i1 %cmp to i64
319   ret i64 %v
321 ; CHECK: fun127
322 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
323 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i64
326 define i8 @fun128(i32 %val1, i32 %val2) {
327   %cmp = icmp eq i32 %val1, %val2
328   %v = zext i1 %cmp to i8
329   ret i8 %v
331 ; CHECK: fun128
332 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
333 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i8
336 define i16 @fun129(i32 %val1, i32 %val2) {
337   %cmp = icmp eq i32 %val1, %val2
338   %v = zext i1 %cmp to i16
339   ret i16 %v
341 ; CHECK: fun129
342 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
343 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i16
346 define i32 @fun130(i32 %val1, i32 %val2) {
347   %cmp = icmp eq i32 %val1, %val2
348   %v = zext i1 %cmp to i32
349   ret i32 %v
351 ; CHECK: fun130
352 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
353 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i32
356 define i64 @fun131(i32 %val1, i32 %val2) {
357   %cmp = icmp eq i32 %val1, %val2
358   %v = zext i1 %cmp to i64
359   ret i64 %v
361 ; CHECK: fun131
362 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
363 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i64
366 define i8 @fun132(i64 %val1, i64 %val2) {
367   %cmp = icmp eq i64 %val1, %val2
368   %v = zext i1 %cmp to i8
369   ret i8 %v
371 ; CHECK: fun132
372 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
373 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i8
376 define i16 @fun133(i64 %val1, i64 %val2) {
377   %cmp = icmp eq i64 %val1, %val2
378   %v = zext i1 %cmp to i16
379   ret i16 %v
381 ; CHECK: fun133
382 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
383 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i16
386 define i32 @fun134(i64 %val1, i64 %val2) {
387   %cmp = icmp eq i64 %val1, %val2
388   %v = zext i1 %cmp to i32
389   ret i32 %v
391 ; CHECK: fun134
392 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
393 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i32
396 define i64 @fun135(i64 %val1, i64 %val2) {
397   %cmp = icmp eq i64 %val1, %val2
398   %v = zext i1 %cmp to i64
399   ret i64 %v
401 ; CHECK: fun135
402 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
403 ; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i64
406 define i8 @fun136(float %val1, float %val2) {
407   %cmp = fcmp ogt float %val1, %val2
408   %v = zext i1 %cmp to i8
409   ret i8 %v
411 ; CHECK: fun136
412 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
413 ; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i8
416 define i16 @fun137(float %val1, float %val2) {
417   %cmp = fcmp ogt float %val1, %val2
418   %v = zext i1 %cmp to i16
419   ret i16 %v
421 ; CHECK: fun137
422 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
423 ; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i16
426 define i32 @fun138(float %val1, float %val2) {
427   %cmp = fcmp ogt float %val1, %val2
428   %v = zext i1 %cmp to i32
429   ret i32 %v
431 ; CHECK: fun138
432 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
433 ; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i32
436 define i64 @fun139(float %val1, float %val2) {
437   %cmp = fcmp ogt float %val1, %val2
438   %v = zext i1 %cmp to i64
439   ret i64 %v
441 ; CHECK: fun139
442 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
443 ; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i64
446 define i8 @fun140(double %val1, double %val2) {
447   %cmp = fcmp ogt double %val1, %val2
448   %v = zext i1 %cmp to i8
449   ret i8 %v
451 ; CHECK: fun140
452 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
453 ; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i8
456 define i16 @fun141(double %val1, double %val2) {
457   %cmp = fcmp ogt double %val1, %val2
458   %v = zext i1 %cmp to i16
459   ret i16 %v
461 ; CHECK: fun141
462 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
463 ; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i16
466 define i32 @fun142(double %val1, double %val2) {
467   %cmp = fcmp ogt double %val1, %val2
468   %v = zext i1 %cmp to i32
469   ret i32 %v
471 ; CHECK: fun142
472 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
473 ; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i32
476 define i64 @fun143(double %val1, double %val2) {
477   %cmp = fcmp ogt double %val1, %val2
478   %v = zext i1 %cmp to i64
479   ret i64 %v
481 ; CHECK: fun143
482 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
483 ; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i64