102 lines · c
1// REQUIRES: x86-registered-target2// 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 %s3 4 5#include <immintrin.h>6 7__m256d test_mm256_castpd128_pd256(__m128d A) {8 // CHECK-LABEL: test_mm256_castpd128_pd2569 // CHECK: # %bb.0:10 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm011 // CHECK-NEXT: ret{{[l|q]}}12 return _mm256_castpd128_pd256(A);13}14 15__m256 test_mm256_castps128_ps256(__m128 A) {16 // CHECK-LABEL: test_mm256_castps128_ps25617 // CHECK: # %bb.0:18 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm019 // CHECK-NEXT: ret{{[l|q]}}20 return _mm256_castps128_ps256(A);21}22 23__m256i test_mm256_castsi128_si256(__m128i A) {24 // CHECK-LABEL: test_mm256_castsi128_si25625 // CHECK: # %bb.0:26 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm027 // CHECK-NEXT: ret{{[l|q]}}28 return _mm256_castsi128_si256(A);29}30 31__m256h test_mm256_castph128_ph256(__m128h A) {32 // CHECK-LABEL: test_mm256_castph128_ph25633 // CHECK: # %bb.0:34 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm035 // CHECK-NEXT: ret{{[l|q]}}36 return _mm256_castph128_ph256(A);37}38 39__m512h test_mm512_castph128_ph512(__m128h A) {40 // CHECK-LABEL: test_mm512_castph128_ph51241 // CHECK: # %bb.0:42 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm043 // CHECK-NEXT: ret{{[l|q]}}44 return _mm512_castph128_ph512(A);45}46 47__m512h test_mm512_castph256_ph512(__m256h A) {48 // CHECK-LABEL: test_mm512_castph256_ph51249 // CHECK: # %bb.0:50 // CHECK-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm051 // CHECK-NEXT: ret{{[l|q]}}52 return _mm512_castph256_ph512(A);53}54 55__m512d test_mm512_castpd256_pd512(__m256d A){56 // CHECK-LABEL: test_mm512_castpd256_pd51257 // CHECK: # %bb.0:58 // CHECK-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm059 // CHECK-NEXT: ret{{[l|q]}}60 return _mm512_castpd256_pd512(A);61}62 63__m512 test_mm512_castps256_ps512(__m256 A){64 // CHECK-LABEL: test_mm512_castps256_ps51265 // CHECK: # %bb.0:66 // CHECK-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm067 // CHECK-NEXT: ret{{[l|q]}}68 return _mm512_castps256_ps512(A);69}70 71__m512d test_mm512_castpd128_pd512(__m128d A){72 // CHECK-LABEL: test_mm512_castpd128_pd51273 // CHECK: # %bb.0:74 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm075 // CHECK-NEXT: ret{{[l|q]}}76 return _mm512_castpd128_pd512(A);77}78 79__m512 test_mm512_castps128_ps512(__m128 A){80 // CHECK-LABEL: test_mm512_castps128_ps51281 // CHECK: # %bb.0:82 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm083 // CHECK-NEXT: ret{{[l|q]}}84 return _mm512_castps128_ps512(A);85}86 87__m512i test_mm512_castsi128_si512(__m128i A){88 // CHECK-LABEL: test_mm512_castsi128_si51289 // CHECK: # %bb.0:90 // CHECK-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm091 // CHECK-NEXT: ret{{[l|q]}}92 return _mm512_castsi128_si512(A);93}94 95__m512i test_mm512_castsi256_si512(__m256i A){96 // CHECK-LABEL: test_mm512_castsi256_si51297 // CHECK: # %bb.0:98 // CHECK-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm099 // CHECK-NEXT: ret{{[l|q]}}100 return _mm512_castsi256_si512(A);101}102