[ARM] Adjust how NEON shifts are lowered
[llvm-core.git] / test / CodeGen / X86 / pr36199.ll
blob1dc9a3ab94b36e4150d5ea180631eac9e0d3bad9
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:    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
18 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0,
19 i32 1, i32 2, i32 3>
20   store <16 x float> %4, <16 x float>* undef, align 4
21   ret void