[ARM] Adjust how NEON shifts are lowered
[llvm-core.git] / test / CodeGen / X86 / pr30284.ll
blobbe1a8d44184a263e0f59e5531684edf10abb1a03
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=i386-unknown-linux-gnu -mattr=avx512dq | FileCheck %s
4 define void @undef_cond() {
5 ; CHECK-LABEL: undef_cond:
6 ; CHECK:       # %bb.0:
7 ; CHECK-NEXT:    retl
8   %a_load22 = load <16 x i64>, <16 x i64>* null, align 1
9   %bitop = or <16 x i64> %a_load22, <i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736>
10   %v.i = load <16 x i64>, <16 x i64>* null
11   %v1.i41 = select <16 x i1> undef, <16 x i64> %bitop, <16 x i64> %v.i
12   store <16 x i64> %v1.i41, <16 x i64>* null
13   ret void
16 define void @f_f___un_3C_unf_3E_un_3C_unf_3E_(<16 x i1> %x) {
17 ; CHECK-LABEL: f_f___un_3C_unf_3E_un_3C_unf_3E_:
18 ; CHECK:       # %bb.0:
19 ; CHECK-NEXT:    vpmovsxbd %xmm0, %zmm0
20 ; CHECK-NEXT:    vpslld $31, %zmm0, %zmm0
21 ; CHECK-NEXT:    vpmovd2m %zmm0, %k1
22 ; CHECK-NEXT:    vmovapd 0, %zmm0
23 ; CHECK-NEXT:    vmovapd 64, %zmm1
24 ; CHECK-NEXT:    vbroadcastsd {{.*#+}} zmm2 = [3.3951932655444357E-313,3.3951932655444357E-313,3.3951932655444357E-313,3.3951932655444357E-313,3.3951932655444357E-313,3.3951932655444357E-313,3.3951932655444357E-313,3.3951932655444357E-313]
25 ; CHECK-NEXT:    kshiftrw $8, %k1, %k2
26 ; CHECK-NEXT:    vorpd %zmm2, %zmm1, %zmm1 {%k2}
27 ; CHECK-NEXT:    vorpd %zmm2, %zmm0, %zmm0 {%k1}
28 ; CHECK-NEXT:    vmovapd %zmm0, 0
29 ; CHECK-NEXT:    vmovapd %zmm1, 64
30 ; CHECK-NEXT:    vzeroupper
31 ; CHECK-NEXT:    retl
32   %a_load22 = load <16 x i64>, <16 x i64>* null, align 1
33   %bitop = or <16 x i64> %a_load22, <i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736>
34   %v.i = load <16 x i64>, <16 x i64>* null
35   %v1.i41 = select <16 x i1> %x, <16 x i64> %bitop, <16 x i64> %v.i
36   store <16 x i64> %v1.i41, <16 x i64>* null
37   ret void