Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / pr36199.ll
blobec18124faad78ea857dce8a738222a3373509180
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
4 define 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
17 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0,
18 i32 1, i32 2, i32 3>
19   store <16 x float> %4, ptr undef, align 4
20   ret void