1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx512f | FileCheck %s 3 4define void @foo(<16 x float> %x) { 5; CHECK-LABEL: foo: 6; CHECK: # %bb.0: 7; CHECK-NEXT: vaddps %xmm0, %xmm0, %xmm0 8; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 9; CHECK-NEXT: vinsertf64x4 $1, %ymm0, %zmm0, %zmm0 10; CHECK-NEXT: vmovups %zmm0, (%rax) 11; CHECK-NEXT: vzeroupper 12; CHECK-NEXT: retq 13 %1 = fadd <16 x float> %x, %x 14 %bc256 = bitcast <16 x float> %1 to <4 x i128> 15 %2 = extractelement <4 x i128> %bc256, i32 0 16 %3 = bitcast i128 %2 to <4 x float> 17 %4 = shufflevector <4 x float> %3, <4 x float> undef, <16 x i32> <i32 0, i32 181, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, 19i32 1, i32 2, i32 3> 20 store <16 x float> %4, <16 x float>* undef, align 4 21 ret void 22} 23