Improve long vector sext/zext lowering on ARM
[oota-llvm.git] / test / Analysis / CostModel / ARM / cast.ll
1 ; RUN: opt < %s  -cost-model -analyze -mtriple=thumbv7-apple-ios6.0.0 -mcpu=cortex-a8 | FileCheck %s
2 target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32"
3 target triple = "thumbv7-apple-ios6.0.0"
4
5 define i32 @casts() {
6
7     ; -- scalars --
8   ; CHECK: cost of 1 {{.*}} sext
9   %r0 = sext i1 undef to i8
10   ; CHECK: cost of 1 {{.*}} zext
11   %r1 = zext i1 undef to i8
12   ; CHECK: cost of 1 {{.*}} sext
13   %r2 = sext i1 undef to i16
14   ; CHECK: cost of 1 {{.*}} zext
15   %r3 = zext i1 undef to i16
16   ; CHECK: cost of 1 {{.*}} sext
17   %r4 = sext i1 undef to i32
18   ; CHECK: cost of 1 {{.*}} zext
19   %r5 = zext i1 undef to i32
20   ; CHECK: cost of 1 {{.*}} sext
21   %r6 = sext i1 undef to i64
22   ; CHECK: cost of 1 {{.*}} zext
23   %r7 = zext i1 undef to i64
24   ; CHECK: cost of 0 {{.*}} trunc
25   %r8 = trunc i8 undef to i1
26   ; CHECK: cost of 1 {{.*}} sext
27   %r9 = sext i8 undef to i16
28   ; CHECK: cost of 1 {{.*}} zext
29   %r10 = zext i8 undef to i16
30   ; CHECK: cost of 1 {{.*}} sext
31   %r11 = sext i8 undef to i32
32   ; CHECK: cost of 1 {{.*}} zext
33   %r12 = zext i8 undef to i32
34   ; CHECK: cost of 1 {{.*}} sext
35   %r13 = sext i8 undef to i64
36   ; CHECK: cost of 1 {{.*}} zext
37   %r14 = zext i8 undef to i64
38   ; CHECK: cost of 0 {{.*}} trunc
39   %r15 = trunc i16 undef to i1
40   ; CHECK: cost of 0 {{.*}} trunc
41   %r16 = trunc i16 undef to i8
42   ; CHECK: cost of 1 {{.*}} sext
43   %r17 = sext i16 undef to i32
44   ; CHECK: cost of 1 {{.*}} zext
45   %r18 = zext i16 undef to i32
46   ; CHECK: cost of 2 {{.*}} sext
47   %r19 = sext i16 undef to i64
48   ; CHECK: cost of 1 {{.*}} zext
49   %r20 = zext i16 undef to i64
50   ; CHECK: cost of 0 {{.*}} trunc
51   %r21 = trunc i32 undef to i1
52   ; CHECK: cost of 0 {{.*}} trunc
53   %r22 = trunc i32 undef to i8
54   ; CHECK: cost of 0 {{.*}} trunc
55   %r23 = trunc i32 undef to i16
56   ; CHECK: cost of 1 {{.*}} sext
57   %r24 = sext i32 undef to i64
58   ; CHECK: cost of 1 {{.*}} zext
59   %r25 = zext i32 undef to i64
60   ; CHECK: cost of 0 {{.*}} trunc
61   %r26 = trunc i64 undef to i1
62   ; CHECK: cost of 0 {{.*}} trunc
63   %r27 = trunc i64 undef to i8
64   ; CHECK: cost of 0 {{.*}} trunc
65   %r28 = trunc i64 undef to i16
66   ; CHECK: cost of 0 {{.*}} trunc
67   %r29 = trunc i64 undef to i32
68
69     ; -- floating point conversions --
70   ; Moves between scalar and NEON registers.
71   ; CHECK: cost of 2 {{.*}} fptoui
72   %r30 = fptoui float undef to i1
73   ; CHECK: cost of 2 {{.*}} fptosi
74   %r31 = fptosi float undef to i1
75   ; CHECK: cost of 2 {{.*}} fptoui
76   %r32 = fptoui float undef to i8
77   ; CHECK: cost of 2 {{.*}} fptosi
78   %r33 = fptosi float undef to i8
79   ; CHECK: cost of 2 {{.*}} fptoui
80   %r34 = fptoui float undef to i16
81   ; CHECK: cost of 2 {{.*}} fptosi
82   %r35 = fptosi float undef to i16
83   ; CHECK: cost of 2 {{.*}} fptoui
84   %r36 = fptoui float undef to i32
85   ; CHECK: cost of 2 {{.*}} fptosi
86   %r37 = fptosi float undef to i32
87   ; CHECK: cost of 10 {{.*}} fptoui
88   %r38 = fptoui float undef to i64
89   ; CHECK: cost of 10 {{.*}} fptosi
90   %r39 = fptosi float undef to i64
91   ; CHECK: cost of 2 {{.*}} fptoui
92   %r40 = fptoui double undef to i1
93   ; CHECK: cost of 2 {{.*}} fptosi
94   %r41 = fptosi double undef to i1
95   ; CHECK: cost of 2 {{.*}} fptoui
96   %r42 = fptoui double undef to i8
97   ; CHECK: cost of 2 {{.*}} fptosi
98   %r43 = fptosi double undef to i8
99   ; CHECK: cost of 2 {{.*}} fptoui
100   %r44 = fptoui double undef to i16
101   ; CHECK: cost of 2 {{.*}} fptosi
102   %r45 = fptosi double undef to i16
103   ; CHECK: cost of 2 {{.*}} fptoui
104   %r46 = fptoui double undef to i32
105   ; CHECK: cost of 2 {{.*}} fptosi
106   %r47 = fptosi double undef to i32
107   ; Function call
108   ; CHECK: cost of 10 {{.*}} fptoui
109   %r48 = fptoui double undef to i64
110   ; CHECK: cost of 10 {{.*}} fptosi
111   %r49 = fptosi double undef to i64
112
113   ; CHECK: cost of 2 {{.*}} sitofp
114   %r50 = sitofp i1 undef to float
115   ; CHECK: cost of 2 {{.*}} uitofp
116   %r51 = uitofp i1 undef to float
117   ; CHECK: cost of 2 {{.*}} sitofp
118   %r52 = sitofp i1 undef to double
119   ; CHECK: cost of 2 {{.*}} uitofp
120   %r53 = uitofp i1 undef to double
121   ; CHECK: cost of 2 {{.*}} sitofp
122   %r54 = sitofp i8 undef to float
123   ; CHECK: cost of 2 {{.*}} uitofp
124   %r55 = uitofp i8 undef to float
125   ; CHECK: cost of 2 {{.*}} sitofp
126   %r56 = sitofp i8 undef to double
127   ; CHECK: cost of 2 {{.*}} uitofp
128   %r57 = uitofp i8 undef to double
129   ; CHECK: cost of 2 {{.*}} sitofp
130   %r58 = sitofp i16 undef to float
131   ; CHECK: cost of 2 {{.*}} uitofp
132   %r59 = uitofp i16 undef to float
133   ; CHECK: cost of 2 {{.*}} sitofp
134   %r60 = sitofp i16 undef to double
135   ; CHECK: cost of 2 {{.*}} uitofp
136   %r61 = uitofp i16 undef to double
137   ; CHECK: cost of 2 {{.*}} sitofp
138   %r62 = sitofp i32 undef to float
139   ; CHECK: cost of 2 {{.*}} uitofp
140   %r63 = uitofp i32 undef to float
141   ; CHECK: cost of 2 {{.*}} sitofp
142   %r64 = sitofp i32 undef to double
143   ; CHECK: cost of 2 {{.*}} uitofp
144   %r65 = uitofp i32 undef to double
145   ; Function call
146   ; CHECK: cost of 10 {{.*}} sitofp
147   %r66 = sitofp i64 undef to float
148   ; CHECK: cost of 10 {{.*}} uitofp
149   %r67 = uitofp i64 undef to float
150   ; CHECK: cost of 10 {{.*}} sitofp
151   %r68 = sitofp i64 undef to double
152   ; CHECK: cost of 10 {{.*}} uitofp
153   %r69 = uitofp i64 undef to double
154
155   ; CHECK: cost of 3 {{.*}} sext
156   %r70 = sext <8 x i8> undef to <8 x i32>
157   ; CHECK: cost of 6 {{.*}} sext
158   %r71 = sext <16 x i8> undef to <16 x i32>
159   ; CHECK: cost of 3 {{.*}} zext
160   %r72 = zext <8 x i8> undef to <8 x i32>
161   ; CHECK: cost of 6 {{.*}} zext
162   %r73 = zext <16 x i8> undef to <16 x i32>
163
164   ; CHECK: cost of 7 {{.*}} sext
165   %rext_0 = sext <8 x i8> undef to <8 x i64>
166   ; CHECK: cost of 7 {{.*}} zext
167   %rext_1 = zext <8 x i8> undef to <8 x i64>
168   ; CHECK: cost of 6 {{.*}} sext
169   %rext_2 = sext <8 x i16> undef to <8 x i64>
170   ; CHECK: cost of 6 {{.*}} zext
171   %rext_3 = zext <8 x i16> undef to <8 x i64>
172   ; CHECK: cost of 3 {{.*}} sext
173   %rext_4 = sext <4 x i16> undef to <4 x i64>
174   ; CHECK: cost of 3 {{.*}} zext
175   %rext_5 = zext <4 x i16> undef to <4 x i64>
176
177   ; Vector cast cost of instructions lowering the cast to the stack.
178   ; CHECK: cost of 19 {{.*}} trunc
179   %r74 = trunc <8 x i32> undef to <8 x i8>
180   ; CHECK: cost of 38 {{.*}} trunc
181   %r75 = trunc <16 x i32> undef to <16 x i8>
182
183   ; Floating point truncation costs.
184   ; CHECK: cost of 1 {{.*}} fptrunc double
185   %r80 = fptrunc double undef to float
186   ; CHECK: cost of 2 {{.*}} fptrunc <2 x double
187   %r81 = fptrunc <2 x double> undef to <2 x float>
188   ; CHECK: cost of 4 {{.*}} fptrunc <4 x double
189   %r82 = fptrunc <4 x double> undef to <4 x float>
190   ; CHECK: cost of 8 {{.*}} fptrunc <8 x double
191   %r83 = fptrunc <8 x double> undef to <8 x float>
192   ; CHECK: cost of 16 {{.*}} fptrunc <16 x double
193   %r84 = fptrunc <16 x double> undef to <16 x float>
194
195   ; Floating point extension costs.
196   ; CHECK: cost of 1 {{.*}} fpext float
197   %r85 = fpext float undef to double
198   ; CHECK: cost of 2 {{.*}} fpext <2 x float
199   %r86 = fpext <2 x float> undef to <2 x double>
200   ; CHECK: cost of 4 {{.*}} fpext <4 x float
201   %r87 = fpext <4 x float> undef to <4 x double>
202   ; CHECK: cost of 8 {{.*}} fpext <8 x float
203   %r88 = fpext <8 x float> undef to <8 x double>
204   ; CHECK: cost of 16 {{.*}} fpext <16 x float
205   %r89 = fpext <16 x float> undef to <16 x double>
206
207   ;; Floating point to integer vector casts.
208   ; CHECK: cost of 1 {{.*}} fptoui
209   %r90 = fptoui <2 x float> undef to <2 x i1>
210   ; CHECK: cost of 1 {{.*}} fptosi
211   %r91 = fptosi <2 x float> undef to <2 x i1>
212   ; CHECK: cost of 1 {{.*}} fptoui
213   %r92 = fptoui <2 x float> undef to <2 x i8>
214   ; CHECK: cost of 1 {{.*}} fptosi
215   %r93 = fptosi <2 x float> undef to <2 x i8>
216   ; CHECK: cost of 1 {{.*}} fptoui
217   %r94 = fptoui <2 x float> undef to <2 x i16>
218   ; CHECK: cost of 1 {{.*}} fptosi
219   %r95 = fptosi <2 x float> undef to <2 x i16>
220   ; CHECK: cost of 1 {{.*}} fptoui
221   %r96 = fptoui <2 x float> undef to <2 x i32>
222   ; CHECK: cost of 1 {{.*}} fptosi
223   %r97 = fptosi <2 x float> undef to <2 x i32>
224   ; CHECK: cost of 24 {{.*}} fptoui
225   %r98 = fptoui <2 x float> undef to <2 x i64>
226   ; CHECK: cost of 24 {{.*}} fptosi
227   %r99 = fptosi <2 x float> undef to <2 x i64>
228
229   ; CHECK: cost of 8 {{.*}} fptoui
230   %r100 = fptoui <2 x double> undef to <2 x i1>
231   ; CHECK: cost of 8 {{.*}} fptosi
232   %r101 = fptosi <2 x double> undef to <2 x i1>
233   ; CHECK: cost of 8 {{.*}} fptoui
234   %r102 = fptoui <2 x double> undef to <2 x i8>
235   ; CHECK: cost of 8 {{.*}} fptosi
236   %r103 = fptosi <2 x double> undef to <2 x i8>
237   ; CHECK: cost of 8 {{.*}} fptoui
238   %r104 = fptoui <2 x double> undef to <2 x i16>
239   ; CHECK: cost of 8 {{.*}} fptosi
240   %r105 = fptosi <2 x double> undef to <2 x i16>
241   ; CHECK: cost of 2 {{.*}} fptoui
242   %r106 = fptoui <2 x double> undef to <2 x i32>
243   ; CHECK: cost of 2 {{.*}} fptosi
244   %r107 = fptosi <2 x double> undef to <2 x i32>
245   ; CHECK: cost of 24 {{.*}} fptoui
246   %r108 = fptoui <2 x double> undef to <2 x i64>
247   ; CHECK: cost of 24 {{.*}} fptosi
248   %r109 = fptosi <2 x double> undef to <2 x i64>
249
250   ; CHECK: cost of 16 {{.*}} fptoui
251   %r110 = fptoui <4 x float> undef to <4 x i1>
252   ; CHECK: cost of 16 {{.*}} fptosi
253   %r111 = fptosi <4 x float> undef to <4 x i1>
254   ; CHECK: cost of 3 {{.*}} fptoui
255   %r112 = fptoui <4 x float> undef to <4 x i8>
256   ; CHECK: cost of 3 {{.*}} fptosi
257   %r113 = fptosi <4 x float> undef to <4 x i8>
258   ; CHECK: cost of 2 {{.*}} fptoui
259   %r114 = fptoui <4 x float> undef to <4 x i16>
260   ; CHECK: cost of 2 {{.*}} fptosi
261   %r115 = fptosi <4 x float> undef to <4 x i16>
262   ; CHECK: cost of 1 {{.*}} fptoui
263   %r116 = fptoui <4 x float> undef to <4 x i32>
264   ; CHECK: cost of 1 {{.*}} fptosi
265   %r117 = fptosi <4 x float> undef to <4 x i32>
266   ; CHECK: cost of 48 {{.*}} fptoui
267   %r118 = fptoui <4 x float> undef to <4 x i64>
268   ; CHECK: cost of 48 {{.*}} fptosi
269   %r119 = fptosi <4 x float> undef to <4 x i64>
270
271   ; CHECK: cost of 16 {{.*}} fptoui
272   %r120 = fptoui <4 x double> undef to <4 x i1>
273   ; CHECK: cost of 16 {{.*}} fptosi
274   %r121 = fptosi <4 x double> undef to <4 x i1>
275   ; CHECK: cost of 16 {{.*}} fptoui
276   %r122 = fptoui <4 x double> undef to <4 x i8>
277   ; CHECK: cost of 16 {{.*}} fptosi
278   %r123 = fptosi <4 x double> undef to <4 x i8>
279   ; CHECK: cost of 16 {{.*}} fptoui
280   %r124 = fptoui <4 x double> undef to <4 x i16>
281   ; CHECK: cost of 16 {{.*}} fptosi
282   %r125 = fptosi <4 x double> undef to <4 x i16>
283   ; CHECK: cost of 16 {{.*}} fptoui
284   %r126 = fptoui <4 x double> undef to <4 x i32>
285   ; CHECK: cost of 16 {{.*}} fptosi
286   %r127 = fptosi <4 x double> undef to <4 x i32>
287   ; CHECK: cost of 48 {{.*}} fptoui
288   %r128 = fptoui <4 x double> undef to <4 x i64>
289   ; CHECK: cost of 48 {{.*}} fptosi
290   %r129 = fptosi <4 x double> undef to <4 x i64>
291
292   ; CHECK: cost of 32 {{.*}} fptoui
293   %r130 = fptoui <8 x float> undef to <8 x i1>
294   ; CHECK: cost of 32 {{.*}} fptosi
295   %r131 = fptosi <8 x float> undef to <8 x i1>
296   ; CHECK: cost of 32 {{.*}} fptoui
297   %r132 = fptoui <8 x float> undef to <8 x i8>
298   ; CHECK: cost of 32 {{.*}} fptosi
299   %r133 = fptosi <8 x float> undef to <8 x i8>
300   ; CHECK: cost of 4 {{.*}} fptoui
301   %r134 = fptoui <8 x float> undef to <8 x i16>
302   ; CHECK: cost of 4 {{.*}} fptosi
303   %r135 = fptosi <8 x float> undef to <8 x i16>
304   ; CHECK: cost of 2 {{.*}} fptoui
305   %r136 = fptoui <8 x float> undef to <8 x i32>
306   ; CHECK: cost of 2 {{.*}} fptosi
307   %r137 = fptosi <8 x float> undef to <8 x i32>
308   ; CHECK: cost of 96 {{.*}} fptoui
309   %r138 = fptoui <8 x float> undef to <8 x i64>
310   ; CHECK: cost of 96 {{.*}} fptosi
311   %r139 = fptosi <8 x float> undef to <8 x i64>
312
313   ; CHECK: cost of 32 {{.*}} fptoui
314   %r140 = fptoui <8 x double> undef to <8 x i1>
315   ; CHECK: cost of 32 {{.*}} fptosi
316   %r141 = fptosi <8 x double> undef to <8 x i1>
317   ; CHECK: cost of 32 {{.*}} fptoui
318   %r142 = fptoui <8 x double> undef to <8 x i8>
319   ; CHECK: cost of 32 {{.*}} fptosi
320   %r143 = fptosi <8 x double> undef to <8 x i8>
321   ; CHECK: cost of 32 {{.*}} fptoui
322   %r144 = fptoui <8 x double> undef to <8 x i16>
323   ; CHECK: cost of 32 {{.*}} fptosi
324   %r145 = fptosi <8 x double> undef to <8 x i16>
325   ; CHECK: cost of 32 {{.*}} fptoui
326   %r146 = fptoui <8 x double> undef to <8 x i32>
327   ; CHECK: cost of 32 {{.*}} fptosi
328   %r147 = fptosi <8 x double> undef to <8 x i32>
329   ; CHECK: cost of 96 {{.*}} fptoui
330   %r148 = fptoui <8 x double> undef to <8 x i64>
331   ; CHECK: cost of 96 {{.*}} fptosi
332   %r149 = fptosi <8 x double> undef to <8 x i64>
333
334   ; CHECK: cost of 64 {{.*}} fptoui
335   %r150 = fptoui <16 x float> undef to <16 x i1>
336   ; CHECK: cost of 64 {{.*}} fptosi
337   %r151 = fptosi <16 x float> undef to <16 x i1>
338   ; CHECK: cost of 64 {{.*}} fptoui
339   %r152 = fptoui <16 x float> undef to <16 x i8>
340   ; CHECK: cost of 64 {{.*}} fptosi
341   %r153 = fptosi <16 x float> undef to <16 x i8>
342   ; CHECK: cost of 8 {{.*}} fptoui
343   %r154 = fptoui <16 x float> undef to <16 x i16>
344   ; CHECK: cost of 8 {{.*}} fptosi
345   %r155 = fptosi <16 x float> undef to <16 x i16>
346   ; CHECK: cost of 4 {{.*}} fptoui
347   %r156 = fptoui <16 x float> undef to <16 x i32>
348   ; CHECK: cost of 4 {{.*}} fptosi
349   %r157 = fptosi <16 x float> undef to <16 x i32>
350   ; CHECK: cost of 192 {{.*}} fptoui
351   %r158 = fptoui <16 x float> undef to <16 x i64>
352   ; CHECK: cost of 192 {{.*}} fptosi
353   %r159 = fptosi <16 x float> undef to <16 x i64>
354
355   ; CHECK: cost of 64 {{.*}} fptoui
356   %r160 = fptoui <16 x double> undef to <16 x i1>
357   ; CHECK: cost of 64 {{.*}} fptosi
358   %r161 = fptosi <16 x double> undef to <16 x i1>
359   ; CHECK: cost of 64 {{.*}} fptoui
360   %r162 = fptoui <16 x double> undef to <16 x i8>
361   ; CHECK: cost of 64 {{.*}} fptosi
362   %r163 = fptosi <16 x double> undef to <16 x i8>
363   ; CHECK: cost of 64 {{.*}} fptoui
364   %r164 = fptoui <16 x double> undef to <16 x i16>
365   ; CHECK: cost of 64 {{.*}} fptosi
366   %r165 = fptosi <16 x double> undef to <16 x i16>
367   ; CHECK: cost of 64 {{.*}} fptoui
368   %r166 = fptoui <16 x double> undef to <16 x i32>
369   ; CHECK: cost of 64 {{.*}} fptosi
370   %r167 = fptosi <16 x double> undef to <16 x i32>
371   ; CHECK: cost of 192 {{.*}} fptoui
372   %r168 = fptoui <16 x double> undef to <16 x i64>
373   ; CHECK: cost of 192 {{.*}} fptosi
374   %r169 = fptosi <16 x double> undef to <16 x i64>
375
376   ; CHECK: cost of 8 {{.*}} uitofp
377   %r170 = uitofp <2 x i1> undef to <2 x float>
378   ; CHECK: cost of 8 {{.*}} sitofp
379   %r171 = sitofp <2 x i1> undef to <2 x float>
380   ; CHECK: cost of 3 {{.*}} uitofp
381   %r172 = uitofp <2 x i8> undef to <2 x float>
382   ; CHECK: cost of 3 {{.*}} sitofp
383   %r173 = sitofp <2 x i8> undef to <2 x float>
384   ; CHECK: cost of 2 {{.*}} uitofp
385   %r174 = uitofp <2 x i16> undef to <2 x float>
386   ; CHECK: cost of 2 {{.*}} sitofp
387   %r175 = sitofp <2 x i16> undef to <2 x float>
388   ; CHECK: cost of 1 {{.*}} uitofp
389   %r176 = uitofp <2 x i32> undef to <2 x float>
390   ; CHECK: cost of 1 {{.*}} sitofp
391   %r177 = sitofp <2 x i32> undef to <2 x float>
392   ; CHECK: cost of 24 {{.*}} uitofp
393   %r178 = uitofp <2 x i64> undef to <2 x float>
394   ; CHECK: cost of 24 {{.*}} sitofp
395   %r179 = sitofp <2 x i64> undef to <2 x float>
396
397   ; CHECK: cost of 8 {{.*}} uitofp
398   %r180 = uitofp <2 x i1> undef to <2 x double>
399   ; CHECK: cost of 8 {{.*}} sitofp
400   %r181 = sitofp <2 x i1> undef to <2 x double>
401   ; CHECK: cost of 4 {{.*}} uitofp
402   %r182 = uitofp <2 x i8> undef to <2 x double>
403   ; CHECK: cost of 4 {{.*}} sitofp
404   %r183 = sitofp <2 x i8> undef to <2 x double>
405   ; CHECK: cost of 3 {{.*}} uitofp
406   %r184 = uitofp <2 x i16> undef to <2 x double>
407   ; CHECK: cost of 3 {{.*}} sitofp
408   %r185 = sitofp <2 x i16> undef to <2 x double>
409   ; CHECK: cost of 2 {{.*}} uitofp
410   %r186 = uitofp <2 x i32> undef to <2 x double>
411   ; CHECK: cost of 2 {{.*}} sitofp
412   %r187 = sitofp <2 x i32> undef to <2 x double>
413   ; CHECK: cost of 24 {{.*}} uitofp
414   %r188 = uitofp <2 x i64> undef to <2 x double>
415   ; CHECK: cost of 24 {{.*}} sitofp
416   %r189 = sitofp <2 x i64> undef to <2 x double>
417
418   ; CHECK: cost of 3 {{.*}} uitofp
419   %r190 = uitofp <4 x i1> undef to <4 x float>
420   ; CHECK: cost of 3 {{.*}} sitofp
421   %r191 = sitofp <4 x i1> undef to <4 x float>
422   ; CHECK: cost of 3 {{.*}} uitofp
423   %r192 = uitofp <4 x i8> undef to <4 x float>
424   ; CHECK: cost of 3 {{.*}} sitofp
425   %r193 = sitofp <4 x i8> undef to <4 x float>
426   ; CHECK: cost of 2 {{.*}} uitofp
427   %r194 = uitofp <4 x i16> undef to <4 x float>
428   ; CHECK: cost of 2 {{.*}} sitofp
429   %r195 = sitofp <4 x i16> undef to <4 x float>
430   ; CHECK: cost of 1 {{.*}} uitofp
431   %r196 = uitofp <4 x i32> undef to <4 x float>
432   ; CHECK: cost of 1 {{.*}} sitofp
433   %r197 = sitofp <4 x i32> undef to <4 x float>
434   ; CHECK: cost of 48 {{.*}} uitofp
435   %r198 = uitofp <4 x i64> undef to <4 x float>
436   ; CHECK: cost of 48 {{.*}} sitofp
437   %r199 = sitofp <4 x i64> undef to <4 x float>
438
439   ; CHECK: cost of 16 {{.*}} uitofp
440   %r200 = uitofp <4 x i1> undef to <4 x double>
441   ; CHECK: cost of 16 {{.*}} sitofp
442   %r201 = sitofp <4 x i1> undef to <4 x double>
443   ; CHECK: cost of 16 {{.*}} uitofp
444   %r202 = uitofp <4 x i8> undef to <4 x double>
445   ; CHECK: cost of 16 {{.*}} sitofp
446   %r203 = sitofp <4 x i8> undef to <4 x double>
447   ; CHECK: cost of 16 {{.*}} uitofp
448   %r204 = uitofp <4 x i16> undef to <4 x double>
449   ; CHECK: cost of 16 {{.*}} sitofp
450   %r205 = sitofp <4 x i16> undef to <4 x double>
451   ; CHECK: cost of 16 {{.*}} uitofp
452   %r206 = uitofp <4 x i32> undef to <4 x double>
453   ; CHECK: cost of 16 {{.*}} sitofp
454   %r207 = sitofp <4 x i32> undef to <4 x double>
455   ; CHECK: cost of 48 {{.*}} uitofp
456   %r208 = uitofp <4 x i64> undef to <4 x double>
457   ; CHECK: cost of 48 {{.*}} sitofp
458   %r209 = sitofp <4 x i64> undef to <4 x double>
459
460   ; CHECK: cost of 32 {{.*}} uitofp
461   %r210 = uitofp <8 x i1> undef to <8 x float>
462   ; CHECK: cost of 32 {{.*}} sitofp
463   %r211 = sitofp <8 x i1> undef to <8 x float>
464   ; CHECK: cost of 32 {{.*}} uitofp
465   %r212 = uitofp <8 x i8> undef to <8 x float>
466   ; CHECK: cost of 32 {{.*}} sitofp
467   %r213 = sitofp <8 x i8> undef to <8 x float>
468   ; CHECK: cost of 4 {{.*}} uitofp
469   %r214 = uitofp <8 x i16> undef to <8 x float>
470   ; CHECK: cost of 4 {{.*}} sitofp
471   %r215 = sitofp <8 x i16> undef to <8 x float>
472   ; CHECK: cost of 2 {{.*}} uitofp
473   %r216 = uitofp <8 x i32> undef to <8 x float>
474   ; CHECK: cost of 2 {{.*}} sitofp
475   %r217 = sitofp <8 x i32> undef to <8 x float>
476   ; CHECK: cost of 96 {{.*}} uitofp
477   %r218 = uitofp <8 x i64> undef to <8 x float>
478   ; CHECK: cost of 96 {{.*}} sitofp
479   %r219 = sitofp <8 x i64> undef to <8 x float>
480
481   ; CHECK: cost of 32 {{.*}} uitofp
482   %r220 = uitofp <8 x i1> undef to <8 x double>
483   ; CHECK: cost of 32 {{.*}} sitofp
484   %r221 = sitofp <8 x i1> undef to <8 x double>
485   ; CHECK: cost of 32 {{.*}} uitofp
486   %r222 = uitofp <8 x i8> undef to <8 x double>
487   ; CHECK: cost of 32 {{.*}} sitofp
488   %r223 = sitofp <8 x i8> undef to <8 x double>
489   ; CHECK: cost of 32 {{.*}} uitofp
490   %r224 = uitofp <8 x i16> undef to <8 x double>
491   ; CHECK: cost of 32 {{.*}} sitofp
492   %r225 = sitofp <8 x i16> undef to <8 x double>
493   ; CHECK: cost of 32 {{.*}} uitofp
494   %r226 = uitofp <8 x i16> undef to <8 x double>
495   ; CHECK: cost of 32 {{.*}} sitofp
496   %r227 = sitofp <8 x i16> undef to <8 x double>
497   ; CHECK: cost of 96 {{.*}} uitofp
498   %r228 = uitofp <8 x i64> undef to <8 x double>
499   ; CHECK: cost of 96 {{.*}} sitofp
500   %r229 = sitofp <8 x i64> undef to <8 x double>
501
502   ; CHECK: cost of 64 {{.*}} uitofp
503   %r230 = uitofp <16 x i1> undef to <16 x float>
504   ; CHECK: cost of 64 {{.*}} sitofp
505   %r231 = sitofp <16 x i1> undef to <16 x float>
506   ; CHECK: cost of 64 {{.*}} uitofp
507   %r232 = uitofp <16 x i8> undef to <16 x float>
508   ; CHECK: cost of 64 {{.*}} sitofp
509   %r233 = sitofp <16 x i8> undef to <16 x float>
510   ; CHECK: cost of 8 {{.*}} uitofp
511   %r234 = uitofp <16 x i16> undef to <16 x float>
512   ; CHECK: cost of 8 {{.*}} sitofp
513   %r235 = sitofp <16 x i16> undef to <16 x float>
514   ; CHECK: cost of 4 {{.*}} uitofp
515   %r236 = uitofp <16 x i32> undef to <16 x float>
516   ; CHECK: cost of 4 {{.*}} sitofp
517   %r237 = sitofp <16 x i32> undef to <16 x float>
518   ; CHECK: cost of 192 {{.*}} uitofp
519   %r238 = uitofp <16 x i64> undef to <16 x float>
520   ; CHECK: cost of 192 {{.*}} sitofp
521   %r239 = sitofp <16 x i64> undef to <16 x float>
522
523   ; CHECK: cost of 64 {{.*}} uitofp
524   %r240 = uitofp <16 x i1> undef to <16 x double>
525   ; CHECK: cost of 64 {{.*}} sitofp
526   %r241 = sitofp <16 x i1> undef to <16 x double>
527   ; CHECK: cost of 64 {{.*}} uitofp
528   %r242 = uitofp <16 x i8> undef to <16 x double>
529   ; CHECK: cost of 64 {{.*}} sitofp
530   %r243 = sitofp <16 x i8> undef to <16 x double>
531   ; C4ECK: cost of 64 {{.*}} uitofp
532   %r244 = uitofp <16 x i16> undef to <16 x double>
533   ; CHECK: cost of 64 {{.*}} sitofp
534   %r245 = sitofp <16 x i16> undef to <16 x double>
535   ; CHECK: cost of 64 {{.*}} uitofp
536   %r246 = uitofp <16 x i16> undef to <16 x double>
537   ; CHECK: cost of 64 {{.*}} sitofp
538   %r247 = sitofp <16 x i16> undef to <16 x double>
539   ; CHECK: cost of 192 {{.*}} uitofp
540   %r248 = uitofp <16 x i64> undef to <16 x double>
541   ; CHECK: cost of 192 {{.*}} sitofp
542   %r249 = sitofp <16 x i64> undef to <16 x double>
543
544   ;CHECK: cost of 0 {{.*}} ret
545   ret i32 undef
546 }
547