1 ; RUN: opt -mtriple=x86_64-apple-darwin -mattr=+sse2 -cost-model -analyze < %s | FileCheck --check-prefix=SSE --check-prefix=SSE2 %s
2 ; RUN: opt -mtriple=x86_64-apple-darwin -mattr=+avx -cost-model -analyze < %s | FileCheck --check-prefix=AVX --check-prefix=AVX1 %s
3 ; RUN: opt -mtriple=x86_64-apple-darwin -mattr=+avx2 -cost-model -analyze < %s | FileCheck --check-prefix=AVX --check-prefix=AVX2 %s
4 ; RUN: opt -mtriple=x86_64-apple-darwin -mattr=+avx512f -cost-model -analyze < %s | FileCheck --check-prefix=AVX512F %s
6 define <2 x double> @sitofpv2i8v2double(<2 x i8> %a) {
7 ; SSE2: sitofpv2i8v2double
8 ; SSE2: cost of 20 {{.*}} sitofp
10 ; AVX1: sitofpv2i8v2double
11 ; AVX1: cost of 4 {{.*}} sitofp
13 ; AVX2: sitofpv2i8v2double
14 ; AVX2: cost of 4 {{.*}} sitofp
16 ; AVX512F: sitofpv2i8v2double
17 ; AVX512F: cost of 4 {{.*}} sitofp
18 %1 = sitofp <2 x i8> %a to <2 x double>
22 define <4 x double> @sitofpv4i8v4double(<4 x i8> %a) {
23 ; SSE2: sitofpv4i8v4double
24 ; SSE2: cost of 40 {{.*}} sitofp
26 ; AVX1: sitofpv4i8v4double
27 ; AVX1: cost of 3 {{.*}} sitofp
29 ; AVX2: sitofpv4i8v4double
30 ; AVX2: cost of 3 {{.*}} sitofp
32 ; AVX512F: sitofpv4i8v4double
33 ; AVX512F: cost of 3 {{.*}} sitofp
34 %1 = sitofp <4 x i8> %a to <4 x double>
38 define <8 x double> @sitofpv8i8v8double(<8 x i8> %a) {
39 ; SSE2: sitofpv8i8v8double
40 ; SSE2: cost of 80 {{.*}} sitofp
42 ; AVX1: sitofpv8i8v8double
43 ; AVX1: cost of 20 {{.*}} sitofp
45 ; AVX2: sitofpv8i8v8double
46 ; AVX2: cost of 20 {{.*}} sitofp
48 ; AVX512F: sitofpv8i8v8double
49 ; AVX512F: cost of 2 {{.*}} sitofp
50 %1 = sitofp <8 x i8> %a to <8 x double>
54 define <16 x double> @sitofpv16i8v16double(<16 x i8> %a) {
55 ; SSE2: sitofpv16i8v16double
56 ; SSE2: cost of 160 {{.*}} sitofp
58 ; AVX1: sitofpv16i8v16double
59 ; AVX1: cost of 40 {{.*}} sitofp
61 ; AVX2: sitofpv16i8v16double
62 ; AVX2: cost of 40 {{.*}} sitofp
64 ; AVX512F: sitofpv16i8v16double
65 ; AVX512F: cost of 44 {{.*}} sitofp
66 %1 = sitofp <16 x i8> %a to <16 x double>
70 define <32 x double> @sitofpv32i8v32double(<32 x i8> %a) {
71 ; SSE2: sitofpv32i8v32double
72 ; SSE2: cost of 320 {{.*}} sitofp
74 ; AVX1: sitofpv32i8v32double
75 ; AVX1: cost of 80 {{.*}} sitofp
77 ; AVX2: sitofpv32i8v32double
78 ; AVX2: cost of 80 {{.*}} sitofp
80 ; AVX512F: sitofpv32i8v32double
81 ; AVX512F: cost of 88 {{.*}} sitofp
82 %1 = sitofp <32 x i8> %a to <32 x double>
86 define <2 x double> @sitofpv2i16v2double(<2 x i16> %a) {
87 ; SSE2: sitofpv2i16v2double
88 ; SSE2: cost of 20 {{.*}} sitofp
90 ; AVX1: sitofpv2i16v2double
91 ; AVX1: cost of 4 {{.*}} sitofp
93 ; AVX2: sitofpv2i16v2double
94 ; AVX2: cost of 4 {{.*}} sitofp
96 ; AVX512F: sitofpv2i16v2double
97 ; AVX512F: cost of 4 {{.*}} sitofp
98 %1 = sitofp <2 x i16> %a to <2 x double>
102 define <4 x double> @sitofpv4i16v4double(<4 x i16> %a) {
103 ; SSE2: sitofpv4i16v4double
104 ; SSE2: cost of 40 {{.*}} sitofp
106 ; AVX1: sitofpv4i16v4double
107 ; AVX1: cost of 3 {{.*}} sitofp
109 ; AVX2: sitofpv4i16v4double
110 ; AVX2: cost of 3 {{.*}} sitofp
112 ; AVX512F: sitofpv4i16v4double
113 ; AVX512F: cost of 3 {{.*}} sitofp
114 %1 = sitofp <4 x i16> %a to <4 x double>
118 define <8 x double> @sitofpv8i16v8double(<8 x i16> %a) {
119 ; SSE2: sitofpv8i16v8double
120 ; SSE2: cost of 80 {{.*}} sitofp
122 ; AVX1: sitofpv8i16v8double
123 ; AVX1: cost of 20 {{.*}} sitofp
125 ; AVX2: sitofpv8i16v8double
126 ; AVX2: cost of 20 {{.*}} sitofp
128 ; AVX512F: sitofpv8i16v8double
129 ; AVX512F: cost of 2 {{.*}} sitofp
130 %1 = sitofp <8 x i16> %a to <8 x double>
134 define <16 x double> @sitofpv16i16v16double(<16 x i16> %a) {
135 ; SSE2: sitofpv16i16v16double
136 ; SSE2: cost of 160 {{.*}} sitofp
138 ; AVX1: sitofpv16i16v16double
139 ; AVX1: cost of 40 {{.*}} sitofp
141 ; AVX2: sitofpv16i16v16double
142 ; AVX2: cost of 40 {{.*}} sitofp
144 ; AVX512F: sitofpv16i16v16double
145 ; AVX512F: cost of 44 {{.*}} sitofp
146 %1 = sitofp <16 x i16> %a to <16 x double>
150 define <32 x double> @sitofpv32i16v32double(<32 x i16> %a) {
151 ; SSE2: sitofpv32i16v32double
152 ; SSE2: cost of 320 {{.*}} sitofp
154 ; AVX1: sitofpv32i16v32double
155 ; AVX1: cost of 80 {{.*}} sitofp
157 ; AVX2: sitofpv32i16v32double
158 ; AVX2: cost of 80 {{.*}} sitofp
160 ; AVX512F: sitofpv32i16v32double
161 ; AVX512F: cost of 88 {{.*}} sitofp
162 %1 = sitofp <32 x i16> %a to <32 x double>
166 define <2 x double> @sitofpv2i32v2double(<2 x i32> %a) {
167 ; SSE2: sitofpv2i32v2double
168 ; SSE2: cost of 20 {{.*}} sitofp
170 ; AVX1: sitofpv2i32v2double
171 ; AVX1: cost of 4 {{.*}} sitofp
173 ; AVX2: sitofpv2i32v2double
174 ; AVX2: cost of 4 {{.*}} sitofp
176 ; AVX512F: sitofpv2i32v2double
177 ; AVX512F: cost of 4 {{.*}} sitofp
178 %1 = sitofp <2 x i32> %a to <2 x double>
182 define <4 x double> @sitofpv4i32v4double(<4 x i32> %a) {
183 ; SSE2: sitofpv4i32v4double
184 ; SSE2: cost of 40 {{.*}} sitofp
186 ; AVX1: sitofpv4i32v4double
187 ; AVX1: cost of 1 {{.*}} sitofp
189 ; AVX2: sitofpv4i32v4double
190 ; AVX2: cost of 1 {{.*}} sitofp
192 ; AVX512F: sitofpv4i32v4double
193 ; AVX512F: cost of 1 {{.*}} sitofp
194 %1 = sitofp <4 x i32> %a to <4 x double>
198 define <8 x double> @sitofpv8i32v8double(<8 x i32> %a) {
199 ; SSE2: sitofpv8i32v8double
200 ; SSE2: cost of 80 {{.*}} sitofp
202 ; AVX1: sitofpv8i32v8double
203 ; AVX1: cost of 20 {{.*}} sitofp
205 ; AVX2: sitofpv8i32v8double
206 ; AVX2: cost of 20 {{.*}} sitofp
208 ; AVX512F: sitofpv8i32v8double
209 ; AVX512F: cost of 1 {{.*}} sitofp
210 %1 = sitofp <8 x i32> %a to <8 x double>
214 define <16 x double> @sitofpv16i32v16double(<16 x i32> %a) {
215 ; SSE2: sitofpv16i32v16double
216 ; SSE2: cost of 160 {{.*}} sitofp
218 ; AVX1: sitofpv16i32v16double
219 ; AVX1: cost of 40 {{.*}} sitofp
221 ; AVX2: sitofpv16i32v16double
222 ; AVX2: cost of 40 {{.*}} sitofp
224 ; AVX512F: sitofpv16i32v16double
225 ; AVX512F: cost of 44 {{.*}} sitofp
226 %1 = sitofp <16 x i32> %a to <16 x double>
230 define <32 x double> @sitofpv32i32v32double(<32 x i32> %a) {
231 ; SSE2: sitofpv32i32v32double
232 ; SSE2: cost of 320 {{.*}} sitofp
234 ; AVX1: sitofpv32i32v32double
235 ; AVX1: cost of 80 {{.*}} sitofp
237 ; AVX2: sitofpv32i32v32double
238 ; AVX2: cost of 80 {{.*}} sitofp
240 ; AVX512F: sitofpv32i32v32double
241 ; AVX512F: cost of 88 {{.*}} sitofp
242 %1 = sitofp <32 x i32> %a to <32 x double>
246 define <2 x double> @sitofpv2i64v2double(<2 x i64> %a) {
247 ; SSE2: sitofpv2i64v2double
248 ; SSE2: cost of 20 {{.*}} sitofp
250 ; AVX1: sitofpv2i64v2double
251 ; AVX1: cost of 4 {{.*}} sitofp
253 ; AVX2: sitofpv2i64v2double
254 ; AVX2: cost of 4 {{.*}} sitofp
256 ; AVX512F: sitofpv2i64v2double
257 ; AVX512F: cost of 4 {{.*}} sitofp
258 %1 = sitofp <2 x i64> %a to <2 x double>
262 define <4 x double> @sitofpv4i64v4double(<4 x i64> %a) {
263 ; SSE2: sitofpv4i64v4double
264 ; SSE2: cost of 40 {{.*}} sitofp
266 ; AVX1: sitofpv4i64v4double
267 ; AVX1: cost of 10 {{.*}} sitofp
269 ; AVX2: sitofpv4i64v4double
270 ; AVX2: cost of 10 {{.*}} sitofp
272 ; AVX512F: sitofpv4i64v4double
273 ; AVX512F: cost of 10 {{.*}} sitofp
274 %1 = sitofp <4 x i64> %a to <4 x double>
278 define <8 x double> @sitofpv8i64v8double(<8 x i64> %a) {
279 ; SSE2: sitofpv8i64v8double
280 ; SSE2: cost of 80 {{.*}} sitofp
282 ; AVX1: sitofpv8i64v8double
283 ; AVX1: cost of 20 {{.*}} sitofp
285 ; AVX2: sitofpv8i64v8double
286 ; AVX2: cost of 20 {{.*}} sitofp
288 ; AVX512F: sitofpv8i64v8double
289 ; AVX512F: cost of 22 {{.*}} sitofp
290 %1 = sitofp <8 x i64> %a to <8 x double>
294 define <16 x double> @sitofpv16i64v16double(<16 x i64> %a) {
295 ; SSE2: sitofpv16i64v16double
296 ; SSE2: cost of 160 {{.*}} sitofp
298 ; AVX1: sitofpv16i64v16double
299 ; AVX1: cost of 40 {{.*}} sitofp
301 ; AVX2: sitofpv16i64v16double
302 ; AVX2: cost of 40 {{.*}} sitofp
304 ; AVX512F: sitofpv16i64v16double
305 ; AVX512F: cost of 44 {{.*}} sitofp
306 %1 = sitofp <16 x i64> %a to <16 x double>
310 define <32 x double> @sitofpv32i64v32double(<32 x i64> %a) {
311 ; SSE2: sitofpv32i64v32double
312 ; SSE2: cost of 320 {{.*}} sitofp
314 ; AVX1: sitofpv32i64v32double
315 ; AVX1: cost of 80 {{.*}} sitofp
317 ; AVX2: sitofpv32i64v32double
318 ; AVX2: cost of 80 {{.*}} sitofp
320 ; AVX512F: sitofpv32i64v32double
321 ; AVX512F: cost of 88 {{.*}} sitofp
322 %1 = sitofp <32 x i64> %a to <32 x double>
326 define <2 x float> @sitofpv2i8v2float(<2 x i8> %a) {
327 ; SSE2: sitofpv2i8v2float
328 ; SSE2: cost of 15 {{.*}} sitofp
330 ; AVX1: sitofpv2i8v2float
331 ; AVX1: cost of 4 {{.*}} sitofp
333 ; AVX2: sitofpv2i8v2float
334 ; AVX2: cost of 4 {{.*}} sitofp
336 ; AVX512F: sitofpv2i8v2float
337 ; AVX512F: cost of 4 {{.*}} sitofp
338 %1 = sitofp <2 x i8> %a to <2 x float>
342 define <4 x float> @sitofpv4i8v4float(<4 x i8> %a) {
343 ; SSE2: sitofpv4i8v4float
344 ; SSE2: cost of 15 {{.*}} sitofp
346 ; AVX1: sitofpv4i8v4float
347 ; AVX1: cost of 3 {{.*}} sitofp
349 ; AVX2: sitofpv4i8v4float
350 ; AVX2: cost of 3 {{.*}} sitofp
352 ; AVX512F: sitofpv4i8v4float
353 ; AVX512F: cost of 3 {{.*}} sitofp
354 %1 = sitofp <4 x i8> %a to <4 x float>
358 define <8 x float> @sitofpv8i8v8float(<8 x i8> %a) {
359 ; SSE2: sitofpv8i8v8float
360 ; SSE2: cost of 15 {{.*}} sitofp
362 ; AVX1: sitofpv8i8v8float
363 ; AVX1: cost of 8 {{.*}} sitofp
365 ; AVX2: sitofpv8i8v8float
366 ; AVX2: cost of 8 {{.*}} sitofp
368 ; AVX512F: sitofpv8i8v8float
369 ; AVX512F: cost of 8 {{.*}} sitofp
370 %1 = sitofp <8 x i8> %a to <8 x float>
374 define <16 x float> @sitofpv16i8v16float(<16 x i8> %a) {
375 ; SSE2: sitofpv16i8v16float
376 ; SSE2: cost of 8 {{.*}} sitofp
378 ; AVX1: sitofpv16i8v16float
379 ; AVX1: cost of 44 {{.*}} sitofp
381 ; AVX2: sitofpv16i8v16float
382 ; AVX2: cost of 44 {{.*}} sitofp
384 ; AVX512F: sitofpv16i8v16float
385 ; AVX512F: cost of 2 {{.*}} sitofp
386 %1 = sitofp <16 x i8> %a to <16 x float>
390 define <32 x float> @sitofpv32i8v32float(<32 x i8> %a) {
391 ; SSE2: sitofpv32i8v32float
392 ; SSE2: cost of 16 {{.*}} sitofp
394 ; AVX1: sitofpv32i8v32float
395 ; AVX1: cost of 88 {{.*}} sitofp
397 ; AVX2: sitofpv32i8v32float
398 ; AVX2: cost of 88 {{.*}} sitofp
400 ; AVX512F: sitofpv32i8v32float
401 ; AVX512F: cost of 92 {{.*}} sitofp
402 %1 = sitofp <32 x i8> %a to <32 x float>
406 define <2 x float> @sitofpv2i16v2float(<2 x i16> %a) {
407 ; SSE2: sitofpv2i16v2float
408 ; SSE2: cost of 15 {{.*}} sitofp
410 ; AVX1: sitofpv2i16v2float
411 ; AVX1: cost of 4 {{.*}} sitofp
413 ; AVX2: sitofpv2i16v2float
414 ; AVX2: cost of 4 {{.*}} sitofp
416 ; AVX512F: sitofpv2i16v2float
417 ; AVX512F: cost of 4 {{.*}} sitofp
418 %1 = sitofp <2 x i16> %a to <2 x float>
422 define <4 x float> @sitofpv4i16v4float(<4 x i16> %a) {
423 ; SSE2: sitofpv4i16v4float
424 ; SSE2: cost of 15 {{.*}} sitofp
426 ; AVX1: sitofpv4i16v4float
427 ; AVX1: cost of 3 {{.*}} sitofp
429 ; AVX2: sitofpv4i16v4float
430 ; AVX2: cost of 3 {{.*}} sitofp
432 ; AVX512F: sitofpv4i16v4float
433 ; AVX512F: cost of 3 {{.*}} sitofp
434 %1 = sitofp <4 x i16> %a to <4 x float>
438 define <8 x float> @sitofpv8i16v8float(<8 x i16> %a) {
439 ; SSE2: sitofpv8i16v8float
440 ; SSE2: cost of 15 {{.*}} sitofp
442 ; AVX1: sitofpv8i16v8float
443 ; AVX1: cost of 5 {{.*}} sitofp
445 ; AVX2: sitofpv8i16v8float
446 ; AVX2: cost of 5 {{.*}} sitofp
448 ; AVX512F: sitofpv8i16v8float
449 ; AVX512F: cost of 5 {{.*}} sitofp
450 %1 = sitofp <8 x i16> %a to <8 x float>
454 define <16 x float> @sitofpv16i16v16float(<16 x i16> %a) {
455 ; SSE2: sitofpv16i16v16float
456 ; SSE2: cost of 30 {{.*}} sitofp
458 ; AVX1: sitofpv16i16v16float
459 ; AVX1: cost of 44 {{.*}} sitofp
461 ; AVX2: sitofpv16i16v16float
462 ; AVX2: cost of 44 {{.*}} sitofp
464 ; AVX512F: sitofpv16i16v16float
465 ; AVX512F: cost of 2 {{.*}} sitofp
466 %1 = sitofp <16 x i16> %a to <16 x float>
470 define <32 x float> @sitofpv32i16v32float(<32 x i16> %a) {
471 ; SSE2: sitofpv32i16v32float
472 ; SSE2: cost of 60 {{.*}} sitofp
474 ; AVX1: sitofpv32i16v32float
475 ; AVX1: cost of 88 {{.*}} sitofp
477 ; AVX2: sitofpv32i16v32float
478 ; AVX2: cost of 88 {{.*}} sitofp
480 ; AVX512F: sitofpv32i16v32float
481 ; AVX512F: cost of 2 {{.*}} sitofp
482 %1 = sitofp <32 x i16> %a to <32 x float>
486 define <2 x float> @sitofpv2i32v2float(<2 x i32> %a) {
487 ; SSE2: sitofpv2i32v2float
488 ; SSE2: cost of 15 {{.*}} sitofp
490 ; AVX1: sitofpv2i32v2float
491 ; AVX1: cost of 4 {{.*}} sitofp
493 ; AVX2: sitofpv2i32v2float
494 ; AVX2: cost of 4 {{.*}} sitofp
496 ; AVX512F: sitofpv2i32v2float
497 ; AVX512F: cost of 4 {{.*}} sitofp
498 %1 = sitofp <2 x i32> %a to <2 x float>
502 define <4 x float> @sitofpv4i32v4float(<4 x i32> %a) {
503 ; SSE2: sitofpv4i32v4float
504 ; SSE2: cost of 15 {{.*}} sitofp
506 ; AVX1: sitofpv4i32v4float
507 ; AVX1: cost of 1 {{.*}} sitofp
509 ; AVX2: sitofpv4i32v4float
510 ; AVX2: cost of 1 {{.*}} sitofp
512 ; AVX512F: sitofpv4i32v4float
513 ; AVX512F: cost of 1 {{.*}} sitofp
514 %1 = sitofp <4 x i32> %a to <4 x float>
518 define <8 x float> @sitofpv8i32v8float(<8 x i32> %a) {
519 ; SSE2: sitofpv8i32v8float
520 ; SSE2: cost of 30 {{.*}} sitofp
522 ; AVX1: sitofpv8i32v8float
523 ; AVX1: cost of 1 {{.*}} sitofp
525 ; AVX2: sitofpv8i32v8float
526 ; AVX2: cost of 1 {{.*}} sitofp
528 ; AVX512F: sitofpv8i32v8float
529 ; AVX512F: cost of 1 {{.*}} sitofp
530 %1 = sitofp <8 x i32> %a to <8 x float>
534 define <16 x float> @sitofpv16i32v16float(<16 x i32> %a) {
535 ; SSE2: sitofpv16i32v16float
536 ; SSE2: cost of 60 {{.*}} sitofp
538 ; AVX1: sitofpv16i32v16float
539 ; AVX1: cost of 44 {{.*}} sitofp
541 ; AVX2: sitofpv16i32v16float
542 ; AVX2: cost of 44 {{.*}} sitofp
544 ; AVX512F: sitofpv16i32v16float
545 ; AVX512F: cost of 1 {{.*}} sitofp
546 %1 = sitofp <16 x i32> %a to <16 x float>
550 define <32 x float> @sitofpv32i32v32float(<32 x i32> %a) {
551 ; SSE2: sitofpv32i32v32float
552 ; SSE2: cost of 120 {{.*}} sitofp
554 ; AVX1: sitofpv32i32v32float
555 ; AVX1: cost of 88 {{.*}} sitofp
557 ; AVX2: sitofpv32i32v32float
558 ; AVX2: cost of 88 {{.*}} sitofp
560 ; AVX512F: sitofpv32i32v32float
561 ; AVX512F: cost of 1 {{.*}} sitofp
562 %1 = sitofp <32 x i32> %a to <32 x float>
566 define <2 x float> @sitofpv2i64v2float(<2 x i64> %a) {
567 ; SSE2: sitofpv2i64v2float
568 ; SSE2: cost of 15 {{.*}} sitofp
570 ; AVX1: sitofpv2i64v2float
571 ; AVX1: cost of 4 {{.*}} sitofp
573 ; AVX2: sitofpv2i64v2float
574 ; AVX2: cost of 4 {{.*}} sitofp
576 ; AVX512F: sitofpv2i64v2float
577 ; AVX512F: cost of 4 {{.*}} sitofp
578 %1 = sitofp <2 x i64> %a to <2 x float>
582 define <4 x float> @sitofpv4i64v4float(<4 x i64> %a) {
583 ; SSE2: sitofpv4i64v4float
584 ; SSE2: cost of 30 {{.*}} sitofp
586 ; AVX1: sitofpv4i64v4float
587 ; AVX1: cost of 10 {{.*}} sitofp
589 ; AVX2: sitofpv4i64v4float
590 ; AVX2: cost of 10 {{.*}} sitofp
592 ; AVX512F: sitofpv4i64v4float
593 ; AVX512F: cost of 10 {{.*}} sitofp
594 %1 = sitofp <4 x i64> %a to <4 x float>
598 define <8 x float> @sitofpv8i64v8float(<8 x i64> %a) {
599 ; SSE2: sitofpv8i64v8float
600 ; SSE2: cost of 60 {{.*}} sitofp
602 ; AVX1: sitofpv8i64v8float
603 ; AVX1: cost of 22 {{.*}} sitofp
605 ; AVX2: sitofpv8i64v8float
606 ; AVX2: cost of 22 {{.*}} sitofp
608 ; AVX512F: sitofpv8i64v8float
609 ; AVX512F: cost of 22 {{.*}} sitofp
610 %1 = sitofp <8 x i64> %a to <8 x float>
614 define <16 x float> @sitofpv16i64v16float(<16 x i64> %a) {
615 ; SSE2: sitofpv16i64v16float
616 ; SSE2: cost of 120 {{.*}} sitofp
618 ; AVX1: sitofpv16i64v16float
619 ; AVX1: cost of 44 {{.*}} sitofp
621 ; AVX2: sitofpv16i64v16float
622 ; AVX2: cost of 44 {{.*}} sitofp
624 ; AVX512F: sitofpv16i64v16float
625 ; AVX512F: cost of 46 {{.*}} sitofp
626 %1 = sitofp <16 x i64> %a to <16 x float>
630 define <32 x float> @sitofpv32i64v32float(<32 x i64> %a) {
631 ; SSE2: sitofpv32i64v32float
632 ; SSE2: cost of 240 {{.*}} sitofp
634 ; AVX1: sitofpv32i64v32float
635 ; AVX1: cost of 88 {{.*}} sitofp
637 ; AVX2: sitofpv32i64v32float
638 ; AVX2: cost of 88 {{.*}} sitofp
640 ; AVX512F: sitofpv32i64v32float
641 ; AVX512F: cost of 92 {{.*}} sitofp
642 %1 = sitofp <32 x i64> %a to <32 x float>
646 define <8 x double> @sitofpv8i1v8double(<8 x double> %a) {
647 ; SSE2: sitofpv8i1v8double
648 ; SSE2: cost of 80 {{.*}} sitofp
650 ; AVX1: sitofpv8i1v8double
651 ; AVX1: cost of 20 {{.*}} sitofp
653 ; AVX2: sitofpv8i1v8double
654 ; AVX2: cost of 20 {{.*}} sitofp
656 ; AVX512F: sitofpv8i1v8double
657 ; AVX512F: cost of 4 {{.*}} sitofp
658 %cmpres = fcmp ogt <8 x double> %a, zeroinitializer
659 %1 = sitofp <8 x i1> %cmpres to <8 x double>
663 define <16 x float> @sitofpv16i1v16float(<16 x float> %a) {
664 ; SSE2: sitofpv16i1v16float
665 ; SSE2: cost of 8 {{.*}} sitofp
667 ; AVX1: sitofpv16i1v16float
668 ; AVX1: cost of 44 {{.*}} sitofp
670 ; AVX2: sitofpv16i1v16float
671 ; AVX2: cost of 44 {{.*}} sitofp
673 ; AVX512F: sitofpv16i1v16float
674 ; AVX512F: cost of 3 {{.*}} sitofp
675 %cmpres = fcmp ogt <16 x float> %a, zeroinitializer
676 %1 = sitofp <16 x i1> %cmpres to <16 x float>