diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/pr30284.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/pr30284.ll | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/llvm/test/CodeGen/X86/pr30284.ll b/llvm/test/CodeGen/X86/pr30284.ll index c6a688ebdc4..4e564d72f8c 100644 --- a/llvm/test/CodeGen/X86/pr30284.ll +++ b/llvm/test/CodeGen/X86/pr30284.ll @@ -1,8 +1,8 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=i386-unknown-linux-gnu -mattr=avx512dq | FileCheck %s -define void @f_f___un_3C_unf_3E_un_3C_unf_3E_() { -; CHECK-LABEL: f_f___un_3C_unf_3E_un_3C_unf_3E_: +define void @undef_cond() { +; CHECK-LABEL: undef_cond: ; CHECK: # %bb.0: ; CHECK-NEXT: vmovapd 0, %zmm0 ; CHECK-NEXT: vmovapd 64, %zmm1 @@ -20,3 +20,27 @@ define void @f_f___un_3C_unf_3E_un_3C_unf_3E_() { store <16 x i64> %v1.i41, <16 x i64>* null ret void } + +define void @f_f___un_3C_unf_3E_un_3C_unf_3E_(<16 x i1> %x) { +; CHECK-LABEL: f_f___un_3C_unf_3E_un_3C_unf_3E_: +; CHECK: # %bb.0: +; CHECK-NEXT: vpmovzxbd {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero +; CHECK-NEXT: vpslld $31, %zmm0, %zmm0 +; CHECK-NEXT: vpmovd2m %zmm0, %k1 +; CHECK-NEXT: vmovapd 0, %zmm0 +; CHECK-NEXT: vmovapd 64, %zmm1 +; CHECK-NEXT: vmovapd {{.*#+}} zmm2 = [0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16] +; CHECK-NEXT: kshiftrw $8, %k1, %k2 +; CHECK-NEXT: vorpd %zmm2, %zmm1, %zmm1 {%k2} +; CHECK-NEXT: vorpd %zmm2, %zmm0, %zmm0 {%k1} +; CHECK-NEXT: vmovapd %zmm0, 0 +; CHECK-NEXT: vmovapd %zmm1, 64 +; CHECK-NEXT: vzeroupper +; CHECK-NEXT: retl + %a_load22 = load <16 x i64>, <16 x i64>* null, align 1 + %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> + %v.i = load <16 x i64>, <16 x i64>* null + %v1.i41 = select <16 x i1> %x, <16 x i64> %bitop, <16 x i64> %v.i + store <16 x i64> %v1.i41, <16 x i64>* null + ret void +} |