xref: /llvm-project/llvm/test/CodeGen/X86/pr36199.ll (revision 14d1e502df1613659e82290d7e31179a2ac97234)
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