1 // REQUIRES: x86-registered-target
2 // RUN: %clang_cc1 -O3 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-unknown-unknown -target-feature +avx -target-feature +avx512f -target-feature +avx512fp16 -S -o - | FileCheck %s
7 __m256d
test_mm256_castpd128_pd256(__m128d A
) {
8 // CHECK-LABEL: test_mm256_castpd128_pd256
10 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
11 // CHECK-NEXT: ret{{[l|q]}}
12 return _mm256_castpd128_pd256(A
);
15 __m256
test_mm256_castps128_ps256(__m128 A
) {
16 // CHECK-LABEL: test_mm256_castps128_ps256
18 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
19 // CHECK-NEXT: ret{{[l|q]}}
20 return _mm256_castps128_ps256(A
);
23 __m256i
test_mm256_castsi128_si256(__m128i A
) {
24 // CHECK-LABEL: test_mm256_castsi128_si256
26 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
27 // CHECK-NEXT: ret{{[l|q]}}
28 return _mm256_castsi128_si256(A
);
31 __m256h
test_mm256_castph128_ph256(__m128h A
) {
32 // CHECK-LABEL: test_mm256_castph128_ph256
34 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
35 // CHECK-NEXT: ret{{[l|q]}}
36 return _mm256_castph128_ph256(A
);
39 __m512h
test_mm512_castph128_ph512(__m128h A
) {
40 // CHECK-LABEL: test_mm512_castph128_ph512
42 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
43 // CHECK-NEXT: ret{{[l|q]}}
44 return _mm512_castph128_ph512(A
);
47 __m512h
test_mm512_castph256_ph512(__m256h A
) {
48 // CHECK-LABEL: test_mm512_castph256_ph512
50 // CHECK-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
51 // CHECK-NEXT: ret{{[l|q]}}
52 return _mm512_castph256_ph512(A
);
55 __m512d
test_mm512_castpd256_pd512(__m256d A
){
56 // CHECK-LABEL: test_mm512_castpd256_pd512
58 // CHECK-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
59 // CHECK-NEXT: ret{{[l|q]}}
60 return _mm512_castpd256_pd512(A
);
63 __m512
test_mm512_castps256_ps512(__m256 A
){
64 // CHECK-LABEL: test_mm512_castps256_ps512
66 // CHECK-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
67 // CHECK-NEXT: ret{{[l|q]}}
68 return _mm512_castps256_ps512(A
);
71 __m512d
test_mm512_castpd128_pd512(__m128d A
){
72 // CHECK-LABEL: test_mm512_castpd128_pd512
74 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
75 // CHECK-NEXT: ret{{[l|q]}}
76 return _mm512_castpd128_pd512(A
);
79 __m512
test_mm512_castps128_ps512(__m128 A
){
80 // CHECK-LABEL: test_mm512_castps128_ps512
82 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
83 // CHECK-NEXT: ret{{[l|q]}}
84 return _mm512_castps128_ps512(A
);
87 __m512i
test_mm512_castsi128_si512(__m128i A
){
88 // CHECK-LABEL: test_mm512_castsi128_si512
90 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
91 // CHECK-NEXT: ret{{[l|q]}}
92 return _mm512_castsi128_si512(A
);
95 __m512i
test_mm512_castsi256_si512(__m256i A
){
96 // CHECK-LABEL: test_mm512_castsi256_si512
98 // CHECK-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
99 // CHECK-NEXT: ret{{[l|q]}}
100 return _mm512_castsi256_si512(A
);