brintos

brintos / llvm-project-archived public Read only

0
0
Text · 64.2 KiB · 95c8aa6 Raw
1298 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512f,+avx512vl,+avx512dq,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle %s -o - | FileCheck %s3; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512f,+avx512vl,+avx512dq,+fast-variable-perlane-shuffle %s -o - | FileCheck %s4 5define <4 x i32> @test_2xi32_to_4xi32(<4 x i32> %vec) {6; CHECK-LABEL: test_2xi32_to_4xi32:7; CHECK:       # %bb.0:8; CHECK-NEXT:    vmovddup {{.*#+}} xmm0 = xmm0[0,0]9; CHECK-NEXT:    retq10  %res = shufflevector <4 x i32> %vec, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>11  ret <4 x i32> %res12}13define <4 x i32> @test_masked_2xi32_to_4xi32_mask0(<4 x i32> %vec, <4 x i32> %default, <4 x i32> %mask) {14; CHECK-LABEL: test_masked_2xi32_to_4xi32_mask0:15; CHECK:       # %bb.0:16; CHECK-NEXT:    vptestnmd %xmm2, %xmm2, %k117; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm1 {%k1} = xmm0[0,1,0,1]18; CHECK-NEXT:    vmovdqa %xmm1, %xmm019; CHECK-NEXT:    retq20  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>21  %cmp = icmp eq <4 x i32> %mask, zeroinitializer22  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default23  ret <4 x i32> %res24}25 26define <4 x i32> @test_masked_z_2xi32_to_4xi32_mask0(<4 x i32> %vec, <4 x i32> %mask) {27; CHECK-LABEL: test_masked_z_2xi32_to_4xi32_mask0:28; CHECK:       # %bb.0:29; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k130; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm0 {%k1} {z} = xmm0[0,1,0,1]31; CHECK-NEXT:    retq32  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>33  %cmp = icmp eq <4 x i32> %mask, zeroinitializer34  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer35  ret <4 x i32> %res36}37define <4 x i32> @test_masked_2xi32_to_4xi32_mask1(<4 x i32> %vec, <4 x i32> %default, <4 x i32> %mask) {38; CHECK-LABEL: test_masked_2xi32_to_4xi32_mask1:39; CHECK:       # %bb.0:40; CHECK-NEXT:    vptestnmd %xmm2, %xmm2, %k141; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm1 {%k1} = xmm0[0,1,0,1]42; CHECK-NEXT:    vmovdqa %xmm1, %xmm043; CHECK-NEXT:    retq44  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>45  %cmp = icmp eq <4 x i32> %mask, zeroinitializer46  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default47  ret <4 x i32> %res48}49 50define <4 x i32> @test_masked_z_2xi32_to_4xi32_mask1(<4 x i32> %vec, <4 x i32> %mask) {51; CHECK-LABEL: test_masked_z_2xi32_to_4xi32_mask1:52; CHECK:       # %bb.0:53; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k154; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm0 {%k1} {z} = xmm0[0,1,0,1]55; CHECK-NEXT:    retq56  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>57  %cmp = icmp eq <4 x i32> %mask, zeroinitializer58  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer59  ret <4 x i32> %res60}61define <4 x i32> @test_masked_2xi32_to_4xi32_mask2(<4 x i32> %vec, <4 x i32> %default, <4 x i32> %mask) {62; CHECK-LABEL: test_masked_2xi32_to_4xi32_mask2:63; CHECK:       # %bb.0:64; CHECK-NEXT:    vptestnmd %xmm2, %xmm2, %k165; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm1 {%k1} = xmm0[0,1,0,1]66; CHECK-NEXT:    vmovdqa %xmm1, %xmm067; CHECK-NEXT:    retq68  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>69  %cmp = icmp eq <4 x i32> %mask, zeroinitializer70  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default71  ret <4 x i32> %res72}73 74define <4 x i32> @test_masked_z_2xi32_to_4xi32_mask2(<4 x i32> %vec, <4 x i32> %mask) {75; CHECK-LABEL: test_masked_z_2xi32_to_4xi32_mask2:76; CHECK:       # %bb.0:77; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k178; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm0 {%k1} {z} = xmm0[0,1,0,1]79; CHECK-NEXT:    retq80  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>81  %cmp = icmp eq <4 x i32> %mask, zeroinitializer82  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer83  ret <4 x i32> %res84}85define <4 x i32> @test_masked_2xi32_to_4xi32_mask3(<4 x i32> %vec, <4 x i32> %default, <4 x i32> %mask) {86; CHECK-LABEL: test_masked_2xi32_to_4xi32_mask3:87; CHECK:       # %bb.0:88; CHECK-NEXT:    vptestnmd %xmm2, %xmm2, %k189; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm1 {%k1} = xmm0[0,1,0,1]90; CHECK-NEXT:    vmovdqa %xmm1, %xmm091; CHECK-NEXT:    retq92  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>93  %cmp = icmp eq <4 x i32> %mask, zeroinitializer94  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default95  ret <4 x i32> %res96}97 98define <4 x i32> @test_masked_z_2xi32_to_4xi32_mask3(<4 x i32> %vec, <4 x i32> %mask) {99; CHECK-LABEL: test_masked_z_2xi32_to_4xi32_mask3:100; CHECK:       # %bb.0:101; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k1102; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm0 {%k1} {z} = xmm0[0,1,0,1]103; CHECK-NEXT:    retq104  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>105  %cmp = icmp eq <4 x i32> %mask, zeroinitializer106  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer107  ret <4 x i32> %res108}109define <8 x i32> @test_2xi32_to_8xi32(<8 x i32> %vec) {110; CHECK-LABEL: test_2xi32_to_8xi32:111; CHECK:       # %bb.0:112; CHECK-NEXT:    vbroadcastsd %xmm0, %ymm0113; CHECK-NEXT:    retq114  %res = shufflevector <8 x i32> %vec, <8 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>115  ret <8 x i32> %res116}117define <8 x i32> @test_masked_2xi32_to_8xi32_mask0(<8 x i32> %vec, <8 x i32> %default, <8 x i32> %mask) {118; CHECK-LABEL: test_masked_2xi32_to_8xi32_mask0:119; CHECK:       # %bb.0:120; CHECK-NEXT:    vptestnmd %ymm2, %ymm2, %k1121; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm1 {%k1} = xmm0[0,1,0,1,0,1,0,1]122; CHECK-NEXT:    vmovdqa %ymm1, %ymm0123; CHECK-NEXT:    retq124  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>125  %cmp = icmp eq <8 x i32> %mask, zeroinitializer126  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default127  ret <8 x i32> %res128}129 130define <8 x i32> @test_masked_z_2xi32_to_8xi32_mask0(<8 x i32> %vec, <8 x i32> %mask) {131; CHECK-LABEL: test_masked_z_2xi32_to_8xi32_mask0:132; CHECK:       # %bb.0:133; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1134; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm0 {%k1} {z} = xmm0[0,1,0,1,0,1,0,1]135; CHECK-NEXT:    retq136  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>137  %cmp = icmp eq <8 x i32> %mask, zeroinitializer138  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer139  ret <8 x i32> %res140}141define <8 x i32> @test_masked_2xi32_to_8xi32_mask1(<8 x i32> %vec, <8 x i32> %default, <8 x i32> %mask) {142; CHECK-LABEL: test_masked_2xi32_to_8xi32_mask1:143; CHECK:       # %bb.0:144; CHECK-NEXT:    vptestnmd %ymm2, %ymm2, %k1145; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm1 {%k1} = xmm0[0,1,0,1,0,1,0,1]146; CHECK-NEXT:    vmovdqa %ymm1, %ymm0147; CHECK-NEXT:    retq148  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>149  %cmp = icmp eq <8 x i32> %mask, zeroinitializer150  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default151  ret <8 x i32> %res152}153 154define <8 x i32> @test_masked_z_2xi32_to_8xi32_mask1(<8 x i32> %vec, <8 x i32> %mask) {155; CHECK-LABEL: test_masked_z_2xi32_to_8xi32_mask1:156; CHECK:       # %bb.0:157; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1158; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm0 {%k1} {z} = xmm0[0,1,0,1,0,1,0,1]159; CHECK-NEXT:    retq160  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>161  %cmp = icmp eq <8 x i32> %mask, zeroinitializer162  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer163  ret <8 x i32> %res164}165define <8 x i32> @test_masked_2xi32_to_8xi32_mask2(<8 x i32> %vec, <8 x i32> %default, <8 x i32> %mask) {166; CHECK-LABEL: test_masked_2xi32_to_8xi32_mask2:167; CHECK:       # %bb.0:168; CHECK-NEXT:    vptestnmd %ymm2, %ymm2, %k1169; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm1 {%k1} = xmm0[0,1,0,1,0,1,0,1]170; CHECK-NEXT:    vmovdqa %ymm1, %ymm0171; CHECK-NEXT:    retq172  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>173  %cmp = icmp eq <8 x i32> %mask, zeroinitializer174  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default175  ret <8 x i32> %res176}177 178define <8 x i32> @test_masked_z_2xi32_to_8xi32_mask2(<8 x i32> %vec, <8 x i32> %mask) {179; CHECK-LABEL: test_masked_z_2xi32_to_8xi32_mask2:180; CHECK:       # %bb.0:181; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1182; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm0 {%k1} {z} = xmm0[0,1,0,1,0,1,0,1]183; CHECK-NEXT:    retq184  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>185  %cmp = icmp eq <8 x i32> %mask, zeroinitializer186  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer187  ret <8 x i32> %res188}189define <8 x i32> @test_masked_2xi32_to_8xi32_mask3(<8 x i32> %vec, <8 x i32> %default, <8 x i32> %mask) {190; CHECK-LABEL: test_masked_2xi32_to_8xi32_mask3:191; CHECK:       # %bb.0:192; CHECK-NEXT:    vptestnmd %ymm2, %ymm2, %k1193; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm1 {%k1} = xmm0[0,1,0,1,0,1,0,1]194; CHECK-NEXT:    vmovdqa %ymm1, %ymm0195; CHECK-NEXT:    retq196  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>197  %cmp = icmp eq <8 x i32> %mask, zeroinitializer198  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default199  ret <8 x i32> %res200}201 202define <8 x i32> @test_masked_z_2xi32_to_8xi32_mask3(<8 x i32> %vec, <8 x i32> %mask) {203; CHECK-LABEL: test_masked_z_2xi32_to_8xi32_mask3:204; CHECK:       # %bb.0:205; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1206; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm0 {%k1} {z} = xmm0[0,1,0,1,0,1,0,1]207; CHECK-NEXT:    retq208  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>209  %cmp = icmp eq <8 x i32> %mask, zeroinitializer210  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer211  ret <8 x i32> %res212}213define <16 x i32> @test_2xi32_to_16xi32(<16 x i32> %vec) {214; CHECK-LABEL: test_2xi32_to_16xi32:215; CHECK:       # %bb.0:216; CHECK-NEXT:    vbroadcastsd %xmm0, %zmm0217; CHECK-NEXT:    retq218  %res = shufflevector <16 x i32> %vec, <16 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>219  ret <16 x i32> %res220}221define <16 x i32> @test_masked_2xi32_to_16xi32_mask0(<16 x i32> %vec, <16 x i32> %default, <16 x i32> %mask) {222; CHECK-LABEL: test_masked_2xi32_to_16xi32_mask0:223; CHECK:       # %bb.0:224; CHECK-NEXT:    vptestnmd %zmm2, %zmm2, %k1225; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm1 {%k1} = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]226; CHECK-NEXT:    vmovdqa64 %zmm1, %zmm0227; CHECK-NEXT:    retq228  %shuf = shufflevector <16 x i32> %vec, <16 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>229  %cmp = icmp eq <16 x i32> %mask, zeroinitializer230  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default231  ret <16 x i32> %res232}233 234define <16 x i32> @test_masked_z_2xi32_to_16xi32_mask0(<16 x i32> %vec, <16 x i32> %mask) {235; CHECK-LABEL: test_masked_z_2xi32_to_16xi32_mask0:236; CHECK:       # %bb.0:237; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1238; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm0 {%k1} {z} = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]239; CHECK-NEXT:    retq240  %shuf = shufflevector <16 x i32> %vec, <16 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>241  %cmp = icmp eq <16 x i32> %mask, zeroinitializer242  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer243  ret <16 x i32> %res244}245define <16 x i32> @test_masked_2xi32_to_16xi32_mask1(<16 x i32> %vec, <16 x i32> %default, <16 x i32> %mask) {246; CHECK-LABEL: test_masked_2xi32_to_16xi32_mask1:247; CHECK:       # %bb.0:248; CHECK-NEXT:    vptestnmd %zmm2, %zmm2, %k1249; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm1 {%k1} = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]250; CHECK-NEXT:    vmovdqa64 %zmm1, %zmm0251; CHECK-NEXT:    retq252  %shuf = shufflevector <16 x i32> %vec, <16 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>253  %cmp = icmp eq <16 x i32> %mask, zeroinitializer254  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default255  ret <16 x i32> %res256}257 258define <16 x i32> @test_masked_z_2xi32_to_16xi32_mask1(<16 x i32> %vec, <16 x i32> %mask) {259; CHECK-LABEL: test_masked_z_2xi32_to_16xi32_mask1:260; CHECK:       # %bb.0:261; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1262; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm0 {%k1} {z} = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]263; CHECK-NEXT:    retq264  %shuf = shufflevector <16 x i32> %vec, <16 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>265  %cmp = icmp eq <16 x i32> %mask, zeroinitializer266  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer267  ret <16 x i32> %res268}269define <16 x i32> @test_masked_2xi32_to_16xi32_mask2(<16 x i32> %vec, <16 x i32> %default, <16 x i32> %mask) {270; CHECK-LABEL: test_masked_2xi32_to_16xi32_mask2:271; CHECK:       # %bb.0:272; CHECK-NEXT:    vptestnmd %zmm2, %zmm2, %k1273; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm1 {%k1} = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]274; CHECK-NEXT:    vmovdqa64 %zmm1, %zmm0275; CHECK-NEXT:    retq276  %shuf = shufflevector <16 x i32> %vec, <16 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>277  %cmp = icmp eq <16 x i32> %mask, zeroinitializer278  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default279  ret <16 x i32> %res280}281 282define <16 x i32> @test_masked_z_2xi32_to_16xi32_mask2(<16 x i32> %vec, <16 x i32> %mask) {283; CHECK-LABEL: test_masked_z_2xi32_to_16xi32_mask2:284; CHECK:       # %bb.0:285; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1286; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm0 {%k1} {z} = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]287; CHECK-NEXT:    retq288  %shuf = shufflevector <16 x i32> %vec, <16 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>289  %cmp = icmp eq <16 x i32> %mask, zeroinitializer290  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer291  ret <16 x i32> %res292}293define <16 x i32> @test_masked_2xi32_to_16xi32_mask3(<16 x i32> %vec, <16 x i32> %default, <16 x i32> %mask) {294; CHECK-LABEL: test_masked_2xi32_to_16xi32_mask3:295; CHECK:       # %bb.0:296; CHECK-NEXT:    vptestnmd %zmm2, %zmm2, %k1297; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm1 {%k1} = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]298; CHECK-NEXT:    vmovdqa64 %zmm1, %zmm0299; CHECK-NEXT:    retq300  %shuf = shufflevector <16 x i32> %vec, <16 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>301  %cmp = icmp eq <16 x i32> %mask, zeroinitializer302  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default303  ret <16 x i32> %res304}305 306define <16 x i32> @test_masked_z_2xi32_to_16xi32_mask3(<16 x i32> %vec, <16 x i32> %mask) {307; CHECK-LABEL: test_masked_z_2xi32_to_16xi32_mask3:308; CHECK:       # %bb.0:309; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1310; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm0 {%k1} {z} = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]311; CHECK-NEXT:    retq312  %shuf = shufflevector <16 x i32> %vec, <16 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>313  %cmp = icmp eq <16 x i32> %mask, zeroinitializer314  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer315  ret <16 x i32> %res316}317define <4 x i32> @test_2xi32_to_4xi32_mem(ptr %vp) {318; CHECK-LABEL: test_2xi32_to_4xi32_mem:319; CHECK:       # %bb.0:320; CHECK-NEXT:    vmovddup {{.*#+}} xmm0 = mem[0,0]321; CHECK-NEXT:    retq322  %vec = load <2 x i32>, ptr %vp323  %res = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>324  ret <4 x i32> %res325}326define <4 x i32> @test_masked_2xi32_to_4xi32_mem_mask0(ptr %vp, <4 x i32> %default, <4 x i32> %mask) {327; CHECK-LABEL: test_masked_2xi32_to_4xi32_mem_mask0:328; CHECK:       # %bb.0:329; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k1330; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm0 {%k1} = mem[0,1,0,1]331; CHECK-NEXT:    retq332  %vec = load <2 x i32>, ptr %vp333  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>334  %cmp = icmp eq <4 x i32> %mask, zeroinitializer335  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default336  ret <4 x i32> %res337}338 339define <4 x i32> @test_masked_z_2xi32_to_4xi32_mem_mask0(ptr %vp, <4 x i32> %mask) {340; CHECK-LABEL: test_masked_z_2xi32_to_4xi32_mem_mask0:341; CHECK:       # %bb.0:342; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k1343; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm0 {%k1} {z} = mem[0,1,0,1]344; CHECK-NEXT:    retq345  %vec = load <2 x i32>, ptr %vp346  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>347  %cmp = icmp eq <4 x i32> %mask, zeroinitializer348  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer349  ret <4 x i32> %res350}351define <4 x i32> @test_masked_2xi32_to_4xi32_mem_mask1(ptr %vp, <4 x i32> %default, <4 x i32> %mask) {352; CHECK-LABEL: test_masked_2xi32_to_4xi32_mem_mask1:353; CHECK:       # %bb.0:354; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k1355; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm0 {%k1} = mem[0,1,0,1]356; CHECK-NEXT:    retq357  %vec = load <2 x i32>, ptr %vp358  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>359  %cmp = icmp eq <4 x i32> %mask, zeroinitializer360  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default361  ret <4 x i32> %res362}363 364define <4 x i32> @test_masked_z_2xi32_to_4xi32_mem_mask1(ptr %vp, <4 x i32> %mask) {365; CHECK-LABEL: test_masked_z_2xi32_to_4xi32_mem_mask1:366; CHECK:       # %bb.0:367; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k1368; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm0 {%k1} {z} = mem[0,1,0,1]369; CHECK-NEXT:    retq370  %vec = load <2 x i32>, ptr %vp371  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>372  %cmp = icmp eq <4 x i32> %mask, zeroinitializer373  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer374  ret <4 x i32> %res375}376define <4 x i32> @test_masked_2xi32_to_4xi32_mem_mask2(ptr %vp, <4 x i32> %default, <4 x i32> %mask) {377; CHECK-LABEL: test_masked_2xi32_to_4xi32_mem_mask2:378; CHECK:       # %bb.0:379; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k1380; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm0 {%k1} = mem[0,1,0,1]381; CHECK-NEXT:    retq382  %vec = load <2 x i32>, ptr %vp383  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>384  %cmp = icmp eq <4 x i32> %mask, zeroinitializer385  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default386  ret <4 x i32> %res387}388 389define <4 x i32> @test_masked_z_2xi32_to_4xi32_mem_mask2(ptr %vp, <4 x i32> %mask) {390; CHECK-LABEL: test_masked_z_2xi32_to_4xi32_mem_mask2:391; CHECK:       # %bb.0:392; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k1393; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm0 {%k1} {z} = mem[0,1,0,1]394; CHECK-NEXT:    retq395  %vec = load <2 x i32>, ptr %vp396  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>397  %cmp = icmp eq <4 x i32> %mask, zeroinitializer398  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer399  ret <4 x i32> %res400}401define <4 x i32> @test_masked_2xi32_to_4xi32_mem_mask3(ptr %vp, <4 x i32> %default, <4 x i32> %mask) {402; CHECK-LABEL: test_masked_2xi32_to_4xi32_mem_mask3:403; CHECK:       # %bb.0:404; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k1405; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm0 {%k1} = mem[0,1,0,1]406; CHECK-NEXT:    retq407  %vec = load <2 x i32>, ptr %vp408  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>409  %cmp = icmp eq <4 x i32> %mask, zeroinitializer410  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default411  ret <4 x i32> %res412}413 414define <4 x i32> @test_masked_z_2xi32_to_4xi32_mem_mask3(ptr %vp, <4 x i32> %mask) {415; CHECK-LABEL: test_masked_z_2xi32_to_4xi32_mem_mask3:416; CHECK:       # %bb.0:417; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k1418; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} xmm0 {%k1} {z} = mem[0,1,0,1]419; CHECK-NEXT:    retq420  %vec = load <2 x i32>, ptr %vp421  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>422  %cmp = icmp eq <4 x i32> %mask, zeroinitializer423  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer424  ret <4 x i32> %res425}426define <8 x i32> @test_2xi32_to_8xi32_mem(ptr %vp) {427; CHECK-LABEL: test_2xi32_to_8xi32_mem:428; CHECK:       # %bb.0:429; CHECK-NEXT:    vbroadcastsd (%rdi), %ymm0430; CHECK-NEXT:    retq431  %vec = load <2 x i32>, ptr %vp432  %res = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>433  ret <8 x i32> %res434}435define <8 x i32> @test_masked_2xi32_to_8xi32_mem_mask0(ptr %vp, <8 x i32> %default, <8 x i32> %mask) {436; CHECK-LABEL: test_masked_2xi32_to_8xi32_mem_mask0:437; CHECK:       # %bb.0:438; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1439; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm0 {%k1} = mem[0,1,0,1,0,1,0,1]440; CHECK-NEXT:    retq441  %vec = load <2 x i32>, ptr %vp442  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>443  %cmp = icmp eq <8 x i32> %mask, zeroinitializer444  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default445  ret <8 x i32> %res446}447 448define <8 x i32> @test_masked_z_2xi32_to_8xi32_mem_mask0(ptr %vp, <8 x i32> %mask) {449; CHECK-LABEL: test_masked_z_2xi32_to_8xi32_mem_mask0:450; CHECK:       # %bb.0:451; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k1452; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm0 {%k1} {z} = mem[0,1,0,1,0,1,0,1]453; CHECK-NEXT:    retq454  %vec = load <2 x i32>, ptr %vp455  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>456  %cmp = icmp eq <8 x i32> %mask, zeroinitializer457  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer458  ret <8 x i32> %res459}460define <8 x i32> @test_masked_2xi32_to_8xi32_mem_mask1(ptr %vp, <8 x i32> %default, <8 x i32> %mask) {461; CHECK-LABEL: test_masked_2xi32_to_8xi32_mem_mask1:462; CHECK:       # %bb.0:463; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1464; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm0 {%k1} = mem[0,1,0,1,0,1,0,1]465; CHECK-NEXT:    retq466  %vec = load <2 x i32>, ptr %vp467  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>468  %cmp = icmp eq <8 x i32> %mask, zeroinitializer469  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default470  ret <8 x i32> %res471}472 473define <8 x i32> @test_masked_z_2xi32_to_8xi32_mem_mask1(ptr %vp, <8 x i32> %mask) {474; CHECK-LABEL: test_masked_z_2xi32_to_8xi32_mem_mask1:475; CHECK:       # %bb.0:476; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k1477; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm0 {%k1} {z} = mem[0,1,0,1,0,1,0,1]478; CHECK-NEXT:    retq479  %vec = load <2 x i32>, ptr %vp480  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>481  %cmp = icmp eq <8 x i32> %mask, zeroinitializer482  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer483  ret <8 x i32> %res484}485define <8 x i32> @test_masked_2xi32_to_8xi32_mem_mask2(ptr %vp, <8 x i32> %default, <8 x i32> %mask) {486; CHECK-LABEL: test_masked_2xi32_to_8xi32_mem_mask2:487; CHECK:       # %bb.0:488; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1489; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm0 {%k1} = mem[0,1,0,1,0,1,0,1]490; CHECK-NEXT:    retq491  %vec = load <2 x i32>, ptr %vp492  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>493  %cmp = icmp eq <8 x i32> %mask, zeroinitializer494  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default495  ret <8 x i32> %res496}497 498define <8 x i32> @test_masked_z_2xi32_to_8xi32_mem_mask2(ptr %vp, <8 x i32> %mask) {499; CHECK-LABEL: test_masked_z_2xi32_to_8xi32_mem_mask2:500; CHECK:       # %bb.0:501; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k1502; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm0 {%k1} {z} = mem[0,1,0,1,0,1,0,1]503; CHECK-NEXT:    retq504  %vec = load <2 x i32>, ptr %vp505  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>506  %cmp = icmp eq <8 x i32> %mask, zeroinitializer507  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer508  ret <8 x i32> %res509}510define <8 x i32> @test_masked_2xi32_to_8xi32_mem_mask3(ptr %vp, <8 x i32> %default, <8 x i32> %mask) {511; CHECK-LABEL: test_masked_2xi32_to_8xi32_mem_mask3:512; CHECK:       # %bb.0:513; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1514; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm0 {%k1} = mem[0,1,0,1,0,1,0,1]515; CHECK-NEXT:    retq516  %vec = load <2 x i32>, ptr %vp517  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>518  %cmp = icmp eq <8 x i32> %mask, zeroinitializer519  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default520  ret <8 x i32> %res521}522 523define <8 x i32> @test_masked_z_2xi32_to_8xi32_mem_mask3(ptr %vp, <8 x i32> %mask) {524; CHECK-LABEL: test_masked_z_2xi32_to_8xi32_mem_mask3:525; CHECK:       # %bb.0:526; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k1527; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} ymm0 {%k1} {z} = mem[0,1,0,1,0,1,0,1]528; CHECK-NEXT:    retq529  %vec = load <2 x i32>, ptr %vp530  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>531  %cmp = icmp eq <8 x i32> %mask, zeroinitializer532  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer533  ret <8 x i32> %res534}535define <16 x i32> @test_2xi32_to_16xi32_mem(ptr %vp) {536; CHECK-LABEL: test_2xi32_to_16xi32_mem:537; CHECK:       # %bb.0:538; CHECK-NEXT:    vbroadcastsd (%rdi), %zmm0539; CHECK-NEXT:    retq540  %vec = load <2 x i32>, ptr %vp541  %res = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>542  ret <16 x i32> %res543}544define <16 x i32> @test_masked_2xi32_to_16xi32_mem_mask0(ptr %vp, <16 x i32> %default, <16 x i32> %mask) {545; CHECK-LABEL: test_masked_2xi32_to_16xi32_mem_mask0:546; CHECK:       # %bb.0:547; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1548; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm0 {%k1} = mem[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]549; CHECK-NEXT:    retq550  %vec = load <2 x i32>, ptr %vp551  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>552  %cmp = icmp eq <16 x i32> %mask, zeroinitializer553  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default554  ret <16 x i32> %res555}556 557define <16 x i32> @test_masked_z_2xi32_to_16xi32_mem_mask0(ptr %vp, <16 x i32> %mask) {558; CHECK-LABEL: test_masked_z_2xi32_to_16xi32_mem_mask0:559; CHECK:       # %bb.0:560; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k1561; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]562; CHECK-NEXT:    retq563  %vec = load <2 x i32>, ptr %vp564  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>565  %cmp = icmp eq <16 x i32> %mask, zeroinitializer566  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer567  ret <16 x i32> %res568}569define <16 x i32> @test_masked_2xi32_to_16xi32_mem_mask1(ptr %vp, <16 x i32> %default, <16 x i32> %mask) {570; CHECK-LABEL: test_masked_2xi32_to_16xi32_mem_mask1:571; CHECK:       # %bb.0:572; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1573; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm0 {%k1} = mem[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]574; CHECK-NEXT:    retq575  %vec = load <2 x i32>, ptr %vp576  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>577  %cmp = icmp eq <16 x i32> %mask, zeroinitializer578  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default579  ret <16 x i32> %res580}581 582define <16 x i32> @test_masked_z_2xi32_to_16xi32_mem_mask1(ptr %vp, <16 x i32> %mask) {583; CHECK-LABEL: test_masked_z_2xi32_to_16xi32_mem_mask1:584; CHECK:       # %bb.0:585; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k1586; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]587; CHECK-NEXT:    retq588  %vec = load <2 x i32>, ptr %vp589  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>590  %cmp = icmp eq <16 x i32> %mask, zeroinitializer591  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer592  ret <16 x i32> %res593}594define <16 x i32> @test_masked_2xi32_to_16xi32_mem_mask2(ptr %vp, <16 x i32> %default, <16 x i32> %mask) {595; CHECK-LABEL: test_masked_2xi32_to_16xi32_mem_mask2:596; CHECK:       # %bb.0:597; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1598; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm0 {%k1} = mem[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]599; CHECK-NEXT:    retq600  %vec = load <2 x i32>, ptr %vp601  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>602  %cmp = icmp eq <16 x i32> %mask, zeroinitializer603  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default604  ret <16 x i32> %res605}606 607define <16 x i32> @test_masked_z_2xi32_to_16xi32_mem_mask2(ptr %vp, <16 x i32> %mask) {608; CHECK-LABEL: test_masked_z_2xi32_to_16xi32_mem_mask2:609; CHECK:       # %bb.0:610; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k1611; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]612; CHECK-NEXT:    retq613  %vec = load <2 x i32>, ptr %vp614  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>615  %cmp = icmp eq <16 x i32> %mask, zeroinitializer616  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer617  ret <16 x i32> %res618}619define <16 x i32> @test_masked_2xi32_to_16xi32_mem_mask3(ptr %vp, <16 x i32> %default, <16 x i32> %mask) {620; CHECK-LABEL: test_masked_2xi32_to_16xi32_mem_mask3:621; CHECK:       # %bb.0:622; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1623; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm0 {%k1} = mem[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]624; CHECK-NEXT:    retq625  %vec = load <2 x i32>, ptr %vp626  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>627  %cmp = icmp eq <16 x i32> %mask, zeroinitializer628  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default629  ret <16 x i32> %res630}631 632define <16 x i32> @test_masked_z_2xi32_to_16xi32_mem_mask3(ptr %vp, <16 x i32> %mask) {633; CHECK-LABEL: test_masked_z_2xi32_to_16xi32_mem_mask3:634; CHECK:       # %bb.0:635; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k1636; CHECK-NEXT:    vbroadcasti32x2 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]637; CHECK-NEXT:    retq638  %vec = load <2 x i32>, ptr %vp639  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>640  %cmp = icmp eq <16 x i32> %mask, zeroinitializer641  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer642  ret <16 x i32> %res643}644define <8 x i32> @test_4xi32_to_8xi32_mem(ptr %vp) {645; CHECK-LABEL: test_4xi32_to_8xi32_mem:646; CHECK:       # %bb.0:647; CHECK-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = mem[0,1,0,1]648; CHECK-NEXT:    retq649  %vec = load <4 x i32>, ptr %vp650  %res = shufflevector <4 x i32> %vec, <4 x i32> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>651  ret <8 x i32> %res652}653define <8 x i32> @test_masked_4xi32_to_8xi32_mem_mask0(ptr %vp, <8 x i32> %default, <8 x i32> %mask) {654; CHECK-LABEL: test_masked_4xi32_to_8xi32_mem_mask0:655; CHECK:       # %bb.0:656; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1657; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} ymm0 {%k1} = mem[0,1,2,3,0,1,2,3]658; CHECK-NEXT:    retq659  %vec = load <4 x i32>, ptr %vp660  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>661  %cmp = icmp eq <8 x i32> %mask, zeroinitializer662  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default663  ret <8 x i32> %res664}665 666define <8 x i32> @test_masked_z_4xi32_to_8xi32_mem_mask0(ptr %vp, <8 x i32> %mask) {667; CHECK-LABEL: test_masked_z_4xi32_to_8xi32_mem_mask0:668; CHECK:       # %bb.0:669; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k1670; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} ymm0 {%k1} {z} = mem[0,1,2,3,0,1,2,3]671; CHECK-NEXT:    retq672  %vec = load <4 x i32>, ptr %vp673  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>674  %cmp = icmp eq <8 x i32> %mask, zeroinitializer675  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer676  ret <8 x i32> %res677}678define <8 x i32> @test_masked_4xi32_to_8xi32_mem_mask1(ptr %vp, <8 x i32> %default, <8 x i32> %mask) {679; CHECK-LABEL: test_masked_4xi32_to_8xi32_mem_mask1:680; CHECK:       # %bb.0:681; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1682; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} ymm0 {%k1} = mem[0,1,2,3,0,1,2,3]683; CHECK-NEXT:    retq684  %vec = load <4 x i32>, ptr %vp685  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>686  %cmp = icmp eq <8 x i32> %mask, zeroinitializer687  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default688  ret <8 x i32> %res689}690 691define <8 x i32> @test_masked_z_4xi32_to_8xi32_mem_mask1(ptr %vp, <8 x i32> %mask) {692; CHECK-LABEL: test_masked_z_4xi32_to_8xi32_mem_mask1:693; CHECK:       # %bb.0:694; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k1695; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} ymm0 {%k1} {z} = mem[0,1,2,3,0,1,2,3]696; CHECK-NEXT:    retq697  %vec = load <4 x i32>, ptr %vp698  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>699  %cmp = icmp eq <8 x i32> %mask, zeroinitializer700  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer701  ret <8 x i32> %res702}703define <8 x i32> @test_masked_4xi32_to_8xi32_mem_mask2(ptr %vp, <8 x i32> %default, <8 x i32> %mask) {704; CHECK-LABEL: test_masked_4xi32_to_8xi32_mem_mask2:705; CHECK:       # %bb.0:706; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1707; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} ymm0 {%k1} = mem[0,1,2,3,0,1,2,3]708; CHECK-NEXT:    retq709  %vec = load <4 x i32>, ptr %vp710  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>711  %cmp = icmp eq <8 x i32> %mask, zeroinitializer712  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default713  ret <8 x i32> %res714}715 716define <8 x i32> @test_masked_z_4xi32_to_8xi32_mem_mask2(ptr %vp, <8 x i32> %mask) {717; CHECK-LABEL: test_masked_z_4xi32_to_8xi32_mem_mask2:718; CHECK:       # %bb.0:719; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k1720; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} ymm0 {%k1} {z} = mem[0,1,2,3,0,1,2,3]721; CHECK-NEXT:    retq722  %vec = load <4 x i32>, ptr %vp723  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>724  %cmp = icmp eq <8 x i32> %mask, zeroinitializer725  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer726  ret <8 x i32> %res727}728define <8 x i32> @test_masked_4xi32_to_8xi32_mem_mask3(ptr %vp, <8 x i32> %default, <8 x i32> %mask) {729; CHECK-LABEL: test_masked_4xi32_to_8xi32_mem_mask3:730; CHECK:       # %bb.0:731; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1732; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} ymm0 {%k1} = mem[0,1,2,3,0,1,2,3]733; CHECK-NEXT:    retq734  %vec = load <4 x i32>, ptr %vp735  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>736  %cmp = icmp eq <8 x i32> %mask, zeroinitializer737  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default738  ret <8 x i32> %res739}740 741define <8 x i32> @test_masked_z_4xi32_to_8xi32_mem_mask3(ptr %vp, <8 x i32> %mask) {742; CHECK-LABEL: test_masked_z_4xi32_to_8xi32_mem_mask3:743; CHECK:       # %bb.0:744; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k1745; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} ymm0 {%k1} {z} = mem[0,1,2,3,0,1,2,3]746; CHECK-NEXT:    retq747  %vec = load <4 x i32>, ptr %vp748  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>749  %cmp = icmp eq <8 x i32> %mask, zeroinitializer750  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer751  ret <8 x i32> %res752}753define <16 x i32> @test_4xi32_to_16xi32_mem(ptr %vp) {754; CHECK-LABEL: test_4xi32_to_16xi32_mem:755; CHECK:       # %bb.0:756; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} zmm0 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]757; CHECK-NEXT:    retq758  %vec = load <4 x i32>, ptr %vp759  %res = shufflevector <4 x i32> %vec, <4 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>760  ret <16 x i32> %res761}762define <16 x i32> @test_masked_4xi32_to_16xi32_mem_mask0(ptr %vp, <16 x i32> %default, <16 x i32> %mask) {763; CHECK-LABEL: test_masked_4xi32_to_16xi32_mem_mask0:764; CHECK:       # %bb.0:765; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1766; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} zmm0 {%k1} = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]767; CHECK-NEXT:    retq768  %vec = load <4 x i32>, ptr %vp769  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>770  %cmp = icmp eq <16 x i32> %mask, zeroinitializer771  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default772  ret <16 x i32> %res773}774 775define <16 x i32> @test_masked_z_4xi32_to_16xi32_mem_mask0(ptr %vp, <16 x i32> %mask) {776; CHECK-LABEL: test_masked_z_4xi32_to_16xi32_mem_mask0:777; CHECK:       # %bb.0:778; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k1779; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]780; CHECK-NEXT:    retq781  %vec = load <4 x i32>, ptr %vp782  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>783  %cmp = icmp eq <16 x i32> %mask, zeroinitializer784  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer785  ret <16 x i32> %res786}787define <16 x i32> @test_masked_4xi32_to_16xi32_mem_mask1(ptr %vp, <16 x i32> %default, <16 x i32> %mask) {788; CHECK-LABEL: test_masked_4xi32_to_16xi32_mem_mask1:789; CHECK:       # %bb.0:790; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1791; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} zmm0 {%k1} = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]792; CHECK-NEXT:    retq793  %vec = load <4 x i32>, ptr %vp794  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>795  %cmp = icmp eq <16 x i32> %mask, zeroinitializer796  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default797  ret <16 x i32> %res798}799 800define <16 x i32> @test_masked_z_4xi32_to_16xi32_mem_mask1(ptr %vp, <16 x i32> %mask) {801; CHECK-LABEL: test_masked_z_4xi32_to_16xi32_mem_mask1:802; CHECK:       # %bb.0:803; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k1804; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]805; CHECK-NEXT:    retq806  %vec = load <4 x i32>, ptr %vp807  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>808  %cmp = icmp eq <16 x i32> %mask, zeroinitializer809  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer810  ret <16 x i32> %res811}812define <16 x i32> @test_masked_4xi32_to_16xi32_mem_mask2(ptr %vp, <16 x i32> %default, <16 x i32> %mask) {813; CHECK-LABEL: test_masked_4xi32_to_16xi32_mem_mask2:814; CHECK:       # %bb.0:815; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1816; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} zmm0 {%k1} = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]817; CHECK-NEXT:    retq818  %vec = load <4 x i32>, ptr %vp819  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>820  %cmp = icmp eq <16 x i32> %mask, zeroinitializer821  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default822  ret <16 x i32> %res823}824 825define <16 x i32> @test_masked_z_4xi32_to_16xi32_mem_mask2(ptr %vp, <16 x i32> %mask) {826; CHECK-LABEL: test_masked_z_4xi32_to_16xi32_mem_mask2:827; CHECK:       # %bb.0:828; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k1829; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]830; CHECK-NEXT:    retq831  %vec = load <4 x i32>, ptr %vp832  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>833  %cmp = icmp eq <16 x i32> %mask, zeroinitializer834  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer835  ret <16 x i32> %res836}837define <16 x i32> @test_masked_4xi32_to_16xi32_mem_mask3(ptr %vp, <16 x i32> %default, <16 x i32> %mask) {838; CHECK-LABEL: test_masked_4xi32_to_16xi32_mem_mask3:839; CHECK:       # %bb.0:840; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1841; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} zmm0 {%k1} = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]842; CHECK-NEXT:    retq843  %vec = load <4 x i32>, ptr %vp844  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>845  %cmp = icmp eq <16 x i32> %mask, zeroinitializer846  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default847  ret <16 x i32> %res848}849 850define <16 x i32> @test_masked_z_4xi32_to_16xi32_mem_mask3(ptr %vp, <16 x i32> %mask) {851; CHECK-LABEL: test_masked_z_4xi32_to_16xi32_mem_mask3:852; CHECK:       # %bb.0:853; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k1854; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]855; CHECK-NEXT:    retq856  %vec = load <4 x i32>, ptr %vp857  %shuf = shufflevector <4 x i32> %vec, <4 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>858  %cmp = icmp eq <16 x i32> %mask, zeroinitializer859  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer860  ret <16 x i32> %res861}862define <4 x i64> @test_2xi64_to_4xi64_mem(ptr %vp) {863; CHECK-LABEL: test_2xi64_to_4xi64_mem:864; CHECK:       # %bb.0:865; CHECK-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = mem[0,1,0,1]866; CHECK-NEXT:    retq867  %vec = load <2 x i64>, ptr %vp868  %res = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>869  ret <4 x i64> %res870}871define <4 x i64> @test_masked_2xi64_to_4xi64_mem_mask0(ptr %vp, <4 x i64> %default, <4 x i64> %mask) {872; CHECK-LABEL: test_masked_2xi64_to_4xi64_mem_mask0:873; CHECK:       # %bb.0:874; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k1875; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} ymm0 {%k1} = mem[0,1,0,1]876; CHECK-NEXT:    retq877  %vec = load <2 x i64>, ptr %vp878  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>879  %cmp = icmp eq <4 x i64> %mask, zeroinitializer880  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> %default881  ret <4 x i64> %res882}883 884define <4 x i64> @test_masked_z_2xi64_to_4xi64_mem_mask0(ptr %vp, <4 x i64> %mask) {885; CHECK-LABEL: test_masked_z_2xi64_to_4xi64_mem_mask0:886; CHECK:       # %bb.0:887; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k1888; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} ymm0 {%k1} {z} = mem[0,1,0,1]889; CHECK-NEXT:    retq890  %vec = load <2 x i64>, ptr %vp891  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>892  %cmp = icmp eq <4 x i64> %mask, zeroinitializer893  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> zeroinitializer894  ret <4 x i64> %res895}896define <4 x i64> @test_masked_2xi64_to_4xi64_mem_mask1(ptr %vp, <4 x i64> %default, <4 x i64> %mask) {897; CHECK-LABEL: test_masked_2xi64_to_4xi64_mem_mask1:898; CHECK:       # %bb.0:899; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k1900; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} ymm0 {%k1} = mem[0,1,0,1]901; CHECK-NEXT:    retq902  %vec = load <2 x i64>, ptr %vp903  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>904  %cmp = icmp eq <4 x i64> %mask, zeroinitializer905  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> %default906  ret <4 x i64> %res907}908 909define <4 x i64> @test_masked_z_2xi64_to_4xi64_mem_mask1(ptr %vp, <4 x i64> %mask) {910; CHECK-LABEL: test_masked_z_2xi64_to_4xi64_mem_mask1:911; CHECK:       # %bb.0:912; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k1913; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} ymm0 {%k1} {z} = mem[0,1,0,1]914; CHECK-NEXT:    retq915  %vec = load <2 x i64>, ptr %vp916  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>917  %cmp = icmp eq <4 x i64> %mask, zeroinitializer918  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> zeroinitializer919  ret <4 x i64> %res920}921define <4 x i64> @test_masked_2xi64_to_4xi64_mem_mask2(ptr %vp, <4 x i64> %default, <4 x i64> %mask) {922; CHECK-LABEL: test_masked_2xi64_to_4xi64_mem_mask2:923; CHECK:       # %bb.0:924; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k1925; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} ymm0 {%k1} = mem[0,1,0,1]926; CHECK-NEXT:    retq927  %vec = load <2 x i64>, ptr %vp928  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>929  %cmp = icmp eq <4 x i64> %mask, zeroinitializer930  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> %default931  ret <4 x i64> %res932}933 934define <4 x i64> @test_masked_z_2xi64_to_4xi64_mem_mask2(ptr %vp, <4 x i64> %mask) {935; CHECK-LABEL: test_masked_z_2xi64_to_4xi64_mem_mask2:936; CHECK:       # %bb.0:937; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k1938; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} ymm0 {%k1} {z} = mem[0,1,0,1]939; CHECK-NEXT:    retq940  %vec = load <2 x i64>, ptr %vp941  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>942  %cmp = icmp eq <4 x i64> %mask, zeroinitializer943  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> zeroinitializer944  ret <4 x i64> %res945}946define <4 x i64> @test_masked_2xi64_to_4xi64_mem_mask3(ptr %vp, <4 x i64> %default, <4 x i64> %mask) {947; CHECK-LABEL: test_masked_2xi64_to_4xi64_mem_mask3:948; CHECK:       # %bb.0:949; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k1950; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} ymm0 {%k1} = mem[0,1,0,1]951; CHECK-NEXT:    retq952  %vec = load <2 x i64>, ptr %vp953  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>954  %cmp = icmp eq <4 x i64> %mask, zeroinitializer955  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> %default956  ret <4 x i64> %res957}958 959define <4 x i64> @test_masked_z_2xi64_to_4xi64_mem_mask3(ptr %vp, <4 x i64> %mask) {960; CHECK-LABEL: test_masked_z_2xi64_to_4xi64_mem_mask3:961; CHECK:       # %bb.0:962; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k1963; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} ymm0 {%k1} {z} = mem[0,1,0,1]964; CHECK-NEXT:    retq965  %vec = load <2 x i64>, ptr %vp966  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 1, i32 0, i32 1>967  %cmp = icmp eq <4 x i64> %mask, zeroinitializer968  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> zeroinitializer969  ret <4 x i64> %res970}971define <8 x i64> @test_2xi64_to_8xi64_mem(ptr %vp) {972; CHECK-LABEL: test_2xi64_to_8xi64_mem:973; CHECK:       # %bb.0:974; CHECK-NEXT:    vbroadcasti32x4 {{.*#+}} zmm0 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]975; CHECK-NEXT:    retq976  %vec = load <2 x i64>, ptr %vp977  %res = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>978  ret <8 x i64> %res979}980define <8 x i64> @test_masked_2xi64_to_8xi64_mem_mask0(ptr %vp, <8 x i64> %default, <8 x i64> %mask) {981; CHECK-LABEL: test_masked_2xi64_to_8xi64_mem_mask0:982; CHECK:       # %bb.0:983; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k1984; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} zmm0 {%k1} = mem[0,1,0,1,0,1,0,1]985; CHECK-NEXT:    retq986  %vec = load <2 x i64>, ptr %vp987  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>988  %cmp = icmp eq <8 x i64> %mask, zeroinitializer989  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default990  ret <8 x i64> %res991}992 993define <8 x i64> @test_masked_z_2xi64_to_8xi64_mem_mask0(ptr %vp, <8 x i64> %mask) {994; CHECK-LABEL: test_masked_z_2xi64_to_8xi64_mem_mask0:995; CHECK:       # %bb.0:996; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k1997; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,0,1,0,1,0,1]998; CHECK-NEXT:    retq999  %vec = load <2 x i64>, ptr %vp1000  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1001  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1002  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer1003  ret <8 x i64> %res1004}1005define <8 x i64> @test_masked_2xi64_to_8xi64_mem_mask1(ptr %vp, <8 x i64> %default, <8 x i64> %mask) {1006; CHECK-LABEL: test_masked_2xi64_to_8xi64_mem_mask1:1007; CHECK:       # %bb.0:1008; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11009; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} zmm0 {%k1} = mem[0,1,0,1,0,1,0,1]1010; CHECK-NEXT:    retq1011  %vec = load <2 x i64>, ptr %vp1012  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1013  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1014  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default1015  ret <8 x i64> %res1016}1017 1018define <8 x i64> @test_masked_z_2xi64_to_8xi64_mem_mask1(ptr %vp, <8 x i64> %mask) {1019; CHECK-LABEL: test_masked_z_2xi64_to_8xi64_mem_mask1:1020; CHECK:       # %bb.0:1021; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k11022; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,0,1,0,1,0,1]1023; CHECK-NEXT:    retq1024  %vec = load <2 x i64>, ptr %vp1025  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1026  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1027  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer1028  ret <8 x i64> %res1029}1030define <8 x i64> @test_masked_2xi64_to_8xi64_mem_mask2(ptr %vp, <8 x i64> %default, <8 x i64> %mask) {1031; CHECK-LABEL: test_masked_2xi64_to_8xi64_mem_mask2:1032; CHECK:       # %bb.0:1033; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11034; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} zmm0 {%k1} = mem[0,1,0,1,0,1,0,1]1035; CHECK-NEXT:    retq1036  %vec = load <2 x i64>, ptr %vp1037  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1038  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1039  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default1040  ret <8 x i64> %res1041}1042 1043define <8 x i64> @test_masked_z_2xi64_to_8xi64_mem_mask2(ptr %vp, <8 x i64> %mask) {1044; CHECK-LABEL: test_masked_z_2xi64_to_8xi64_mem_mask2:1045; CHECK:       # %bb.0:1046; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k11047; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,0,1,0,1,0,1]1048; CHECK-NEXT:    retq1049  %vec = load <2 x i64>, ptr %vp1050  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1051  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1052  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer1053  ret <8 x i64> %res1054}1055define <8 x i64> @test_masked_2xi64_to_8xi64_mem_mask3(ptr %vp, <8 x i64> %default, <8 x i64> %mask) {1056; CHECK-LABEL: test_masked_2xi64_to_8xi64_mem_mask3:1057; CHECK:       # %bb.0:1058; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11059; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} zmm0 {%k1} = mem[0,1,0,1,0,1,0,1]1060; CHECK-NEXT:    retq1061  %vec = load <2 x i64>, ptr %vp1062  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1063  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1064  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default1065  ret <8 x i64> %res1066}1067 1068define <8 x i64> @test_masked_z_2xi64_to_8xi64_mem_mask3(ptr %vp, <8 x i64> %mask) {1069; CHECK-LABEL: test_masked_z_2xi64_to_8xi64_mem_mask3:1070; CHECK:       # %bb.0:1071; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k11072; CHECK-NEXT:    vbroadcasti64x2 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,0,1,0,1,0,1]1073; CHECK-NEXT:    retq1074  %vec = load <2 x i64>, ptr %vp1075  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1076  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1077  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer1078  ret <8 x i64> %res1079}1080define <16 x i32> @test_8xi32_to_16xi32_mem(ptr %vp) {1081; CHECK-LABEL: test_8xi32_to_16xi32_mem:1082; CHECK:       # %bb.0:1083; CHECK-NEXT:    vbroadcasti64x4 {{.*#+}} zmm0 = mem[0,1,2,3,0,1,2,3]1084; CHECK-NEXT:    retq1085  %vec = load <8 x i32>, ptr %vp1086  %res = shufflevector <8 x i32> %vec, <8 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1087  ret <16 x i32> %res1088}1089define <16 x i32> @test_masked_8xi32_to_16xi32_mem_mask0(ptr %vp, <16 x i32> %default, <16 x i32> %mask) {1090; CHECK-LABEL: test_masked_8xi32_to_16xi32_mem_mask0:1091; CHECK:       # %bb.0:1092; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k11093; CHECK-NEXT:    vbroadcasti32x8 {{.*#+}} zmm0 {%k1} = mem[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]1094; CHECK-NEXT:    retq1095  %vec = load <8 x i32>, ptr %vp1096  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1097  %cmp = icmp eq <16 x i32> %mask, zeroinitializer1098  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default1099  ret <16 x i32> %res1100}1101 1102define <16 x i32> @test_masked_z_8xi32_to_16xi32_mem_mask0(ptr %vp, <16 x i32> %mask) {1103; CHECK-LABEL: test_masked_z_8xi32_to_16xi32_mem_mask0:1104; CHECK:       # %bb.0:1105; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k11106; CHECK-NEXT:    vbroadcasti32x8 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]1107; CHECK-NEXT:    retq1108  %vec = load <8 x i32>, ptr %vp1109  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1110  %cmp = icmp eq <16 x i32> %mask, zeroinitializer1111  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer1112  ret <16 x i32> %res1113}1114define <16 x i32> @test_masked_8xi32_to_16xi32_mem_mask1(ptr %vp, <16 x i32> %default, <16 x i32> %mask) {1115; CHECK-LABEL: test_masked_8xi32_to_16xi32_mem_mask1:1116; CHECK:       # %bb.0:1117; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k11118; CHECK-NEXT:    vbroadcasti32x8 {{.*#+}} zmm0 {%k1} = mem[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]1119; CHECK-NEXT:    retq1120  %vec = load <8 x i32>, ptr %vp1121  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1122  %cmp = icmp eq <16 x i32> %mask, zeroinitializer1123  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default1124  ret <16 x i32> %res1125}1126 1127define <16 x i32> @test_masked_z_8xi32_to_16xi32_mem_mask1(ptr %vp, <16 x i32> %mask) {1128; CHECK-LABEL: test_masked_z_8xi32_to_16xi32_mem_mask1:1129; CHECK:       # %bb.0:1130; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k11131; CHECK-NEXT:    vbroadcasti32x8 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]1132; CHECK-NEXT:    retq1133  %vec = load <8 x i32>, ptr %vp1134  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1135  %cmp = icmp eq <16 x i32> %mask, zeroinitializer1136  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer1137  ret <16 x i32> %res1138}1139define <16 x i32> @test_masked_8xi32_to_16xi32_mem_mask2(ptr %vp, <16 x i32> %default, <16 x i32> %mask) {1140; CHECK-LABEL: test_masked_8xi32_to_16xi32_mem_mask2:1141; CHECK:       # %bb.0:1142; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k11143; CHECK-NEXT:    vbroadcasti32x8 {{.*#+}} zmm0 {%k1} = mem[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]1144; CHECK-NEXT:    retq1145  %vec = load <8 x i32>, ptr %vp1146  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1147  %cmp = icmp eq <16 x i32> %mask, zeroinitializer1148  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default1149  ret <16 x i32> %res1150}1151 1152define <16 x i32> @test_masked_z_8xi32_to_16xi32_mem_mask2(ptr %vp, <16 x i32> %mask) {1153; CHECK-LABEL: test_masked_z_8xi32_to_16xi32_mem_mask2:1154; CHECK:       # %bb.0:1155; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k11156; CHECK-NEXT:    vbroadcasti32x8 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]1157; CHECK-NEXT:    retq1158  %vec = load <8 x i32>, ptr %vp1159  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1160  %cmp = icmp eq <16 x i32> %mask, zeroinitializer1161  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer1162  ret <16 x i32> %res1163}1164define <16 x i32> @test_masked_8xi32_to_16xi32_mem_mask3(ptr %vp, <16 x i32> %default, <16 x i32> %mask) {1165; CHECK-LABEL: test_masked_8xi32_to_16xi32_mem_mask3:1166; CHECK:       # %bb.0:1167; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k11168; CHECK-NEXT:    vbroadcasti32x8 {{.*#+}} zmm0 {%k1} = mem[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]1169; CHECK-NEXT:    retq1170  %vec = load <8 x i32>, ptr %vp1171  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1172  %cmp = icmp eq <16 x i32> %mask, zeroinitializer1173  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default1174  ret <16 x i32> %res1175}1176 1177define <16 x i32> @test_masked_z_8xi32_to_16xi32_mem_mask3(ptr %vp, <16 x i32> %mask) {1178; CHECK-LABEL: test_masked_z_8xi32_to_16xi32_mem_mask3:1179; CHECK:       # %bb.0:1180; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k11181; CHECK-NEXT:    vbroadcasti32x8 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]1182; CHECK-NEXT:    retq1183  %vec = load <8 x i32>, ptr %vp1184  %shuf = shufflevector <8 x i32> %vec, <8 x i32> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1185  %cmp = icmp eq <16 x i32> %mask, zeroinitializer1186  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer1187  ret <16 x i32> %res1188}1189define <8 x i64> @test_4xi64_to_8xi64_mem(ptr %vp) {1190; CHECK-LABEL: test_4xi64_to_8xi64_mem:1191; CHECK:       # %bb.0:1192; CHECK-NEXT:    vbroadcasti64x4 {{.*#+}} zmm0 = mem[0,1,2,3,0,1,2,3]1193; CHECK-NEXT:    retq1194  %vec = load <4 x i64>, ptr %vp1195  %res = shufflevector <4 x i64> %vec, <4 x i64> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>1196  ret <8 x i64> %res1197}1198define <8 x i64> @test_masked_4xi64_to_8xi64_mem_mask0(ptr %vp, <8 x i64> %default, <8 x i64> %mask) {1199; CHECK-LABEL: test_masked_4xi64_to_8xi64_mem_mask0:1200; CHECK:       # %bb.0:1201; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11202; CHECK-NEXT:    vbroadcasti64x4 {{.*#+}} zmm0 {%k1} = mem[0,1,2,3,0,1,2,3]1203; CHECK-NEXT:    retq1204  %vec = load <4 x i64>, ptr %vp1205  %shuf = shufflevector <4 x i64> %vec, <4 x i64> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>1206  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1207  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default1208  ret <8 x i64> %res1209}1210 1211define <8 x i64> @test_masked_z_4xi64_to_8xi64_mem_mask0(ptr %vp, <8 x i64> %mask) {1212; CHECK-LABEL: test_masked_z_4xi64_to_8xi64_mem_mask0:1213; CHECK:       # %bb.0:1214; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k11215; CHECK-NEXT:    vbroadcasti64x4 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,2,3,0,1,2,3]1216; CHECK-NEXT:    retq1217  %vec = load <4 x i64>, ptr %vp1218  %shuf = shufflevector <4 x i64> %vec, <4 x i64> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>1219  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1220  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer1221  ret <8 x i64> %res1222}1223define <8 x i64> @test_masked_4xi64_to_8xi64_mem_mask1(ptr %vp, <8 x i64> %default, <8 x i64> %mask) {1224; CHECK-LABEL: test_masked_4xi64_to_8xi64_mem_mask1:1225; CHECK:       # %bb.0:1226; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11227; CHECK-NEXT:    vbroadcasti64x4 {{.*#+}} zmm0 {%k1} = mem[0,1,2,3,0,1,2,3]1228; CHECK-NEXT:    retq1229  %vec = load <4 x i64>, ptr %vp1230  %shuf = shufflevector <4 x i64> %vec, <4 x i64> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>1231  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1232  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default1233  ret <8 x i64> %res1234}1235 1236define <8 x i64> @test_masked_z_4xi64_to_8xi64_mem_mask1(ptr %vp, <8 x i64> %mask) {1237; CHECK-LABEL: test_masked_z_4xi64_to_8xi64_mem_mask1:1238; CHECK:       # %bb.0:1239; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k11240; CHECK-NEXT:    vbroadcasti64x4 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,2,3,0,1,2,3]1241; CHECK-NEXT:    retq1242  %vec = load <4 x i64>, ptr %vp1243  %shuf = shufflevector <4 x i64> %vec, <4 x i64> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>1244  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1245  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer1246  ret <8 x i64> %res1247}1248define <8 x i64> @test_masked_4xi64_to_8xi64_mem_mask2(ptr %vp, <8 x i64> %default, <8 x i64> %mask) {1249; CHECK-LABEL: test_masked_4xi64_to_8xi64_mem_mask2:1250; CHECK:       # %bb.0:1251; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11252; CHECK-NEXT:    vbroadcasti64x4 {{.*#+}} zmm0 {%k1} = mem[0,1,2,3,0,1,2,3]1253; CHECK-NEXT:    retq1254  %vec = load <4 x i64>, ptr %vp1255  %shuf = shufflevector <4 x i64> %vec, <4 x i64> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>1256  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1257  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default1258  ret <8 x i64> %res1259}1260 1261define <8 x i64> @test_masked_z_4xi64_to_8xi64_mem_mask2(ptr %vp, <8 x i64> %mask) {1262; CHECK-LABEL: test_masked_z_4xi64_to_8xi64_mem_mask2:1263; CHECK:       # %bb.0:1264; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k11265; CHECK-NEXT:    vbroadcasti64x4 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,2,3,0,1,2,3]1266; CHECK-NEXT:    retq1267  %vec = load <4 x i64>, ptr %vp1268  %shuf = shufflevector <4 x i64> %vec, <4 x i64> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>1269  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1270  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer1271  ret <8 x i64> %res1272}1273define <8 x i64> @test_masked_4xi64_to_8xi64_mem_mask3(ptr %vp, <8 x i64> %default, <8 x i64> %mask) {1274; CHECK-LABEL: test_masked_4xi64_to_8xi64_mem_mask3:1275; CHECK:       # %bb.0:1276; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11277; CHECK-NEXT:    vbroadcasti64x4 {{.*#+}} zmm0 {%k1} = mem[0,1,2,3,0,1,2,3]1278; CHECK-NEXT:    retq1279  %vec = load <4 x i64>, ptr %vp1280  %shuf = shufflevector <4 x i64> %vec, <4 x i64> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>1281  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1282  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default1283  ret <8 x i64> %res1284}1285 1286define <8 x i64> @test_masked_z_4xi64_to_8xi64_mem_mask3(ptr %vp, <8 x i64> %mask) {1287; CHECK-LABEL: test_masked_z_4xi64_to_8xi64_mem_mask3:1288; CHECK:       # %bb.0:1289; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k11290; CHECK-NEXT:    vbroadcasti64x4 {{.*#+}} zmm0 {%k1} {z} = mem[0,1,2,3,0,1,2,3]1291; CHECK-NEXT:    retq1292  %vec = load <4 x i64>, ptr %vp1293  %shuf = shufflevector <4 x i64> %vec, <4 x i64> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>1294  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1295  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer1296  ret <8 x i64> %res1297}1298