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: vshuff64x2 {{.*#+}} zmm0 = zmm0[0,1,0,1,0,1,0,1] 9; CHECK-NEXT: vmovupd %zmm0, (%rax) 10; CHECK-NEXT: vzeroupper 11; CHECK-NEXT: retq 12 %1 = fadd <16 x float> %x, %x 13 %bc256 = bitcast <16 x float> %1 to <4 x i128> 14 %2 = extractelement <4 x i128> %bc256, i32 0 15 %3 = bitcast i128 %2 to <4 x float> 16 %4 = shufflevector <4 x float> %3, <4 x float> undef, <16 x i32> <i32 0, i32 171, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, 18i32 1, i32 2, i32 3> 19 store <16 x float> %4, ptr undef, align 4 20 ret void 21} 22