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