brintos

brintos / llvm-project-archived public Read only

0
0
Text · 132.8 KiB · f614739 Raw
2624 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,+avx512bw %s -o - | FileCheck %s3 4define <16 x i8> @test_i8_to_16(i8 %s) {5; CHECK-LABEL: test_i8_to_16:6; CHECK:       # %bb.0:7; CHECK-NEXT:    vpbroadcastb %edi, %xmm08; CHECK-NEXT:    retq9  %vec = insertelement <2 x i8> undef, i8 %s, i32 010  %res = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>11  ret <16 x i8> %res12}13define <16 x i8> @test_masked_i8_to_16_mask0(i8 %s, <16 x i8> %default, <16 x i8> %mask) {14; CHECK-LABEL: test_masked_i8_to_16_mask0:15; CHECK:       # %bb.0:16; CHECK-NEXT:    vptestnmb %xmm1, %xmm1, %k117; CHECK-NEXT:    vpbroadcastb %edi, %xmm0 {%k1}18; CHECK-NEXT:    retq19  %vec = insertelement <2 x i8> undef, i8 %s, i32 020  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>21  %cmp = icmp eq <16 x i8> %mask, zeroinitializer22  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> %default23  ret <16 x i8> %res24}25 26define <16 x i8> @test_masked_z_i8_to_16_mask0(i8 %s, <16 x i8> %mask) {27; CHECK-LABEL: test_masked_z_i8_to_16_mask0:28; CHECK:       # %bb.0:29; CHECK-NEXT:    vptestnmb %xmm0, %xmm0, %k130; CHECK-NEXT:    vpbroadcastb %edi, %xmm0 {%k1} {z}31; CHECK-NEXT:    retq32  %vec = insertelement <2 x i8> undef, i8 %s, i32 033  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>34  %cmp = icmp eq <16 x i8> %mask, zeroinitializer35  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> zeroinitializer36  ret <16 x i8> %res37}38define <16 x i8> @test_masked_i8_to_16_mask1(i8 %s, <16 x i8> %default, <16 x i8> %mask) {39; CHECK-LABEL: test_masked_i8_to_16_mask1:40; CHECK:       # %bb.0:41; CHECK-NEXT:    vptestnmb %xmm1, %xmm1, %k142; CHECK-NEXT:    vpbroadcastb %edi, %xmm0 {%k1}43; CHECK-NEXT:    retq44  %vec = insertelement <2 x i8> undef, i8 %s, i32 045  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>46  %cmp = icmp eq <16 x i8> %mask, zeroinitializer47  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> %default48  ret <16 x i8> %res49}50 51define <16 x i8> @test_masked_z_i8_to_16_mask1(i8 %s, <16 x i8> %mask) {52; CHECK-LABEL: test_masked_z_i8_to_16_mask1:53; CHECK:       # %bb.0:54; CHECK-NEXT:    vptestnmb %xmm0, %xmm0, %k155; CHECK-NEXT:    vpbroadcastb %edi, %xmm0 {%k1} {z}56; CHECK-NEXT:    retq57  %vec = insertelement <2 x i8> undef, i8 %s, i32 058  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>59  %cmp = icmp eq <16 x i8> %mask, zeroinitializer60  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> zeroinitializer61  ret <16 x i8> %res62}63define <16 x i8> @test_masked_i8_to_16_mask2(i8 %s, <16 x i8> %default, <16 x i8> %mask) {64; CHECK-LABEL: test_masked_i8_to_16_mask2:65; CHECK:       # %bb.0:66; CHECK-NEXT:    vptestnmb %xmm1, %xmm1, %k167; CHECK-NEXT:    vpbroadcastb %edi, %xmm0 {%k1}68; CHECK-NEXT:    retq69  %vec = insertelement <2 x i8> undef, i8 %s, i32 070  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>71  %cmp = icmp eq <16 x i8> %mask, zeroinitializer72  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> %default73  ret <16 x i8> %res74}75 76define <16 x i8> @test_masked_z_i8_to_16_mask2(i8 %s, <16 x i8> %mask) {77; CHECK-LABEL: test_masked_z_i8_to_16_mask2:78; CHECK:       # %bb.0:79; CHECK-NEXT:    vptestnmb %xmm0, %xmm0, %k180; CHECK-NEXT:    vpbroadcastb %edi, %xmm0 {%k1} {z}81; CHECK-NEXT:    retq82  %vec = insertelement <2 x i8> undef, i8 %s, i32 083  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>84  %cmp = icmp eq <16 x i8> %mask, zeroinitializer85  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> zeroinitializer86  ret <16 x i8> %res87}88define <16 x i8> @test_masked_i8_to_16_mask3(i8 %s, <16 x i8> %default, <16 x i8> %mask) {89; CHECK-LABEL: test_masked_i8_to_16_mask3:90; CHECK:       # %bb.0:91; CHECK-NEXT:    vptestnmb %xmm1, %xmm1, %k192; CHECK-NEXT:    vpbroadcastb %edi, %xmm0 {%k1}93; CHECK-NEXT:    retq94  %vec = insertelement <2 x i8> undef, i8 %s, i32 095  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>96  %cmp = icmp eq <16 x i8> %mask, zeroinitializer97  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> %default98  ret <16 x i8> %res99}100 101define <16 x i8> @test_masked_z_i8_to_16_mask3(i8 %s, <16 x i8> %mask) {102; CHECK-LABEL: test_masked_z_i8_to_16_mask3:103; CHECK:       # %bb.0:104; CHECK-NEXT:    vptestnmb %xmm0, %xmm0, %k1105; CHECK-NEXT:    vpbroadcastb %edi, %xmm0 {%k1} {z}106; CHECK-NEXT:    retq107  %vec = insertelement <2 x i8> undef, i8 %s, i32 0108  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>109  %cmp = icmp eq <16 x i8> %mask, zeroinitializer110  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> zeroinitializer111  ret <16 x i8> %res112}113define <32 x i8> @test_i8_to_32(i8 %s) {114; CHECK-LABEL: test_i8_to_32:115; CHECK:       # %bb.0:116; CHECK-NEXT:    vpbroadcastb %edi, %ymm0117; CHECK-NEXT:    retq118  %vec = insertelement <2 x i8> undef, i8 %s, i32 0119  %res = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>120  ret <32 x i8> %res121}122define <32 x i8> @test_masked_i8_to_32_mask0(i8 %s, <32 x i8> %default, <32 x i8> %mask) {123; CHECK-LABEL: test_masked_i8_to_32_mask0:124; CHECK:       # %bb.0:125; CHECK-NEXT:    vptestnmb %ymm1, %ymm1, %k1126; CHECK-NEXT:    vpbroadcastb %edi, %ymm0 {%k1}127; CHECK-NEXT:    retq128  %vec = insertelement <2 x i8> undef, i8 %s, i32 0129  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>130  %cmp = icmp eq <32 x i8> %mask, zeroinitializer131  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> %default132  ret <32 x i8> %res133}134 135define <32 x i8> @test_masked_z_i8_to_32_mask0(i8 %s, <32 x i8> %mask) {136; CHECK-LABEL: test_masked_z_i8_to_32_mask0:137; CHECK:       # %bb.0:138; CHECK-NEXT:    vptestnmb %ymm0, %ymm0, %k1139; CHECK-NEXT:    vpbroadcastb %edi, %ymm0 {%k1} {z}140; CHECK-NEXT:    retq141  %vec = insertelement <2 x i8> undef, i8 %s, i32 0142  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>143  %cmp = icmp eq <32 x i8> %mask, zeroinitializer144  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> zeroinitializer145  ret <32 x i8> %res146}147define <32 x i8> @test_masked_i8_to_32_mask1(i8 %s, <32 x i8> %default, <32 x i8> %mask) {148; CHECK-LABEL: test_masked_i8_to_32_mask1:149; CHECK:       # %bb.0:150; CHECK-NEXT:    vptestnmb %ymm1, %ymm1, %k1151; CHECK-NEXT:    vpbroadcastb %edi, %ymm0 {%k1}152; CHECK-NEXT:    retq153  %vec = insertelement <2 x i8> undef, i8 %s, i32 0154  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>155  %cmp = icmp eq <32 x i8> %mask, zeroinitializer156  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> %default157  ret <32 x i8> %res158}159 160define <32 x i8> @test_masked_z_i8_to_32_mask1(i8 %s, <32 x i8> %mask) {161; CHECK-LABEL: test_masked_z_i8_to_32_mask1:162; CHECK:       # %bb.0:163; CHECK-NEXT:    vptestnmb %ymm0, %ymm0, %k1164; CHECK-NEXT:    vpbroadcastb %edi, %ymm0 {%k1} {z}165; CHECK-NEXT:    retq166  %vec = insertelement <2 x i8> undef, i8 %s, i32 0167  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>168  %cmp = icmp eq <32 x i8> %mask, zeroinitializer169  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> zeroinitializer170  ret <32 x i8> %res171}172define <32 x i8> @test_masked_i8_to_32_mask2(i8 %s, <32 x i8> %default, <32 x i8> %mask) {173; CHECK-LABEL: test_masked_i8_to_32_mask2:174; CHECK:       # %bb.0:175; CHECK-NEXT:    vptestnmb %ymm1, %ymm1, %k1176; CHECK-NEXT:    vpbroadcastb %edi, %ymm0 {%k1}177; CHECK-NEXT:    retq178  %vec = insertelement <2 x i8> undef, i8 %s, i32 0179  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>180  %cmp = icmp eq <32 x i8> %mask, zeroinitializer181  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> %default182  ret <32 x i8> %res183}184 185define <32 x i8> @test_masked_z_i8_to_32_mask2(i8 %s, <32 x i8> %mask) {186; CHECK-LABEL: test_masked_z_i8_to_32_mask2:187; CHECK:       # %bb.0:188; CHECK-NEXT:    vptestnmb %ymm0, %ymm0, %k1189; CHECK-NEXT:    vpbroadcastb %edi, %ymm0 {%k1} {z}190; CHECK-NEXT:    retq191  %vec = insertelement <2 x i8> undef, i8 %s, i32 0192  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>193  %cmp = icmp eq <32 x i8> %mask, zeroinitializer194  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> zeroinitializer195  ret <32 x i8> %res196}197define <32 x i8> @test_masked_i8_to_32_mask3(i8 %s, <32 x i8> %default, <32 x i8> %mask) {198; CHECK-LABEL: test_masked_i8_to_32_mask3:199; CHECK:       # %bb.0:200; CHECK-NEXT:    vptestnmb %ymm1, %ymm1, %k1201; CHECK-NEXT:    vpbroadcastb %edi, %ymm0 {%k1}202; CHECK-NEXT:    retq203  %vec = insertelement <2 x i8> undef, i8 %s, i32 0204  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>205  %cmp = icmp eq <32 x i8> %mask, zeroinitializer206  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> %default207  ret <32 x i8> %res208}209 210define <32 x i8> @test_masked_z_i8_to_32_mask3(i8 %s, <32 x i8> %mask) {211; CHECK-LABEL: test_masked_z_i8_to_32_mask3:212; CHECK:       # %bb.0:213; CHECK-NEXT:    vptestnmb %ymm0, %ymm0, %k1214; CHECK-NEXT:    vpbroadcastb %edi, %ymm0 {%k1} {z}215; CHECK-NEXT:    retq216  %vec = insertelement <2 x i8> undef, i8 %s, i32 0217  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>218  %cmp = icmp eq <32 x i8> %mask, zeroinitializer219  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> zeroinitializer220  ret <32 x i8> %res221}222define <64 x i8> @test_i8_to_64(i8 %s) {223; CHECK-LABEL: test_i8_to_64:224; CHECK:       # %bb.0:225; CHECK-NEXT:    vpbroadcastb %edi, %zmm0226; CHECK-NEXT:    retq227  %vec = insertelement <2 x i8> undef, i8 %s, i32 0228  %res = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>229  ret <64 x i8> %res230}231define <64 x i8> @test_masked_i8_to_64_mask0(i8 %s, <64 x i8> %default, <64 x i8> %mask) {232; CHECK-LABEL: test_masked_i8_to_64_mask0:233; CHECK:       # %bb.0:234; CHECK-NEXT:    vptestnmb %zmm1, %zmm1, %k1235; CHECK-NEXT:    vpbroadcastb %edi, %zmm0 {%k1}236; CHECK-NEXT:    retq237  %vec = insertelement <2 x i8> undef, i8 %s, i32 0238  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>239  %cmp = icmp eq <64 x i8> %mask, zeroinitializer240  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> %default241  ret <64 x i8> %res242}243 244define <64 x i8> @test_masked_z_i8_to_64_mask0(i8 %s, <64 x i8> %mask) {245; CHECK-LABEL: test_masked_z_i8_to_64_mask0:246; CHECK:       # %bb.0:247; CHECK-NEXT:    vptestnmb %zmm0, %zmm0, %k1248; CHECK-NEXT:    vpbroadcastb %edi, %zmm0 {%k1} {z}249; CHECK-NEXT:    retq250  %vec = insertelement <2 x i8> undef, i8 %s, i32 0251  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>252  %cmp = icmp eq <64 x i8> %mask, zeroinitializer253  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> zeroinitializer254  ret <64 x i8> %res255}256define <64 x i8> @test_masked_i8_to_64_mask1(i8 %s, <64 x i8> %default, <64 x i8> %mask) {257; CHECK-LABEL: test_masked_i8_to_64_mask1:258; CHECK:       # %bb.0:259; CHECK-NEXT:    vptestnmb %zmm1, %zmm1, %k1260; CHECK-NEXT:    vpbroadcastb %edi, %zmm0 {%k1}261; CHECK-NEXT:    retq262  %vec = insertelement <2 x i8> undef, i8 %s, i32 0263  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>264  %cmp = icmp eq <64 x i8> %mask, zeroinitializer265  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> %default266  ret <64 x i8> %res267}268 269define <64 x i8> @test_masked_z_i8_to_64_mask1(i8 %s, <64 x i8> %mask) {270; CHECK-LABEL: test_masked_z_i8_to_64_mask1:271; CHECK:       # %bb.0:272; CHECK-NEXT:    vptestnmb %zmm0, %zmm0, %k1273; CHECK-NEXT:    vpbroadcastb %edi, %zmm0 {%k1} {z}274; CHECK-NEXT:    retq275  %vec = insertelement <2 x i8> undef, i8 %s, i32 0276  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>277  %cmp = icmp eq <64 x i8> %mask, zeroinitializer278  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> zeroinitializer279  ret <64 x i8> %res280}281define <64 x i8> @test_masked_i8_to_64_mask2(i8 %s, <64 x i8> %default, <64 x i8> %mask) {282; CHECK-LABEL: test_masked_i8_to_64_mask2:283; CHECK:       # %bb.0:284; CHECK-NEXT:    vptestnmb %zmm1, %zmm1, %k1285; CHECK-NEXT:    vpbroadcastb %edi, %zmm0 {%k1}286; CHECK-NEXT:    retq287  %vec = insertelement <2 x i8> undef, i8 %s, i32 0288  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>289  %cmp = icmp eq <64 x i8> %mask, zeroinitializer290  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> %default291  ret <64 x i8> %res292}293 294define <64 x i8> @test_masked_z_i8_to_64_mask2(i8 %s, <64 x i8> %mask) {295; CHECK-LABEL: test_masked_z_i8_to_64_mask2:296; CHECK:       # %bb.0:297; CHECK-NEXT:    vptestnmb %zmm0, %zmm0, %k1298; CHECK-NEXT:    vpbroadcastb %edi, %zmm0 {%k1} {z}299; CHECK-NEXT:    retq300  %vec = insertelement <2 x i8> undef, i8 %s, i32 0301  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>302  %cmp = icmp eq <64 x i8> %mask, zeroinitializer303  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> zeroinitializer304  ret <64 x i8> %res305}306define <64 x i8> @test_masked_i8_to_64_mask3(i8 %s, <64 x i8> %default, <64 x i8> %mask) {307; CHECK-LABEL: test_masked_i8_to_64_mask3:308; CHECK:       # %bb.0:309; CHECK-NEXT:    vptestnmb %zmm1, %zmm1, %k1310; CHECK-NEXT:    vpbroadcastb %edi, %zmm0 {%k1}311; CHECK-NEXT:    retq312  %vec = insertelement <2 x i8> undef, i8 %s, i32 0313  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>314  %cmp = icmp eq <64 x i8> %mask, zeroinitializer315  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> %default316  ret <64 x i8> %res317}318 319define <64 x i8> @test_masked_z_i8_to_64_mask3(i8 %s, <64 x i8> %mask) {320; CHECK-LABEL: test_masked_z_i8_to_64_mask3:321; CHECK:       # %bb.0:322; CHECK-NEXT:    vptestnmb %zmm0, %zmm0, %k1323; CHECK-NEXT:    vpbroadcastb %edi, %zmm0 {%k1} {z}324; CHECK-NEXT:    retq325  %vec = insertelement <2 x i8> undef, i8 %s, i32 0326  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>327  %cmp = icmp eq <64 x i8> %mask, zeroinitializer328  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> zeroinitializer329  ret <64 x i8> %res330}331define <8 x i16> @test_i16_to_8(i16 %s) {332; CHECK-LABEL: test_i16_to_8:333; CHECK:       # %bb.0:334; CHECK-NEXT:    vpbroadcastw %edi, %xmm0335; CHECK-NEXT:    retq336  %vec = insertelement <2 x i16> undef, i16 %s, i32 0337  %res = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>338  ret <8 x i16> %res339}340define <8 x i16> @test_masked_i16_to_8_mask0(i16 %s, <8 x i16> %default, <8 x i16> %mask) {341; CHECK-LABEL: test_masked_i16_to_8_mask0:342; CHECK:       # %bb.0:343; CHECK-NEXT:    vptestnmw %xmm1, %xmm1, %k1344; CHECK-NEXT:    vpbroadcastw %edi, %xmm0 {%k1}345; CHECK-NEXT:    retq346  %vec = insertelement <2 x i16> undef, i16 %s, i32 0347  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>348  %cmp = icmp eq <8 x i16> %mask, zeroinitializer349  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> %default350  ret <8 x i16> %res351}352 353define <8 x i16> @test_masked_z_i16_to_8_mask0(i16 %s, <8 x i16> %mask) {354; CHECK-LABEL: test_masked_z_i16_to_8_mask0:355; CHECK:       # %bb.0:356; CHECK-NEXT:    vptestnmw %xmm0, %xmm0, %k1357; CHECK-NEXT:    vpbroadcastw %edi, %xmm0 {%k1} {z}358; CHECK-NEXT:    retq359  %vec = insertelement <2 x i16> undef, i16 %s, i32 0360  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>361  %cmp = icmp eq <8 x i16> %mask, zeroinitializer362  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> zeroinitializer363  ret <8 x i16> %res364}365define <8 x i16> @test_masked_i16_to_8_mask1(i16 %s, <8 x i16> %default, <8 x i16> %mask) {366; CHECK-LABEL: test_masked_i16_to_8_mask1:367; CHECK:       # %bb.0:368; CHECK-NEXT:    vptestnmw %xmm1, %xmm1, %k1369; CHECK-NEXT:    vpbroadcastw %edi, %xmm0 {%k1}370; CHECK-NEXT:    retq371  %vec = insertelement <2 x i16> undef, i16 %s, i32 0372  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>373  %cmp = icmp eq <8 x i16> %mask, zeroinitializer374  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> %default375  ret <8 x i16> %res376}377 378define <8 x i16> @test_masked_z_i16_to_8_mask1(i16 %s, <8 x i16> %mask) {379; CHECK-LABEL: test_masked_z_i16_to_8_mask1:380; CHECK:       # %bb.0:381; CHECK-NEXT:    vptestnmw %xmm0, %xmm0, %k1382; CHECK-NEXT:    vpbroadcastw %edi, %xmm0 {%k1} {z}383; CHECK-NEXT:    retq384  %vec = insertelement <2 x i16> undef, i16 %s, i32 0385  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>386  %cmp = icmp eq <8 x i16> %mask, zeroinitializer387  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> zeroinitializer388  ret <8 x i16> %res389}390define <8 x i16> @test_masked_i16_to_8_mask2(i16 %s, <8 x i16> %default, <8 x i16> %mask) {391; CHECK-LABEL: test_masked_i16_to_8_mask2:392; CHECK:       # %bb.0:393; CHECK-NEXT:    vptestnmw %xmm1, %xmm1, %k1394; CHECK-NEXT:    vpbroadcastw %edi, %xmm0 {%k1}395; CHECK-NEXT:    retq396  %vec = insertelement <2 x i16> undef, i16 %s, i32 0397  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>398  %cmp = icmp eq <8 x i16> %mask, zeroinitializer399  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> %default400  ret <8 x i16> %res401}402 403define <8 x i16> @test_masked_z_i16_to_8_mask2(i16 %s, <8 x i16> %mask) {404; CHECK-LABEL: test_masked_z_i16_to_8_mask2:405; CHECK:       # %bb.0:406; CHECK-NEXT:    vptestnmw %xmm0, %xmm0, %k1407; CHECK-NEXT:    vpbroadcastw %edi, %xmm0 {%k1} {z}408; CHECK-NEXT:    retq409  %vec = insertelement <2 x i16> undef, i16 %s, i32 0410  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>411  %cmp = icmp eq <8 x i16> %mask, zeroinitializer412  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> zeroinitializer413  ret <8 x i16> %res414}415define <8 x i16> @test_masked_i16_to_8_mask3(i16 %s, <8 x i16> %default, <8 x i16> %mask) {416; CHECK-LABEL: test_masked_i16_to_8_mask3:417; CHECK:       # %bb.0:418; CHECK-NEXT:    vptestnmw %xmm1, %xmm1, %k1419; CHECK-NEXT:    vpbroadcastw %edi, %xmm0 {%k1}420; CHECK-NEXT:    retq421  %vec = insertelement <2 x i16> undef, i16 %s, i32 0422  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>423  %cmp = icmp eq <8 x i16> %mask, zeroinitializer424  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> %default425  ret <8 x i16> %res426}427 428define <8 x i16> @test_masked_z_i16_to_8_mask3(i16 %s, <8 x i16> %mask) {429; CHECK-LABEL: test_masked_z_i16_to_8_mask3:430; CHECK:       # %bb.0:431; CHECK-NEXT:    vptestnmw %xmm0, %xmm0, %k1432; CHECK-NEXT:    vpbroadcastw %edi, %xmm0 {%k1} {z}433; CHECK-NEXT:    retq434  %vec = insertelement <2 x i16> undef, i16 %s, i32 0435  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>436  %cmp = icmp eq <8 x i16> %mask, zeroinitializer437  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> zeroinitializer438  ret <8 x i16> %res439}440define <16 x i16> @test_i16_to_16(i16 %s) {441; CHECK-LABEL: test_i16_to_16:442; CHECK:       # %bb.0:443; CHECK-NEXT:    vpbroadcastw %edi, %ymm0444; CHECK-NEXT:    retq445  %vec = insertelement <2 x i16> undef, i16 %s, i32 0446  %res = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>447  ret <16 x i16> %res448}449define <16 x i16> @test_masked_i16_to_16_mask0(i16 %s, <16 x i16> %default, <16 x i16> %mask) {450; CHECK-LABEL: test_masked_i16_to_16_mask0:451; CHECK:       # %bb.0:452; CHECK-NEXT:    vptestnmw %ymm1, %ymm1, %k1453; CHECK-NEXT:    vpbroadcastw %edi, %ymm0 {%k1}454; CHECK-NEXT:    retq455  %vec = insertelement <2 x i16> undef, i16 %s, i32 0456  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>457  %cmp = icmp eq <16 x i16> %mask, zeroinitializer458  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> %default459  ret <16 x i16> %res460}461 462define <16 x i16> @test_masked_z_i16_to_16_mask0(i16 %s, <16 x i16> %mask) {463; CHECK-LABEL: test_masked_z_i16_to_16_mask0:464; CHECK:       # %bb.0:465; CHECK-NEXT:    vptestnmw %ymm0, %ymm0, %k1466; CHECK-NEXT:    vpbroadcastw %edi, %ymm0 {%k1} {z}467; CHECK-NEXT:    retq468  %vec = insertelement <2 x i16> undef, i16 %s, i32 0469  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>470  %cmp = icmp eq <16 x i16> %mask, zeroinitializer471  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> zeroinitializer472  ret <16 x i16> %res473}474define <16 x i16> @test_masked_i16_to_16_mask1(i16 %s, <16 x i16> %default, <16 x i16> %mask) {475; CHECK-LABEL: test_masked_i16_to_16_mask1:476; CHECK:       # %bb.0:477; CHECK-NEXT:    vptestnmw %ymm1, %ymm1, %k1478; CHECK-NEXT:    vpbroadcastw %edi, %ymm0 {%k1}479; CHECK-NEXT:    retq480  %vec = insertelement <2 x i16> undef, i16 %s, i32 0481  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>482  %cmp = icmp eq <16 x i16> %mask, zeroinitializer483  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> %default484  ret <16 x i16> %res485}486 487define <16 x i16> @test_masked_z_i16_to_16_mask1(i16 %s, <16 x i16> %mask) {488; CHECK-LABEL: test_masked_z_i16_to_16_mask1:489; CHECK:       # %bb.0:490; CHECK-NEXT:    vptestnmw %ymm0, %ymm0, %k1491; CHECK-NEXT:    vpbroadcastw %edi, %ymm0 {%k1} {z}492; CHECK-NEXT:    retq493  %vec = insertelement <2 x i16> undef, i16 %s, i32 0494  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>495  %cmp = icmp eq <16 x i16> %mask, zeroinitializer496  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> zeroinitializer497  ret <16 x i16> %res498}499define <16 x i16> @test_masked_i16_to_16_mask2(i16 %s, <16 x i16> %default, <16 x i16> %mask) {500; CHECK-LABEL: test_masked_i16_to_16_mask2:501; CHECK:       # %bb.0:502; CHECK-NEXT:    vptestnmw %ymm1, %ymm1, %k1503; CHECK-NEXT:    vpbroadcastw %edi, %ymm0 {%k1}504; CHECK-NEXT:    retq505  %vec = insertelement <2 x i16> undef, i16 %s, i32 0506  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>507  %cmp = icmp eq <16 x i16> %mask, zeroinitializer508  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> %default509  ret <16 x i16> %res510}511 512define <16 x i16> @test_masked_z_i16_to_16_mask2(i16 %s, <16 x i16> %mask) {513; CHECK-LABEL: test_masked_z_i16_to_16_mask2:514; CHECK:       # %bb.0:515; CHECK-NEXT:    vptestnmw %ymm0, %ymm0, %k1516; CHECK-NEXT:    vpbroadcastw %edi, %ymm0 {%k1} {z}517; CHECK-NEXT:    retq518  %vec = insertelement <2 x i16> undef, i16 %s, i32 0519  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>520  %cmp = icmp eq <16 x i16> %mask, zeroinitializer521  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> zeroinitializer522  ret <16 x i16> %res523}524define <16 x i16> @test_masked_i16_to_16_mask3(i16 %s, <16 x i16> %default, <16 x i16> %mask) {525; CHECK-LABEL: test_masked_i16_to_16_mask3:526; CHECK:       # %bb.0:527; CHECK-NEXT:    vptestnmw %ymm1, %ymm1, %k1528; CHECK-NEXT:    vpbroadcastw %edi, %ymm0 {%k1}529; CHECK-NEXT:    retq530  %vec = insertelement <2 x i16> undef, i16 %s, i32 0531  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>532  %cmp = icmp eq <16 x i16> %mask, zeroinitializer533  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> %default534  ret <16 x i16> %res535}536 537define <16 x i16> @test_masked_z_i16_to_16_mask3(i16 %s, <16 x i16> %mask) {538; CHECK-LABEL: test_masked_z_i16_to_16_mask3:539; CHECK:       # %bb.0:540; CHECK-NEXT:    vptestnmw %ymm0, %ymm0, %k1541; CHECK-NEXT:    vpbroadcastw %edi, %ymm0 {%k1} {z}542; CHECK-NEXT:    retq543  %vec = insertelement <2 x i16> undef, i16 %s, i32 0544  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>545  %cmp = icmp eq <16 x i16> %mask, zeroinitializer546  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> zeroinitializer547  ret <16 x i16> %res548}549define <32 x i16> @test_i16_to_32(i16 %s) {550; CHECK-LABEL: test_i16_to_32:551; CHECK:       # %bb.0:552; CHECK-NEXT:    vpbroadcastw %edi, %zmm0553; CHECK-NEXT:    retq554  %vec = insertelement <2 x i16> undef, i16 %s, i32 0555  %res = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>556  ret <32 x i16> %res557}558define <32 x i16> @test_masked_i16_to_32_mask0(i16 %s, <32 x i16> %default, <32 x i16> %mask) {559; CHECK-LABEL: test_masked_i16_to_32_mask0:560; CHECK:       # %bb.0:561; CHECK-NEXT:    vptestnmw %zmm1, %zmm1, %k1562; CHECK-NEXT:    vpbroadcastw %edi, %zmm0 {%k1}563; CHECK-NEXT:    retq564  %vec = insertelement <2 x i16> undef, i16 %s, i32 0565  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>566  %cmp = icmp eq <32 x i16> %mask, zeroinitializer567  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> %default568  ret <32 x i16> %res569}570 571define <32 x i16> @test_masked_z_i16_to_32_mask0(i16 %s, <32 x i16> %mask) {572; CHECK-LABEL: test_masked_z_i16_to_32_mask0:573; CHECK:       # %bb.0:574; CHECK-NEXT:    vptestnmw %zmm0, %zmm0, %k1575; CHECK-NEXT:    vpbroadcastw %edi, %zmm0 {%k1} {z}576; CHECK-NEXT:    retq577  %vec = insertelement <2 x i16> undef, i16 %s, i32 0578  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>579  %cmp = icmp eq <32 x i16> %mask, zeroinitializer580  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> zeroinitializer581  ret <32 x i16> %res582}583define <32 x i16> @test_masked_i16_to_32_mask1(i16 %s, <32 x i16> %default, <32 x i16> %mask) {584; CHECK-LABEL: test_masked_i16_to_32_mask1:585; CHECK:       # %bb.0:586; CHECK-NEXT:    vptestnmw %zmm1, %zmm1, %k1587; CHECK-NEXT:    vpbroadcastw %edi, %zmm0 {%k1}588; CHECK-NEXT:    retq589  %vec = insertelement <2 x i16> undef, i16 %s, i32 0590  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>591  %cmp = icmp eq <32 x i16> %mask, zeroinitializer592  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> %default593  ret <32 x i16> %res594}595 596define <32 x i16> @test_masked_z_i16_to_32_mask1(i16 %s, <32 x i16> %mask) {597; CHECK-LABEL: test_masked_z_i16_to_32_mask1:598; CHECK:       # %bb.0:599; CHECK-NEXT:    vptestnmw %zmm0, %zmm0, %k1600; CHECK-NEXT:    vpbroadcastw %edi, %zmm0 {%k1} {z}601; CHECK-NEXT:    retq602  %vec = insertelement <2 x i16> undef, i16 %s, i32 0603  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>604  %cmp = icmp eq <32 x i16> %mask, zeroinitializer605  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> zeroinitializer606  ret <32 x i16> %res607}608define <32 x i16> @test_masked_i16_to_32_mask2(i16 %s, <32 x i16> %default, <32 x i16> %mask) {609; CHECK-LABEL: test_masked_i16_to_32_mask2:610; CHECK:       # %bb.0:611; CHECK-NEXT:    vptestnmw %zmm1, %zmm1, %k1612; CHECK-NEXT:    vpbroadcastw %edi, %zmm0 {%k1}613; CHECK-NEXT:    retq614  %vec = insertelement <2 x i16> undef, i16 %s, i32 0615  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>616  %cmp = icmp eq <32 x i16> %mask, zeroinitializer617  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> %default618  ret <32 x i16> %res619}620 621define <32 x i16> @test_masked_z_i16_to_32_mask2(i16 %s, <32 x i16> %mask) {622; CHECK-LABEL: test_masked_z_i16_to_32_mask2:623; CHECK:       # %bb.0:624; CHECK-NEXT:    vptestnmw %zmm0, %zmm0, %k1625; CHECK-NEXT:    vpbroadcastw %edi, %zmm0 {%k1} {z}626; CHECK-NEXT:    retq627  %vec = insertelement <2 x i16> undef, i16 %s, i32 0628  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>629  %cmp = icmp eq <32 x i16> %mask, zeroinitializer630  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> zeroinitializer631  ret <32 x i16> %res632}633define <32 x i16> @test_masked_i16_to_32_mask3(i16 %s, <32 x i16> %default, <32 x i16> %mask) {634; CHECK-LABEL: test_masked_i16_to_32_mask3:635; CHECK:       # %bb.0:636; CHECK-NEXT:    vptestnmw %zmm1, %zmm1, %k1637; CHECK-NEXT:    vpbroadcastw %edi, %zmm0 {%k1}638; CHECK-NEXT:    retq639  %vec = insertelement <2 x i16> undef, i16 %s, i32 0640  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>641  %cmp = icmp eq <32 x i16> %mask, zeroinitializer642  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> %default643  ret <32 x i16> %res644}645 646define <32 x i16> @test_masked_z_i16_to_32_mask3(i16 %s, <32 x i16> %mask) {647; CHECK-LABEL: test_masked_z_i16_to_32_mask3:648; CHECK:       # %bb.0:649; CHECK-NEXT:    vptestnmw %zmm0, %zmm0, %k1650; CHECK-NEXT:    vpbroadcastw %edi, %zmm0 {%k1} {z}651; CHECK-NEXT:    retq652  %vec = insertelement <2 x i16> undef, i16 %s, i32 0653  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>654  %cmp = icmp eq <32 x i16> %mask, zeroinitializer655  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> zeroinitializer656  ret <32 x i16> %res657}658define <4 x i32> @test_i32_to_4(i32 %s) {659; CHECK-LABEL: test_i32_to_4:660; CHECK:       # %bb.0:661; CHECK-NEXT:    vpbroadcastd %edi, %xmm0662; CHECK-NEXT:    retq663  %vec = insertelement <2 x i32> undef, i32 %s, i32 0664  %res = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>665  ret <4 x i32> %res666}667define <4 x i32> @test_masked_i32_to_4_mask0(i32 %s, <4 x i32> %default, <4 x i32> %mask) {668; CHECK-LABEL: test_masked_i32_to_4_mask0:669; CHECK:       # %bb.0:670; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k1671; CHECK-NEXT:    vpbroadcastd %edi, %xmm0 {%k1}672; CHECK-NEXT:    retq673  %vec = insertelement <2 x i32> undef, i32 %s, i32 0674  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>675  %cmp = icmp eq <4 x i32> %mask, zeroinitializer676  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default677  ret <4 x i32> %res678}679 680define <4 x i32> @test_masked_z_i32_to_4_mask0(i32 %s, <4 x i32> %mask) {681; CHECK-LABEL: test_masked_z_i32_to_4_mask0:682; CHECK:       # %bb.0:683; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k1684; CHECK-NEXT:    vpbroadcastd %edi, %xmm0 {%k1} {z}685; CHECK-NEXT:    retq686  %vec = insertelement <2 x i32> undef, i32 %s, i32 0687  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>688  %cmp = icmp eq <4 x i32> %mask, zeroinitializer689  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer690  ret <4 x i32> %res691}692define <4 x i32> @test_masked_i32_to_4_mask1(i32 %s, <4 x i32> %default, <4 x i32> %mask) {693; CHECK-LABEL: test_masked_i32_to_4_mask1:694; CHECK:       # %bb.0:695; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k1696; CHECK-NEXT:    vpbroadcastd %edi, %xmm0 {%k1}697; CHECK-NEXT:    retq698  %vec = insertelement <2 x i32> undef, i32 %s, i32 0699  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>700  %cmp = icmp eq <4 x i32> %mask, zeroinitializer701  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default702  ret <4 x i32> %res703}704 705define <4 x i32> @test_masked_z_i32_to_4_mask1(i32 %s, <4 x i32> %mask) {706; CHECK-LABEL: test_masked_z_i32_to_4_mask1:707; CHECK:       # %bb.0:708; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k1709; CHECK-NEXT:    vpbroadcastd %edi, %xmm0 {%k1} {z}710; CHECK-NEXT:    retq711  %vec = insertelement <2 x i32> undef, i32 %s, i32 0712  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>713  %cmp = icmp eq <4 x i32> %mask, zeroinitializer714  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer715  ret <4 x i32> %res716}717define <4 x i32> @test_masked_i32_to_4_mask2(i32 %s, <4 x i32> %default, <4 x i32> %mask) {718; CHECK-LABEL: test_masked_i32_to_4_mask2:719; CHECK:       # %bb.0:720; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k1721; CHECK-NEXT:    vpbroadcastd %edi, %xmm0 {%k1}722; CHECK-NEXT:    retq723  %vec = insertelement <2 x i32> undef, i32 %s, i32 0724  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>725  %cmp = icmp eq <4 x i32> %mask, zeroinitializer726  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default727  ret <4 x i32> %res728}729 730define <4 x i32> @test_masked_z_i32_to_4_mask2(i32 %s, <4 x i32> %mask) {731; CHECK-LABEL: test_masked_z_i32_to_4_mask2:732; CHECK:       # %bb.0:733; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k1734; CHECK-NEXT:    vpbroadcastd %edi, %xmm0 {%k1} {z}735; CHECK-NEXT:    retq736  %vec = insertelement <2 x i32> undef, i32 %s, i32 0737  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>738  %cmp = icmp eq <4 x i32> %mask, zeroinitializer739  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer740  ret <4 x i32> %res741}742define <4 x i32> @test_masked_i32_to_4_mask3(i32 %s, <4 x i32> %default, <4 x i32> %mask) {743; CHECK-LABEL: test_masked_i32_to_4_mask3:744; CHECK:       # %bb.0:745; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k1746; CHECK-NEXT:    vpbroadcastd %edi, %xmm0 {%k1}747; CHECK-NEXT:    retq748  %vec = insertelement <2 x i32> undef, i32 %s, i32 0749  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>750  %cmp = icmp eq <4 x i32> %mask, zeroinitializer751  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default752  ret <4 x i32> %res753}754 755define <4 x i32> @test_masked_z_i32_to_4_mask3(i32 %s, <4 x i32> %mask) {756; CHECK-LABEL: test_masked_z_i32_to_4_mask3:757; CHECK:       # %bb.0:758; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k1759; CHECK-NEXT:    vpbroadcastd %edi, %xmm0 {%k1} {z}760; CHECK-NEXT:    retq761  %vec = insertelement <2 x i32> undef, i32 %s, i32 0762  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>763  %cmp = icmp eq <4 x i32> %mask, zeroinitializer764  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer765  ret <4 x i32> %res766}767define <8 x i32> @test_i32_to_8(i32 %s) {768; CHECK-LABEL: test_i32_to_8:769; CHECK:       # %bb.0:770; CHECK-NEXT:    vpbroadcastd %edi, %ymm0771; CHECK-NEXT:    retq772  %vec = insertelement <2 x i32> undef, i32 %s, i32 0773  %res = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>774  ret <8 x i32> %res775}776define <8 x i32> @test_masked_i32_to_8_mask0(i32 %s, <8 x i32> %default, <8 x i32> %mask) {777; CHECK-LABEL: test_masked_i32_to_8_mask0:778; CHECK:       # %bb.0:779; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1780; CHECK-NEXT:    vpbroadcastd %edi, %ymm0 {%k1}781; CHECK-NEXT:    retq782  %vec = insertelement <2 x i32> undef, i32 %s, i32 0783  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>784  %cmp = icmp eq <8 x i32> %mask, zeroinitializer785  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default786  ret <8 x i32> %res787}788 789define <8 x i32> @test_masked_z_i32_to_8_mask0(i32 %s, <8 x i32> %mask) {790; CHECK-LABEL: test_masked_z_i32_to_8_mask0:791; CHECK:       # %bb.0:792; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k1793; CHECK-NEXT:    vpbroadcastd %edi, %ymm0 {%k1} {z}794; CHECK-NEXT:    retq795  %vec = insertelement <2 x i32> undef, i32 %s, i32 0796  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>797  %cmp = icmp eq <8 x i32> %mask, zeroinitializer798  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer799  ret <8 x i32> %res800}801define <8 x i32> @test_masked_i32_to_8_mask1(i32 %s, <8 x i32> %default, <8 x i32> %mask) {802; CHECK-LABEL: test_masked_i32_to_8_mask1:803; CHECK:       # %bb.0:804; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1805; CHECK-NEXT:    vpbroadcastd %edi, %ymm0 {%k1}806; CHECK-NEXT:    retq807  %vec = insertelement <2 x i32> undef, i32 %s, i32 0808  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>809  %cmp = icmp eq <8 x i32> %mask, zeroinitializer810  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default811  ret <8 x i32> %res812}813 814define <8 x i32> @test_masked_z_i32_to_8_mask1(i32 %s, <8 x i32> %mask) {815; CHECK-LABEL: test_masked_z_i32_to_8_mask1:816; CHECK:       # %bb.0:817; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k1818; CHECK-NEXT:    vpbroadcastd %edi, %ymm0 {%k1} {z}819; CHECK-NEXT:    retq820  %vec = insertelement <2 x i32> undef, i32 %s, i32 0821  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>822  %cmp = icmp eq <8 x i32> %mask, zeroinitializer823  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer824  ret <8 x i32> %res825}826define <8 x i32> @test_masked_i32_to_8_mask2(i32 %s, <8 x i32> %default, <8 x i32> %mask) {827; CHECK-LABEL: test_masked_i32_to_8_mask2:828; CHECK:       # %bb.0:829; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1830; CHECK-NEXT:    vpbroadcastd %edi, %ymm0 {%k1}831; CHECK-NEXT:    retq832  %vec = insertelement <2 x i32> undef, i32 %s, i32 0833  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>834  %cmp = icmp eq <8 x i32> %mask, zeroinitializer835  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default836  ret <8 x i32> %res837}838 839define <8 x i32> @test_masked_z_i32_to_8_mask2(i32 %s, <8 x i32> %mask) {840; CHECK-LABEL: test_masked_z_i32_to_8_mask2:841; CHECK:       # %bb.0:842; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k1843; CHECK-NEXT:    vpbroadcastd %edi, %ymm0 {%k1} {z}844; CHECK-NEXT:    retq845  %vec = insertelement <2 x i32> undef, i32 %s, i32 0846  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>847  %cmp = icmp eq <8 x i32> %mask, zeroinitializer848  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer849  ret <8 x i32> %res850}851define <8 x i32> @test_masked_i32_to_8_mask3(i32 %s, <8 x i32> %default, <8 x i32> %mask) {852; CHECK-LABEL: test_masked_i32_to_8_mask3:853; CHECK:       # %bb.0:854; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1855; CHECK-NEXT:    vpbroadcastd %edi, %ymm0 {%k1}856; CHECK-NEXT:    retq857  %vec = insertelement <2 x i32> undef, i32 %s, i32 0858  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>859  %cmp = icmp eq <8 x i32> %mask, zeroinitializer860  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default861  ret <8 x i32> %res862}863 864define <8 x i32> @test_masked_z_i32_to_8_mask3(i32 %s, <8 x i32> %mask) {865; CHECK-LABEL: test_masked_z_i32_to_8_mask3:866; CHECK:       # %bb.0:867; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k1868; CHECK-NEXT:    vpbroadcastd %edi, %ymm0 {%k1} {z}869; CHECK-NEXT:    retq870  %vec = insertelement <2 x i32> undef, i32 %s, i32 0871  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>872  %cmp = icmp eq <8 x i32> %mask, zeroinitializer873  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer874  ret <8 x i32> %res875}876define <16 x i32> @test_i32_to_16(i32 %s) {877; CHECK-LABEL: test_i32_to_16:878; CHECK:       # %bb.0:879; CHECK-NEXT:    vpbroadcastd %edi, %zmm0880; CHECK-NEXT:    retq881  %vec = insertelement <2 x i32> undef, i32 %s, i32 0882  %res = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>883  ret <16 x i32> %res884}885define <16 x i32> @test_masked_i32_to_16_mask0(i32 %s, <16 x i32> %default, <16 x i32> %mask) {886; CHECK-LABEL: test_masked_i32_to_16_mask0:887; CHECK:       # %bb.0:888; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1889; CHECK-NEXT:    vpbroadcastd %edi, %zmm0 {%k1}890; CHECK-NEXT:    retq891  %vec = insertelement <2 x i32> undef, i32 %s, i32 0892  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>893  %cmp = icmp eq <16 x i32> %mask, zeroinitializer894  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default895  ret <16 x i32> %res896}897 898define <16 x i32> @test_masked_z_i32_to_16_mask0(i32 %s, <16 x i32> %mask) {899; CHECK-LABEL: test_masked_z_i32_to_16_mask0:900; CHECK:       # %bb.0:901; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k1902; CHECK-NEXT:    vpbroadcastd %edi, %zmm0 {%k1} {z}903; CHECK-NEXT:    retq904  %vec = insertelement <2 x i32> undef, i32 %s, i32 0905  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>906  %cmp = icmp eq <16 x i32> %mask, zeroinitializer907  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer908  ret <16 x i32> %res909}910define <16 x i32> @test_masked_i32_to_16_mask1(i32 %s, <16 x i32> %default, <16 x i32> %mask) {911; CHECK-LABEL: test_masked_i32_to_16_mask1:912; CHECK:       # %bb.0:913; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1914; CHECK-NEXT:    vpbroadcastd %edi, %zmm0 {%k1}915; CHECK-NEXT:    retq916  %vec = insertelement <2 x i32> undef, i32 %s, i32 0917  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>918  %cmp = icmp eq <16 x i32> %mask, zeroinitializer919  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default920  ret <16 x i32> %res921}922 923define <16 x i32> @test_masked_z_i32_to_16_mask1(i32 %s, <16 x i32> %mask) {924; CHECK-LABEL: test_masked_z_i32_to_16_mask1:925; CHECK:       # %bb.0:926; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k1927; CHECK-NEXT:    vpbroadcastd %edi, %zmm0 {%k1} {z}928; CHECK-NEXT:    retq929  %vec = insertelement <2 x i32> undef, i32 %s, i32 0930  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>931  %cmp = icmp eq <16 x i32> %mask, zeroinitializer932  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer933  ret <16 x i32> %res934}935define <16 x i32> @test_masked_i32_to_16_mask2(i32 %s, <16 x i32> %default, <16 x i32> %mask) {936; CHECK-LABEL: test_masked_i32_to_16_mask2:937; CHECK:       # %bb.0:938; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1939; CHECK-NEXT:    vpbroadcastd %edi, %zmm0 {%k1}940; CHECK-NEXT:    retq941  %vec = insertelement <2 x i32> undef, i32 %s, i32 0942  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>943  %cmp = icmp eq <16 x i32> %mask, zeroinitializer944  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default945  ret <16 x i32> %res946}947 948define <16 x i32> @test_masked_z_i32_to_16_mask2(i32 %s, <16 x i32> %mask) {949; CHECK-LABEL: test_masked_z_i32_to_16_mask2:950; CHECK:       # %bb.0:951; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k1952; CHECK-NEXT:    vpbroadcastd %edi, %zmm0 {%k1} {z}953; CHECK-NEXT:    retq954  %vec = insertelement <2 x i32> undef, i32 %s, i32 0955  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>956  %cmp = icmp eq <16 x i32> %mask, zeroinitializer957  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer958  ret <16 x i32> %res959}960define <16 x i32> @test_masked_i32_to_16_mask3(i32 %s, <16 x i32> %default, <16 x i32> %mask) {961; CHECK-LABEL: test_masked_i32_to_16_mask3:962; CHECK:       # %bb.0:963; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1964; CHECK-NEXT:    vpbroadcastd %edi, %zmm0 {%k1}965; CHECK-NEXT:    retq966  %vec = insertelement <2 x i32> undef, i32 %s, i32 0967  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>968  %cmp = icmp eq <16 x i32> %mask, zeroinitializer969  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default970  ret <16 x i32> %res971}972 973define <16 x i32> @test_masked_z_i32_to_16_mask3(i32 %s, <16 x i32> %mask) {974; CHECK-LABEL: test_masked_z_i32_to_16_mask3:975; CHECK:       # %bb.0:976; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k1977; CHECK-NEXT:    vpbroadcastd %edi, %zmm0 {%k1} {z}978; CHECK-NEXT:    retq979  %vec = insertelement <2 x i32> undef, i32 %s, i32 0980  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>981  %cmp = icmp eq <16 x i32> %mask, zeroinitializer982  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer983  ret <16 x i32> %res984}985define <2 x i64> @test_i64_to_2(i64 %s) {986; CHECK-LABEL: test_i64_to_2:987; CHECK:       # %bb.0:988; CHECK-NEXT:    vpbroadcastq %rdi, %xmm0989; CHECK-NEXT:    retq990  %vec = insertelement <2 x i64> undef, i64 %s, i32 0991  %res = shufflevector <2 x i64> %vec, <2 x i64> undef, <2 x i32> <i32 0, i32 0>992  ret <2 x i64> %res993}994define <2 x i64> @test_masked_i64_to_2_mask0(i64 %s, <2 x i64> %default, <2 x i64> %mask) {995; CHECK-LABEL: test_masked_i64_to_2_mask0:996; CHECK:       # %bb.0:997; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k1998; CHECK-NEXT:    vpbroadcastq %rdi, %xmm0 {%k1}999; CHECK-NEXT:    retq1000  %vec = insertelement <2 x i64> undef, i64 %s, i32 01001  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <2 x i32> <i32 0, i32 0>1002  %cmp = icmp eq <2 x i64> %mask, zeroinitializer1003  %res = select <2 x i1> %cmp, <2 x i64> %shuf, <2 x i64> %default1004  ret <2 x i64> %res1005}1006 1007define <2 x i64> @test_masked_z_i64_to_2_mask0(i64 %s, <2 x i64> %mask) {1008; CHECK-LABEL: test_masked_z_i64_to_2_mask0:1009; CHECK:       # %bb.0:1010; CHECK-NEXT:    vptestnmq %xmm0, %xmm0, %k11011; CHECK-NEXT:    vpbroadcastq %rdi, %xmm0 {%k1} {z}1012; CHECK-NEXT:    retq1013  %vec = insertelement <2 x i64> undef, i64 %s, i32 01014  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <2 x i32> <i32 0, i32 0>1015  %cmp = icmp eq <2 x i64> %mask, zeroinitializer1016  %res = select <2 x i1> %cmp, <2 x i64> %shuf, <2 x i64> zeroinitializer1017  ret <2 x i64> %res1018}1019define <2 x i64> @test_masked_i64_to_2_mask1(i64 %s, <2 x i64> %default, <2 x i64> %mask) {1020; CHECK-LABEL: test_masked_i64_to_2_mask1:1021; CHECK:       # %bb.0:1022; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k11023; CHECK-NEXT:    vpbroadcastq %rdi, %xmm0 {%k1}1024; CHECK-NEXT:    retq1025  %vec = insertelement <2 x i64> undef, i64 %s, i32 01026  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <2 x i32> <i32 0, i32 0>1027  %cmp = icmp eq <2 x i64> %mask, zeroinitializer1028  %res = select <2 x i1> %cmp, <2 x i64> %shuf, <2 x i64> %default1029  ret <2 x i64> %res1030}1031 1032define <2 x i64> @test_masked_z_i64_to_2_mask1(i64 %s, <2 x i64> %mask) {1033; CHECK-LABEL: test_masked_z_i64_to_2_mask1:1034; CHECK:       # %bb.0:1035; CHECK-NEXT:    vptestnmq %xmm0, %xmm0, %k11036; CHECK-NEXT:    vpbroadcastq %rdi, %xmm0 {%k1} {z}1037; CHECK-NEXT:    retq1038  %vec = insertelement <2 x i64> undef, i64 %s, i32 01039  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <2 x i32> <i32 0, i32 0>1040  %cmp = icmp eq <2 x i64> %mask, zeroinitializer1041  %res = select <2 x i1> %cmp, <2 x i64> %shuf, <2 x i64> zeroinitializer1042  ret <2 x i64> %res1043}1044define <4 x i64> @test_i64_to_4(i64 %s) {1045; CHECK-LABEL: test_i64_to_4:1046; CHECK:       # %bb.0:1047; CHECK-NEXT:    vpbroadcastq %rdi, %ymm01048; CHECK-NEXT:    retq1049  %vec = insertelement <2 x i64> undef, i64 %s, i32 01050  %res = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>1051  ret <4 x i64> %res1052}1053define <4 x i64> @test_masked_i64_to_4_mask0(i64 %s, <4 x i64> %default, <4 x i64> %mask) {1054; CHECK-LABEL: test_masked_i64_to_4_mask0:1055; CHECK:       # %bb.0:1056; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k11057; CHECK-NEXT:    vpbroadcastq %rdi, %ymm0 {%k1}1058; CHECK-NEXT:    retq1059  %vec = insertelement <2 x i64> undef, i64 %s, i32 01060  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>1061  %cmp = icmp eq <4 x i64> %mask, zeroinitializer1062  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> %default1063  ret <4 x i64> %res1064}1065 1066define <4 x i64> @test_masked_z_i64_to_4_mask0(i64 %s, <4 x i64> %mask) {1067; CHECK-LABEL: test_masked_z_i64_to_4_mask0:1068; CHECK:       # %bb.0:1069; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k11070; CHECK-NEXT:    vpbroadcastq %rdi, %ymm0 {%k1} {z}1071; CHECK-NEXT:    retq1072  %vec = insertelement <2 x i64> undef, i64 %s, i32 01073  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>1074  %cmp = icmp eq <4 x i64> %mask, zeroinitializer1075  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> zeroinitializer1076  ret <4 x i64> %res1077}1078define <4 x i64> @test_masked_i64_to_4_mask1(i64 %s, <4 x i64> %default, <4 x i64> %mask) {1079; CHECK-LABEL: test_masked_i64_to_4_mask1:1080; CHECK:       # %bb.0:1081; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k11082; CHECK-NEXT:    vpbroadcastq %rdi, %ymm0 {%k1}1083; CHECK-NEXT:    retq1084  %vec = insertelement <2 x i64> undef, i64 %s, i32 01085  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>1086  %cmp = icmp eq <4 x i64> %mask, zeroinitializer1087  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> %default1088  ret <4 x i64> %res1089}1090 1091define <4 x i64> @test_masked_z_i64_to_4_mask1(i64 %s, <4 x i64> %mask) {1092; CHECK-LABEL: test_masked_z_i64_to_4_mask1:1093; CHECK:       # %bb.0:1094; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k11095; CHECK-NEXT:    vpbroadcastq %rdi, %ymm0 {%k1} {z}1096; CHECK-NEXT:    retq1097  %vec = insertelement <2 x i64> undef, i64 %s, i32 01098  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>1099  %cmp = icmp eq <4 x i64> %mask, zeroinitializer1100  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> zeroinitializer1101  ret <4 x i64> %res1102}1103define <4 x i64> @test_masked_i64_to_4_mask2(i64 %s, <4 x i64> %default, <4 x i64> %mask) {1104; CHECK-LABEL: test_masked_i64_to_4_mask2:1105; CHECK:       # %bb.0:1106; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k11107; CHECK-NEXT:    vpbroadcastq %rdi, %ymm0 {%k1}1108; CHECK-NEXT:    retq1109  %vec = insertelement <2 x i64> undef, i64 %s, i32 01110  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>1111  %cmp = icmp eq <4 x i64> %mask, zeroinitializer1112  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> %default1113  ret <4 x i64> %res1114}1115 1116define <4 x i64> @test_masked_z_i64_to_4_mask2(i64 %s, <4 x i64> %mask) {1117; CHECK-LABEL: test_masked_z_i64_to_4_mask2:1118; CHECK:       # %bb.0:1119; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k11120; CHECK-NEXT:    vpbroadcastq %rdi, %ymm0 {%k1} {z}1121; CHECK-NEXT:    retq1122  %vec = insertelement <2 x i64> undef, i64 %s, i32 01123  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>1124  %cmp = icmp eq <4 x i64> %mask, zeroinitializer1125  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> zeroinitializer1126  ret <4 x i64> %res1127}1128define <4 x i64> @test_masked_i64_to_4_mask3(i64 %s, <4 x i64> %default, <4 x i64> %mask) {1129; CHECK-LABEL: test_masked_i64_to_4_mask3:1130; CHECK:       # %bb.0:1131; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k11132; CHECK-NEXT:    vpbroadcastq %rdi, %ymm0 {%k1}1133; CHECK-NEXT:    retq1134  %vec = insertelement <2 x i64> undef, i64 %s, i32 01135  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>1136  %cmp = icmp eq <4 x i64> %mask, zeroinitializer1137  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> %default1138  ret <4 x i64> %res1139}1140 1141define <4 x i64> @test_masked_z_i64_to_4_mask3(i64 %s, <4 x i64> %mask) {1142; CHECK-LABEL: test_masked_z_i64_to_4_mask3:1143; CHECK:       # %bb.0:1144; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k11145; CHECK-NEXT:    vpbroadcastq %rdi, %ymm0 {%k1} {z}1146; CHECK-NEXT:    retq1147  %vec = insertelement <2 x i64> undef, i64 %s, i32 01148  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>1149  %cmp = icmp eq <4 x i64> %mask, zeroinitializer1150  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> zeroinitializer1151  ret <4 x i64> %res1152}1153define <8 x i64> @test_i64_to_8(i64 %s) {1154; CHECK-LABEL: test_i64_to_8:1155; CHECK:       # %bb.0:1156; CHECK-NEXT:    vpbroadcastq %rdi, %zmm01157; CHECK-NEXT:    retq1158  %vec = insertelement <2 x i64> undef, i64 %s, i32 01159  %res = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1160  ret <8 x i64> %res1161}1162define <8 x i64> @test_masked_i64_to_8_mask0(i64 %s, <8 x i64> %default, <8 x i64> %mask) {1163; CHECK-LABEL: test_masked_i64_to_8_mask0:1164; CHECK:       # %bb.0:1165; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11166; CHECK-NEXT:    vpbroadcastq %rdi, %zmm0 {%k1}1167; CHECK-NEXT:    retq1168  %vec = insertelement <2 x i64> undef, i64 %s, i32 01169  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1170  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1171  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default1172  ret <8 x i64> %res1173}1174 1175define <8 x i64> @test_masked_z_i64_to_8_mask0(i64 %s, <8 x i64> %mask) {1176; CHECK-LABEL: test_masked_z_i64_to_8_mask0:1177; CHECK:       # %bb.0:1178; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k11179; CHECK-NEXT:    vpbroadcastq %rdi, %zmm0 {%k1} {z}1180; CHECK-NEXT:    retq1181  %vec = insertelement <2 x i64> undef, i64 %s, i32 01182  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1183  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1184  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer1185  ret <8 x i64> %res1186}1187define <8 x i64> @test_masked_i64_to_8_mask1(i64 %s, <8 x i64> %default, <8 x i64> %mask) {1188; CHECK-LABEL: test_masked_i64_to_8_mask1:1189; CHECK:       # %bb.0:1190; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11191; CHECK-NEXT:    vpbroadcastq %rdi, %zmm0 {%k1}1192; CHECK-NEXT:    retq1193  %vec = insertelement <2 x i64> undef, i64 %s, i32 01194  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1195  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1196  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default1197  ret <8 x i64> %res1198}1199 1200define <8 x i64> @test_masked_z_i64_to_8_mask1(i64 %s, <8 x i64> %mask) {1201; CHECK-LABEL: test_masked_z_i64_to_8_mask1:1202; CHECK:       # %bb.0:1203; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k11204; CHECK-NEXT:    vpbroadcastq %rdi, %zmm0 {%k1} {z}1205; CHECK-NEXT:    retq1206  %vec = insertelement <2 x i64> undef, i64 %s, i32 01207  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1208  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1209  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer1210  ret <8 x i64> %res1211}1212define <8 x i64> @test_masked_i64_to_8_mask2(i64 %s, <8 x i64> %default, <8 x i64> %mask) {1213; CHECK-LABEL: test_masked_i64_to_8_mask2:1214; CHECK:       # %bb.0:1215; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11216; CHECK-NEXT:    vpbroadcastq %rdi, %zmm0 {%k1}1217; CHECK-NEXT:    retq1218  %vec = insertelement <2 x i64> undef, i64 %s, i32 01219  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1220  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1221  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default1222  ret <8 x i64> %res1223}1224 1225define <8 x i64> @test_masked_z_i64_to_8_mask2(i64 %s, <8 x i64> %mask) {1226; CHECK-LABEL: test_masked_z_i64_to_8_mask2:1227; CHECK:       # %bb.0:1228; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k11229; CHECK-NEXT:    vpbroadcastq %rdi, %zmm0 {%k1} {z}1230; CHECK-NEXT:    retq1231  %vec = insertelement <2 x i64> undef, i64 %s, i32 01232  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1233  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1234  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer1235  ret <8 x i64> %res1236}1237define <8 x i64> @test_masked_i64_to_8_mask3(i64 %s, <8 x i64> %default, <8 x i64> %mask) {1238; CHECK-LABEL: test_masked_i64_to_8_mask3:1239; CHECK:       # %bb.0:1240; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11241; CHECK-NEXT:    vpbroadcastq %rdi, %zmm0 {%k1}1242; CHECK-NEXT:    retq1243  %vec = insertelement <2 x i64> undef, i64 %s, i32 01244  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1245  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1246  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default1247  ret <8 x i64> %res1248}1249 1250define <8 x i64> @test_masked_z_i64_to_8_mask3(i64 %s, <8 x i64> %mask) {1251; CHECK-LABEL: test_masked_z_i64_to_8_mask3:1252; CHECK:       # %bb.0:1253; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k11254; CHECK-NEXT:    vpbroadcastq %rdi, %zmm0 {%k1} {z}1255; CHECK-NEXT:    retq1256  %vec = insertelement <2 x i64> undef, i64 %s, i32 01257  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1258  %cmp = icmp eq <8 x i64> %mask, zeroinitializer1259  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer1260  ret <8 x i64> %res1261}1262define <16 x i8> @test_i8_to_16_mem(ptr %p) {1263; CHECK-LABEL: test_i8_to_16_mem:1264; CHECK:       # %bb.0:1265; CHECK-NEXT:    vpbroadcastb (%rdi), %xmm01266; CHECK-NEXT:    retq1267  %s = load i8, ptr %p1268  %vec = insertelement <2 x i8> undef, i8 %s, i32 01269  %res = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1270  ret <16 x i8> %res1271}1272define <16 x i8> @test_masked_i8_to_16_mem_mask0(ptr %p, <16 x i8> %default, <16 x i8> %mask) {1273; CHECK-LABEL: test_masked_i8_to_16_mem_mask0:1274; CHECK:       # %bb.0:1275; CHECK-NEXT:    vptestnmb %xmm1, %xmm1, %k11276; CHECK-NEXT:    vpbroadcastb (%rdi), %xmm0 {%k1}1277; CHECK-NEXT:    retq1278  %s = load i8, ptr %p1279  %vec = insertelement <2 x i8> undef, i8 %s, i32 01280  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1281  %cmp = icmp eq <16 x i8> %mask, zeroinitializer1282  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> %default1283  ret <16 x i8> %res1284}1285 1286define <16 x i8> @test_masked_z_i8_to_16_mem_mask0(ptr %p, <16 x i8> %mask) {1287; CHECK-LABEL: test_masked_z_i8_to_16_mem_mask0:1288; CHECK:       # %bb.0:1289; CHECK-NEXT:    vptestnmb %xmm0, %xmm0, %k11290; CHECK-NEXT:    vpbroadcastb (%rdi), %xmm0 {%k1} {z}1291; CHECK-NEXT:    retq1292  %s = load i8, ptr %p1293  %vec = insertelement <2 x i8> undef, i8 %s, i32 01294  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1295  %cmp = icmp eq <16 x i8> %mask, zeroinitializer1296  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> zeroinitializer1297  ret <16 x i8> %res1298}1299define <16 x i8> @test_masked_i8_to_16_mem_mask1(ptr %p, <16 x i8> %default, <16 x i8> %mask) {1300; CHECK-LABEL: test_masked_i8_to_16_mem_mask1:1301; CHECK:       # %bb.0:1302; CHECK-NEXT:    vptestnmb %xmm1, %xmm1, %k11303; CHECK-NEXT:    vpbroadcastb (%rdi), %xmm0 {%k1}1304; CHECK-NEXT:    retq1305  %s = load i8, ptr %p1306  %vec = insertelement <2 x i8> undef, i8 %s, i32 01307  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1308  %cmp = icmp eq <16 x i8> %mask, zeroinitializer1309  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> %default1310  ret <16 x i8> %res1311}1312 1313define <16 x i8> @test_masked_z_i8_to_16_mem_mask1(ptr %p, <16 x i8> %mask) {1314; CHECK-LABEL: test_masked_z_i8_to_16_mem_mask1:1315; CHECK:       # %bb.0:1316; CHECK-NEXT:    vptestnmb %xmm0, %xmm0, %k11317; CHECK-NEXT:    vpbroadcastb (%rdi), %xmm0 {%k1} {z}1318; CHECK-NEXT:    retq1319  %s = load i8, ptr %p1320  %vec = insertelement <2 x i8> undef, i8 %s, i32 01321  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1322  %cmp = icmp eq <16 x i8> %mask, zeroinitializer1323  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> zeroinitializer1324  ret <16 x i8> %res1325}1326define <16 x i8> @test_masked_i8_to_16_mem_mask2(ptr %p, <16 x i8> %default, <16 x i8> %mask) {1327; CHECK-LABEL: test_masked_i8_to_16_mem_mask2:1328; CHECK:       # %bb.0:1329; CHECK-NEXT:    vptestnmb %xmm1, %xmm1, %k11330; CHECK-NEXT:    vpbroadcastb (%rdi), %xmm0 {%k1}1331; CHECK-NEXT:    retq1332  %s = load i8, ptr %p1333  %vec = insertelement <2 x i8> undef, i8 %s, i32 01334  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1335  %cmp = icmp eq <16 x i8> %mask, zeroinitializer1336  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> %default1337  ret <16 x i8> %res1338}1339 1340define <16 x i8> @test_masked_z_i8_to_16_mem_mask2(ptr %p, <16 x i8> %mask) {1341; CHECK-LABEL: test_masked_z_i8_to_16_mem_mask2:1342; CHECK:       # %bb.0:1343; CHECK-NEXT:    vptestnmb %xmm0, %xmm0, %k11344; CHECK-NEXT:    vpbroadcastb (%rdi), %xmm0 {%k1} {z}1345; CHECK-NEXT:    retq1346  %s = load i8, ptr %p1347  %vec = insertelement <2 x i8> undef, i8 %s, i32 01348  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1349  %cmp = icmp eq <16 x i8> %mask, zeroinitializer1350  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> zeroinitializer1351  ret <16 x i8> %res1352}1353define <16 x i8> @test_masked_i8_to_16_mem_mask3(ptr %p, <16 x i8> %default, <16 x i8> %mask) {1354; CHECK-LABEL: test_masked_i8_to_16_mem_mask3:1355; CHECK:       # %bb.0:1356; CHECK-NEXT:    vptestnmb %xmm1, %xmm1, %k11357; CHECK-NEXT:    vpbroadcastb (%rdi), %xmm0 {%k1}1358; CHECK-NEXT:    retq1359  %s = load i8, ptr %p1360  %vec = insertelement <2 x i8> undef, i8 %s, i32 01361  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1362  %cmp = icmp eq <16 x i8> %mask, zeroinitializer1363  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> %default1364  ret <16 x i8> %res1365}1366 1367define <16 x i8> @test_masked_z_i8_to_16_mem_mask3(ptr %p, <16 x i8> %mask) {1368; CHECK-LABEL: test_masked_z_i8_to_16_mem_mask3:1369; CHECK:       # %bb.0:1370; CHECK-NEXT:    vptestnmb %xmm0, %xmm0, %k11371; CHECK-NEXT:    vpbroadcastb (%rdi), %xmm0 {%k1} {z}1372; CHECK-NEXT:    retq1373  %s = load i8, ptr %p1374  %vec = insertelement <2 x i8> undef, i8 %s, i32 01375  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1376  %cmp = icmp eq <16 x i8> %mask, zeroinitializer1377  %res = select <16 x i1> %cmp, <16 x i8> %shuf, <16 x i8> zeroinitializer1378  ret <16 x i8> %res1379}1380define <32 x i8> @test_i8_to_32_mem(ptr %p) {1381; CHECK-LABEL: test_i8_to_32_mem:1382; CHECK:       # %bb.0:1383; CHECK-NEXT:    vpbroadcastb (%rdi), %ymm01384; CHECK-NEXT:    retq1385  %s = load i8, ptr %p1386  %vec = insertelement <2 x i8> undef, i8 %s, i32 01387  %res = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1388  ret <32 x i8> %res1389}1390define <32 x i8> @test_masked_i8_to_32_mem_mask0(ptr %p, <32 x i8> %default, <32 x i8> %mask) {1391; CHECK-LABEL: test_masked_i8_to_32_mem_mask0:1392; CHECK:       # %bb.0:1393; CHECK-NEXT:    vptestnmb %ymm1, %ymm1, %k11394; CHECK-NEXT:    vpbroadcastb (%rdi), %ymm0 {%k1}1395; CHECK-NEXT:    retq1396  %s = load i8, ptr %p1397  %vec = insertelement <2 x i8> undef, i8 %s, i32 01398  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1399  %cmp = icmp eq <32 x i8> %mask, zeroinitializer1400  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> %default1401  ret <32 x i8> %res1402}1403 1404define <32 x i8> @test_masked_z_i8_to_32_mem_mask0(ptr %p, <32 x i8> %mask) {1405; CHECK-LABEL: test_masked_z_i8_to_32_mem_mask0:1406; CHECK:       # %bb.0:1407; CHECK-NEXT:    vptestnmb %ymm0, %ymm0, %k11408; CHECK-NEXT:    vpbroadcastb (%rdi), %ymm0 {%k1} {z}1409; CHECK-NEXT:    retq1410  %s = load i8, ptr %p1411  %vec = insertelement <2 x i8> undef, i8 %s, i32 01412  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1413  %cmp = icmp eq <32 x i8> %mask, zeroinitializer1414  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> zeroinitializer1415  ret <32 x i8> %res1416}1417define <32 x i8> @test_masked_i8_to_32_mem_mask1(ptr %p, <32 x i8> %default, <32 x i8> %mask) {1418; CHECK-LABEL: test_masked_i8_to_32_mem_mask1:1419; CHECK:       # %bb.0:1420; CHECK-NEXT:    vptestnmb %ymm1, %ymm1, %k11421; CHECK-NEXT:    vpbroadcastb (%rdi), %ymm0 {%k1}1422; CHECK-NEXT:    retq1423  %s = load i8, ptr %p1424  %vec = insertelement <2 x i8> undef, i8 %s, i32 01425  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1426  %cmp = icmp eq <32 x i8> %mask, zeroinitializer1427  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> %default1428  ret <32 x i8> %res1429}1430 1431define <32 x i8> @test_masked_z_i8_to_32_mem_mask1(ptr %p, <32 x i8> %mask) {1432; CHECK-LABEL: test_masked_z_i8_to_32_mem_mask1:1433; CHECK:       # %bb.0:1434; CHECK-NEXT:    vptestnmb %ymm0, %ymm0, %k11435; CHECK-NEXT:    vpbroadcastb (%rdi), %ymm0 {%k1} {z}1436; CHECK-NEXT:    retq1437  %s = load i8, ptr %p1438  %vec = insertelement <2 x i8> undef, i8 %s, i32 01439  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1440  %cmp = icmp eq <32 x i8> %mask, zeroinitializer1441  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> zeroinitializer1442  ret <32 x i8> %res1443}1444define <32 x i8> @test_masked_i8_to_32_mem_mask2(ptr %p, <32 x i8> %default, <32 x i8> %mask) {1445; CHECK-LABEL: test_masked_i8_to_32_mem_mask2:1446; CHECK:       # %bb.0:1447; CHECK-NEXT:    vptestnmb %ymm1, %ymm1, %k11448; CHECK-NEXT:    vpbroadcastb (%rdi), %ymm0 {%k1}1449; CHECK-NEXT:    retq1450  %s = load i8, ptr %p1451  %vec = insertelement <2 x i8> undef, i8 %s, i32 01452  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1453  %cmp = icmp eq <32 x i8> %mask, zeroinitializer1454  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> %default1455  ret <32 x i8> %res1456}1457 1458define <32 x i8> @test_masked_z_i8_to_32_mem_mask2(ptr %p, <32 x i8> %mask) {1459; CHECK-LABEL: test_masked_z_i8_to_32_mem_mask2:1460; CHECK:       # %bb.0:1461; CHECK-NEXT:    vptestnmb %ymm0, %ymm0, %k11462; CHECK-NEXT:    vpbroadcastb (%rdi), %ymm0 {%k1} {z}1463; CHECK-NEXT:    retq1464  %s = load i8, ptr %p1465  %vec = insertelement <2 x i8> undef, i8 %s, i32 01466  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1467  %cmp = icmp eq <32 x i8> %mask, zeroinitializer1468  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> zeroinitializer1469  ret <32 x i8> %res1470}1471define <32 x i8> @test_masked_i8_to_32_mem_mask3(ptr %p, <32 x i8> %default, <32 x i8> %mask) {1472; CHECK-LABEL: test_masked_i8_to_32_mem_mask3:1473; CHECK:       # %bb.0:1474; CHECK-NEXT:    vptestnmb %ymm1, %ymm1, %k11475; CHECK-NEXT:    vpbroadcastb (%rdi), %ymm0 {%k1}1476; CHECK-NEXT:    retq1477  %s = load i8, ptr %p1478  %vec = insertelement <2 x i8> undef, i8 %s, i32 01479  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1480  %cmp = icmp eq <32 x i8> %mask, zeroinitializer1481  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> %default1482  ret <32 x i8> %res1483}1484 1485define <32 x i8> @test_masked_z_i8_to_32_mem_mask3(ptr %p, <32 x i8> %mask) {1486; CHECK-LABEL: test_masked_z_i8_to_32_mem_mask3:1487; CHECK:       # %bb.0:1488; CHECK-NEXT:    vptestnmb %ymm0, %ymm0, %k11489; CHECK-NEXT:    vpbroadcastb (%rdi), %ymm0 {%k1} {z}1490; CHECK-NEXT:    retq1491  %s = load i8, ptr %p1492  %vec = insertelement <2 x i8> undef, i8 %s, i32 01493  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1494  %cmp = icmp eq <32 x i8> %mask, zeroinitializer1495  %res = select <32 x i1> %cmp, <32 x i8> %shuf, <32 x i8> zeroinitializer1496  ret <32 x i8> %res1497}1498define <64 x i8> @test_i8_to_64_mem(ptr %p) {1499; CHECK-LABEL: test_i8_to_64_mem:1500; CHECK:       # %bb.0:1501; CHECK-NEXT:    vpbroadcastb (%rdi), %zmm01502; CHECK-NEXT:    retq1503  %s = load i8, ptr %p1504  %vec = insertelement <2 x i8> undef, i8 %s, i32 01505  %res = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1506  ret <64 x i8> %res1507}1508define <64 x i8> @test_masked_i8_to_64_mem_mask0(ptr %p, <64 x i8> %default, <64 x i8> %mask) {1509; CHECK-LABEL: test_masked_i8_to_64_mem_mask0:1510; CHECK:       # %bb.0:1511; CHECK-NEXT:    vptestnmb %zmm1, %zmm1, %k11512; CHECK-NEXT:    vpbroadcastb (%rdi), %zmm0 {%k1}1513; CHECK-NEXT:    retq1514  %s = load i8, ptr %p1515  %vec = insertelement <2 x i8> undef, i8 %s, i32 01516  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1517  %cmp = icmp eq <64 x i8> %mask, zeroinitializer1518  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> %default1519  ret <64 x i8> %res1520}1521 1522define <64 x i8> @test_masked_z_i8_to_64_mem_mask0(ptr %p, <64 x i8> %mask) {1523; CHECK-LABEL: test_masked_z_i8_to_64_mem_mask0:1524; CHECK:       # %bb.0:1525; CHECK-NEXT:    vptestnmb %zmm0, %zmm0, %k11526; CHECK-NEXT:    vpbroadcastb (%rdi), %zmm0 {%k1} {z}1527; CHECK-NEXT:    retq1528  %s = load i8, ptr %p1529  %vec = insertelement <2 x i8> undef, i8 %s, i32 01530  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1531  %cmp = icmp eq <64 x i8> %mask, zeroinitializer1532  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> zeroinitializer1533  ret <64 x i8> %res1534}1535define <64 x i8> @test_masked_i8_to_64_mem_mask1(ptr %p, <64 x i8> %default, <64 x i8> %mask) {1536; CHECK-LABEL: test_masked_i8_to_64_mem_mask1:1537; CHECK:       # %bb.0:1538; CHECK-NEXT:    vptestnmb %zmm1, %zmm1, %k11539; CHECK-NEXT:    vpbroadcastb (%rdi), %zmm0 {%k1}1540; CHECK-NEXT:    retq1541  %s = load i8, ptr %p1542  %vec = insertelement <2 x i8> undef, i8 %s, i32 01543  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1544  %cmp = icmp eq <64 x i8> %mask, zeroinitializer1545  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> %default1546  ret <64 x i8> %res1547}1548 1549define <64 x i8> @test_masked_z_i8_to_64_mem_mask1(ptr %p, <64 x i8> %mask) {1550; CHECK-LABEL: test_masked_z_i8_to_64_mem_mask1:1551; CHECK:       # %bb.0:1552; CHECK-NEXT:    vptestnmb %zmm0, %zmm0, %k11553; CHECK-NEXT:    vpbroadcastb (%rdi), %zmm0 {%k1} {z}1554; CHECK-NEXT:    retq1555  %s = load i8, ptr %p1556  %vec = insertelement <2 x i8> undef, i8 %s, i32 01557  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1558  %cmp = icmp eq <64 x i8> %mask, zeroinitializer1559  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> zeroinitializer1560  ret <64 x i8> %res1561}1562define <64 x i8> @test_masked_i8_to_64_mem_mask2(ptr %p, <64 x i8> %default, <64 x i8> %mask) {1563; CHECK-LABEL: test_masked_i8_to_64_mem_mask2:1564; CHECK:       # %bb.0:1565; CHECK-NEXT:    vptestnmb %zmm1, %zmm1, %k11566; CHECK-NEXT:    vpbroadcastb (%rdi), %zmm0 {%k1}1567; CHECK-NEXT:    retq1568  %s = load i8, ptr %p1569  %vec = insertelement <2 x i8> undef, i8 %s, i32 01570  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1571  %cmp = icmp eq <64 x i8> %mask, zeroinitializer1572  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> %default1573  ret <64 x i8> %res1574}1575 1576define <64 x i8> @test_masked_z_i8_to_64_mem_mask2(ptr %p, <64 x i8> %mask) {1577; CHECK-LABEL: test_masked_z_i8_to_64_mem_mask2:1578; CHECK:       # %bb.0:1579; CHECK-NEXT:    vptestnmb %zmm0, %zmm0, %k11580; CHECK-NEXT:    vpbroadcastb (%rdi), %zmm0 {%k1} {z}1581; CHECK-NEXT:    retq1582  %s = load i8, ptr %p1583  %vec = insertelement <2 x i8> undef, i8 %s, i32 01584  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1585  %cmp = icmp eq <64 x i8> %mask, zeroinitializer1586  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> zeroinitializer1587  ret <64 x i8> %res1588}1589define <64 x i8> @test_masked_i8_to_64_mem_mask3(ptr %p, <64 x i8> %default, <64 x i8> %mask) {1590; CHECK-LABEL: test_masked_i8_to_64_mem_mask3:1591; CHECK:       # %bb.0:1592; CHECK-NEXT:    vptestnmb %zmm1, %zmm1, %k11593; CHECK-NEXT:    vpbroadcastb (%rdi), %zmm0 {%k1}1594; CHECK-NEXT:    retq1595  %s = load i8, ptr %p1596  %vec = insertelement <2 x i8> undef, i8 %s, i32 01597  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1598  %cmp = icmp eq <64 x i8> %mask, zeroinitializer1599  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> %default1600  ret <64 x i8> %res1601}1602 1603define <64 x i8> @test_masked_z_i8_to_64_mem_mask3(ptr %p, <64 x i8> %mask) {1604; CHECK-LABEL: test_masked_z_i8_to_64_mem_mask3:1605; CHECK:       # %bb.0:1606; CHECK-NEXT:    vptestnmb %zmm0, %zmm0, %k11607; CHECK-NEXT:    vpbroadcastb (%rdi), %zmm0 {%k1} {z}1608; CHECK-NEXT:    retq1609  %s = load i8, ptr %p1610  %vec = insertelement <2 x i8> undef, i8 %s, i32 01611  %shuf = shufflevector <2 x i8> %vec, <2 x i8> undef, <64 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1612  %cmp = icmp eq <64 x i8> %mask, zeroinitializer1613  %res = select <64 x i1> %cmp, <64 x i8> %shuf, <64 x i8> zeroinitializer1614  ret <64 x i8> %res1615}1616define <8 x i16> @test_i16_to_8_mem(ptr %p) {1617; CHECK-LABEL: test_i16_to_8_mem:1618; CHECK:       # %bb.0:1619; CHECK-NEXT:    vpbroadcastw (%rdi), %xmm01620; CHECK-NEXT:    retq1621  %s = load i16, ptr %p1622  %vec = insertelement <2 x i16> undef, i16 %s, i32 01623  %res = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1624  ret <8 x i16> %res1625}1626define <8 x i16> @test_masked_i16_to_8_mem_mask0(ptr %p, <8 x i16> %default, <8 x i16> %mask) {1627; CHECK-LABEL: test_masked_i16_to_8_mem_mask0:1628; CHECK:       # %bb.0:1629; CHECK-NEXT:    vptestnmw %xmm1, %xmm1, %k11630; CHECK-NEXT:    vpbroadcastw (%rdi), %xmm0 {%k1}1631; CHECK-NEXT:    retq1632  %s = load i16, ptr %p1633  %vec = insertelement <2 x i16> undef, i16 %s, i32 01634  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1635  %cmp = icmp eq <8 x i16> %mask, zeroinitializer1636  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> %default1637  ret <8 x i16> %res1638}1639 1640define <8 x i16> @test_masked_z_i16_to_8_mem_mask0(ptr %p, <8 x i16> %mask) {1641; CHECK-LABEL: test_masked_z_i16_to_8_mem_mask0:1642; CHECK:       # %bb.0:1643; CHECK-NEXT:    vptestnmw %xmm0, %xmm0, %k11644; CHECK-NEXT:    vpbroadcastw (%rdi), %xmm0 {%k1} {z}1645; CHECK-NEXT:    retq1646  %s = load i16, ptr %p1647  %vec = insertelement <2 x i16> undef, i16 %s, i32 01648  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1649  %cmp = icmp eq <8 x i16> %mask, zeroinitializer1650  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> zeroinitializer1651  ret <8 x i16> %res1652}1653define <8 x i16> @test_masked_i16_to_8_mem_mask1(ptr %p, <8 x i16> %default, <8 x i16> %mask) {1654; CHECK-LABEL: test_masked_i16_to_8_mem_mask1:1655; CHECK:       # %bb.0:1656; CHECK-NEXT:    vptestnmw %xmm1, %xmm1, %k11657; CHECK-NEXT:    vpbroadcastw (%rdi), %xmm0 {%k1}1658; CHECK-NEXT:    retq1659  %s = load i16, ptr %p1660  %vec = insertelement <2 x i16> undef, i16 %s, i32 01661  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1662  %cmp = icmp eq <8 x i16> %mask, zeroinitializer1663  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> %default1664  ret <8 x i16> %res1665}1666 1667define <8 x i16> @test_masked_z_i16_to_8_mem_mask1(ptr %p, <8 x i16> %mask) {1668; CHECK-LABEL: test_masked_z_i16_to_8_mem_mask1:1669; CHECK:       # %bb.0:1670; CHECK-NEXT:    vptestnmw %xmm0, %xmm0, %k11671; CHECK-NEXT:    vpbroadcastw (%rdi), %xmm0 {%k1} {z}1672; CHECK-NEXT:    retq1673  %s = load i16, ptr %p1674  %vec = insertelement <2 x i16> undef, i16 %s, i32 01675  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1676  %cmp = icmp eq <8 x i16> %mask, zeroinitializer1677  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> zeroinitializer1678  ret <8 x i16> %res1679}1680define <8 x i16> @test_masked_i16_to_8_mem_mask2(ptr %p, <8 x i16> %default, <8 x i16> %mask) {1681; CHECK-LABEL: test_masked_i16_to_8_mem_mask2:1682; CHECK:       # %bb.0:1683; CHECK-NEXT:    vptestnmw %xmm1, %xmm1, %k11684; CHECK-NEXT:    vpbroadcastw (%rdi), %xmm0 {%k1}1685; CHECK-NEXT:    retq1686  %s = load i16, ptr %p1687  %vec = insertelement <2 x i16> undef, i16 %s, i32 01688  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1689  %cmp = icmp eq <8 x i16> %mask, zeroinitializer1690  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> %default1691  ret <8 x i16> %res1692}1693 1694define <8 x i16> @test_masked_z_i16_to_8_mem_mask2(ptr %p, <8 x i16> %mask) {1695; CHECK-LABEL: test_masked_z_i16_to_8_mem_mask2:1696; CHECK:       # %bb.0:1697; CHECK-NEXT:    vptestnmw %xmm0, %xmm0, %k11698; CHECK-NEXT:    vpbroadcastw (%rdi), %xmm0 {%k1} {z}1699; CHECK-NEXT:    retq1700  %s = load i16, ptr %p1701  %vec = insertelement <2 x i16> undef, i16 %s, i32 01702  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1703  %cmp = icmp eq <8 x i16> %mask, zeroinitializer1704  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> zeroinitializer1705  ret <8 x i16> %res1706}1707define <8 x i16> @test_masked_i16_to_8_mem_mask3(ptr %p, <8 x i16> %default, <8 x i16> %mask) {1708; CHECK-LABEL: test_masked_i16_to_8_mem_mask3:1709; CHECK:       # %bb.0:1710; CHECK-NEXT:    vptestnmw %xmm1, %xmm1, %k11711; CHECK-NEXT:    vpbroadcastw (%rdi), %xmm0 {%k1}1712; CHECK-NEXT:    retq1713  %s = load i16, ptr %p1714  %vec = insertelement <2 x i16> undef, i16 %s, i32 01715  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1716  %cmp = icmp eq <8 x i16> %mask, zeroinitializer1717  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> %default1718  ret <8 x i16> %res1719}1720 1721define <8 x i16> @test_masked_z_i16_to_8_mem_mask3(ptr %p, <8 x i16> %mask) {1722; CHECK-LABEL: test_masked_z_i16_to_8_mem_mask3:1723; CHECK:       # %bb.0:1724; CHECK-NEXT:    vptestnmw %xmm0, %xmm0, %k11725; CHECK-NEXT:    vpbroadcastw (%rdi), %xmm0 {%k1} {z}1726; CHECK-NEXT:    retq1727  %s = load i16, ptr %p1728  %vec = insertelement <2 x i16> undef, i16 %s, i32 01729  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1730  %cmp = icmp eq <8 x i16> %mask, zeroinitializer1731  %res = select <8 x i1> %cmp, <8 x i16> %shuf, <8 x i16> zeroinitializer1732  ret <8 x i16> %res1733}1734define <16 x i16> @test_i16_to_16_mem(ptr %p) {1735; CHECK-LABEL: test_i16_to_16_mem:1736; CHECK:       # %bb.0:1737; CHECK-NEXT:    vpbroadcastw (%rdi), %ymm01738; CHECK-NEXT:    retq1739  %s = load i16, ptr %p1740  %vec = insertelement <2 x i16> undef, i16 %s, i32 01741  %res = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1742  ret <16 x i16> %res1743}1744define <16 x i16> @test_masked_i16_to_16_mem_mask0(ptr %p, <16 x i16> %default, <16 x i16> %mask) {1745; CHECK-LABEL: test_masked_i16_to_16_mem_mask0:1746; CHECK:       # %bb.0:1747; CHECK-NEXT:    vptestnmw %ymm1, %ymm1, %k11748; CHECK-NEXT:    vpbroadcastw (%rdi), %ymm0 {%k1}1749; CHECK-NEXT:    retq1750  %s = load i16, ptr %p1751  %vec = insertelement <2 x i16> undef, i16 %s, i32 01752  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1753  %cmp = icmp eq <16 x i16> %mask, zeroinitializer1754  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> %default1755  ret <16 x i16> %res1756}1757 1758define <16 x i16> @test_masked_z_i16_to_16_mem_mask0(ptr %p, <16 x i16> %mask) {1759; CHECK-LABEL: test_masked_z_i16_to_16_mem_mask0:1760; CHECK:       # %bb.0:1761; CHECK-NEXT:    vptestnmw %ymm0, %ymm0, %k11762; CHECK-NEXT:    vpbroadcastw (%rdi), %ymm0 {%k1} {z}1763; CHECK-NEXT:    retq1764  %s = load i16, ptr %p1765  %vec = insertelement <2 x i16> undef, i16 %s, i32 01766  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1767  %cmp = icmp eq <16 x i16> %mask, zeroinitializer1768  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> zeroinitializer1769  ret <16 x i16> %res1770}1771define <16 x i16> @test_masked_i16_to_16_mem_mask1(ptr %p, <16 x i16> %default, <16 x i16> %mask) {1772; CHECK-LABEL: test_masked_i16_to_16_mem_mask1:1773; CHECK:       # %bb.0:1774; CHECK-NEXT:    vptestnmw %ymm1, %ymm1, %k11775; CHECK-NEXT:    vpbroadcastw (%rdi), %ymm0 {%k1}1776; CHECK-NEXT:    retq1777  %s = load i16, ptr %p1778  %vec = insertelement <2 x i16> undef, i16 %s, i32 01779  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1780  %cmp = icmp eq <16 x i16> %mask, zeroinitializer1781  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> %default1782  ret <16 x i16> %res1783}1784 1785define <16 x i16> @test_masked_z_i16_to_16_mem_mask1(ptr %p, <16 x i16> %mask) {1786; CHECK-LABEL: test_masked_z_i16_to_16_mem_mask1:1787; CHECK:       # %bb.0:1788; CHECK-NEXT:    vptestnmw %ymm0, %ymm0, %k11789; CHECK-NEXT:    vpbroadcastw (%rdi), %ymm0 {%k1} {z}1790; CHECK-NEXT:    retq1791  %s = load i16, ptr %p1792  %vec = insertelement <2 x i16> undef, i16 %s, i32 01793  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1794  %cmp = icmp eq <16 x i16> %mask, zeroinitializer1795  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> zeroinitializer1796  ret <16 x i16> %res1797}1798define <16 x i16> @test_masked_i16_to_16_mem_mask2(ptr %p, <16 x i16> %default, <16 x i16> %mask) {1799; CHECK-LABEL: test_masked_i16_to_16_mem_mask2:1800; CHECK:       # %bb.0:1801; CHECK-NEXT:    vptestnmw %ymm1, %ymm1, %k11802; CHECK-NEXT:    vpbroadcastw (%rdi), %ymm0 {%k1}1803; CHECK-NEXT:    retq1804  %s = load i16, ptr %p1805  %vec = insertelement <2 x i16> undef, i16 %s, i32 01806  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1807  %cmp = icmp eq <16 x i16> %mask, zeroinitializer1808  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> %default1809  ret <16 x i16> %res1810}1811 1812define <16 x i16> @test_masked_z_i16_to_16_mem_mask2(ptr %p, <16 x i16> %mask) {1813; CHECK-LABEL: test_masked_z_i16_to_16_mem_mask2:1814; CHECK:       # %bb.0:1815; CHECK-NEXT:    vptestnmw %ymm0, %ymm0, %k11816; CHECK-NEXT:    vpbroadcastw (%rdi), %ymm0 {%k1} {z}1817; CHECK-NEXT:    retq1818  %s = load i16, ptr %p1819  %vec = insertelement <2 x i16> undef, i16 %s, i32 01820  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1821  %cmp = icmp eq <16 x i16> %mask, zeroinitializer1822  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> zeroinitializer1823  ret <16 x i16> %res1824}1825define <16 x i16> @test_masked_i16_to_16_mem_mask3(ptr %p, <16 x i16> %default, <16 x i16> %mask) {1826; CHECK-LABEL: test_masked_i16_to_16_mem_mask3:1827; CHECK:       # %bb.0:1828; CHECK-NEXT:    vptestnmw %ymm1, %ymm1, %k11829; CHECK-NEXT:    vpbroadcastw (%rdi), %ymm0 {%k1}1830; CHECK-NEXT:    retq1831  %s = load i16, ptr %p1832  %vec = insertelement <2 x i16> undef, i16 %s, i32 01833  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1834  %cmp = icmp eq <16 x i16> %mask, zeroinitializer1835  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> %default1836  ret <16 x i16> %res1837}1838 1839define <16 x i16> @test_masked_z_i16_to_16_mem_mask3(ptr %p, <16 x i16> %mask) {1840; CHECK-LABEL: test_masked_z_i16_to_16_mem_mask3:1841; CHECK:       # %bb.0:1842; CHECK-NEXT:    vptestnmw %ymm0, %ymm0, %k11843; CHECK-NEXT:    vpbroadcastw (%rdi), %ymm0 {%k1} {z}1844; CHECK-NEXT:    retq1845  %s = load i16, ptr %p1846  %vec = insertelement <2 x i16> undef, i16 %s, i32 01847  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1848  %cmp = icmp eq <16 x i16> %mask, zeroinitializer1849  %res = select <16 x i1> %cmp, <16 x i16> %shuf, <16 x i16> zeroinitializer1850  ret <16 x i16> %res1851}1852define <32 x i16> @test_i16_to_32_mem(ptr %p) {1853; CHECK-LABEL: test_i16_to_32_mem:1854; CHECK:       # %bb.0:1855; CHECK-NEXT:    vpbroadcastw (%rdi), %zmm01856; CHECK-NEXT:    retq1857  %s = load i16, ptr %p1858  %vec = insertelement <2 x i16> undef, i16 %s, i32 01859  %res = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1860  ret <32 x i16> %res1861}1862define <32 x i16> @test_masked_i16_to_32_mem_mask0(ptr %p, <32 x i16> %default, <32 x i16> %mask) {1863; CHECK-LABEL: test_masked_i16_to_32_mem_mask0:1864; CHECK:       # %bb.0:1865; CHECK-NEXT:    vptestnmw %zmm1, %zmm1, %k11866; CHECK-NEXT:    vpbroadcastw (%rdi), %zmm0 {%k1}1867; CHECK-NEXT:    retq1868  %s = load i16, ptr %p1869  %vec = insertelement <2 x i16> undef, i16 %s, i32 01870  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1871  %cmp = icmp eq <32 x i16> %mask, zeroinitializer1872  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> %default1873  ret <32 x i16> %res1874}1875 1876define <32 x i16> @test_masked_z_i16_to_32_mem_mask0(ptr %p, <32 x i16> %mask) {1877; CHECK-LABEL: test_masked_z_i16_to_32_mem_mask0:1878; CHECK:       # %bb.0:1879; CHECK-NEXT:    vptestnmw %zmm0, %zmm0, %k11880; CHECK-NEXT:    vpbroadcastw (%rdi), %zmm0 {%k1} {z}1881; CHECK-NEXT:    retq1882  %s = load i16, ptr %p1883  %vec = insertelement <2 x i16> undef, i16 %s, i32 01884  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1885  %cmp = icmp eq <32 x i16> %mask, zeroinitializer1886  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> zeroinitializer1887  ret <32 x i16> %res1888}1889define <32 x i16> @test_masked_i16_to_32_mem_mask1(ptr %p, <32 x i16> %default, <32 x i16> %mask) {1890; CHECK-LABEL: test_masked_i16_to_32_mem_mask1:1891; CHECK:       # %bb.0:1892; CHECK-NEXT:    vptestnmw %zmm1, %zmm1, %k11893; CHECK-NEXT:    vpbroadcastw (%rdi), %zmm0 {%k1}1894; CHECK-NEXT:    retq1895  %s = load i16, ptr %p1896  %vec = insertelement <2 x i16> undef, i16 %s, i32 01897  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1898  %cmp = icmp eq <32 x i16> %mask, zeroinitializer1899  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> %default1900  ret <32 x i16> %res1901}1902 1903define <32 x i16> @test_masked_z_i16_to_32_mem_mask1(ptr %p, <32 x i16> %mask) {1904; CHECK-LABEL: test_masked_z_i16_to_32_mem_mask1:1905; CHECK:       # %bb.0:1906; CHECK-NEXT:    vptestnmw %zmm0, %zmm0, %k11907; CHECK-NEXT:    vpbroadcastw (%rdi), %zmm0 {%k1} {z}1908; CHECK-NEXT:    retq1909  %s = load i16, ptr %p1910  %vec = insertelement <2 x i16> undef, i16 %s, i32 01911  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1912  %cmp = icmp eq <32 x i16> %mask, zeroinitializer1913  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> zeroinitializer1914  ret <32 x i16> %res1915}1916define <32 x i16> @test_masked_i16_to_32_mem_mask2(ptr %p, <32 x i16> %default, <32 x i16> %mask) {1917; CHECK-LABEL: test_masked_i16_to_32_mem_mask2:1918; CHECK:       # %bb.0:1919; CHECK-NEXT:    vptestnmw %zmm1, %zmm1, %k11920; CHECK-NEXT:    vpbroadcastw (%rdi), %zmm0 {%k1}1921; CHECK-NEXT:    retq1922  %s = load i16, ptr %p1923  %vec = insertelement <2 x i16> undef, i16 %s, i32 01924  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1925  %cmp = icmp eq <32 x i16> %mask, zeroinitializer1926  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> %default1927  ret <32 x i16> %res1928}1929 1930define <32 x i16> @test_masked_z_i16_to_32_mem_mask2(ptr %p, <32 x i16> %mask) {1931; CHECK-LABEL: test_masked_z_i16_to_32_mem_mask2:1932; CHECK:       # %bb.0:1933; CHECK-NEXT:    vptestnmw %zmm0, %zmm0, %k11934; CHECK-NEXT:    vpbroadcastw (%rdi), %zmm0 {%k1} {z}1935; CHECK-NEXT:    retq1936  %s = load i16, ptr %p1937  %vec = insertelement <2 x i16> undef, i16 %s, i32 01938  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1939  %cmp = icmp eq <32 x i16> %mask, zeroinitializer1940  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> zeroinitializer1941  ret <32 x i16> %res1942}1943define <32 x i16> @test_masked_i16_to_32_mem_mask3(ptr %p, <32 x i16> %default, <32 x i16> %mask) {1944; CHECK-LABEL: test_masked_i16_to_32_mem_mask3:1945; CHECK:       # %bb.0:1946; CHECK-NEXT:    vptestnmw %zmm1, %zmm1, %k11947; CHECK-NEXT:    vpbroadcastw (%rdi), %zmm0 {%k1}1948; CHECK-NEXT:    retq1949  %s = load i16, ptr %p1950  %vec = insertelement <2 x i16> undef, i16 %s, i32 01951  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1952  %cmp = icmp eq <32 x i16> %mask, zeroinitializer1953  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> %default1954  ret <32 x i16> %res1955}1956 1957define <32 x i16> @test_masked_z_i16_to_32_mem_mask3(ptr %p, <32 x i16> %mask) {1958; CHECK-LABEL: test_masked_z_i16_to_32_mem_mask3:1959; CHECK:       # %bb.0:1960; CHECK-NEXT:    vptestnmw %zmm0, %zmm0, %k11961; CHECK-NEXT:    vpbroadcastw (%rdi), %zmm0 {%k1} {z}1962; CHECK-NEXT:    retq1963  %s = load i16, ptr %p1964  %vec = insertelement <2 x i16> undef, i16 %s, i32 01965  %shuf = shufflevector <2 x i16> %vec, <2 x i16> undef, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1966  %cmp = icmp eq <32 x i16> %mask, zeroinitializer1967  %res = select <32 x i1> %cmp, <32 x i16> %shuf, <32 x i16> zeroinitializer1968  ret <32 x i16> %res1969}1970define <4 x i32> @test_i32_to_4_mem(ptr %p) {1971; CHECK-LABEL: test_i32_to_4_mem:1972; CHECK:       # %bb.0:1973; CHECK-NEXT:    vbroadcastss (%rdi), %xmm01974; CHECK-NEXT:    retq1975  %s = load i32, ptr %p1976  %vec = insertelement <2 x i32> undef, i32 %s, i32 01977  %res = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>1978  ret <4 x i32> %res1979}1980define <4 x i32> @test_masked_i32_to_4_mem_mask0(ptr %p, <4 x i32> %default, <4 x i32> %mask) {1981; CHECK-LABEL: test_masked_i32_to_4_mem_mask0:1982; CHECK:       # %bb.0:1983; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k11984; CHECK-NEXT:    vpbroadcastd (%rdi), %xmm0 {%k1}1985; CHECK-NEXT:    retq1986  %s = load i32, ptr %p1987  %vec = insertelement <2 x i32> undef, i32 %s, i32 01988  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>1989  %cmp = icmp eq <4 x i32> %mask, zeroinitializer1990  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default1991  ret <4 x i32> %res1992}1993 1994define <4 x i32> @test_masked_z_i32_to_4_mem_mask0(ptr %p, <4 x i32> %mask) {1995; CHECK-LABEL: test_masked_z_i32_to_4_mem_mask0:1996; CHECK:       # %bb.0:1997; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k11998; CHECK-NEXT:    vpbroadcastd (%rdi), %xmm0 {%k1} {z}1999; CHECK-NEXT:    retq2000  %s = load i32, ptr %p2001  %vec = insertelement <2 x i32> undef, i32 %s, i32 02002  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2003  %cmp = icmp eq <4 x i32> %mask, zeroinitializer2004  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer2005  ret <4 x i32> %res2006}2007define <4 x i32> @test_masked_i32_to_4_mem_mask1(ptr %p, <4 x i32> %default, <4 x i32> %mask) {2008; CHECK-LABEL: test_masked_i32_to_4_mem_mask1:2009; CHECK:       # %bb.0:2010; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k12011; CHECK-NEXT:    vpbroadcastd (%rdi), %xmm0 {%k1}2012; CHECK-NEXT:    retq2013  %s = load i32, ptr %p2014  %vec = insertelement <2 x i32> undef, i32 %s, i32 02015  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2016  %cmp = icmp eq <4 x i32> %mask, zeroinitializer2017  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default2018  ret <4 x i32> %res2019}2020 2021define <4 x i32> @test_masked_z_i32_to_4_mem_mask1(ptr %p, <4 x i32> %mask) {2022; CHECK-LABEL: test_masked_z_i32_to_4_mem_mask1:2023; CHECK:       # %bb.0:2024; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k12025; CHECK-NEXT:    vpbroadcastd (%rdi), %xmm0 {%k1} {z}2026; CHECK-NEXT:    retq2027  %s = load i32, ptr %p2028  %vec = insertelement <2 x i32> undef, i32 %s, i32 02029  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2030  %cmp = icmp eq <4 x i32> %mask, zeroinitializer2031  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer2032  ret <4 x i32> %res2033}2034define <4 x i32> @test_masked_i32_to_4_mem_mask2(ptr %p, <4 x i32> %default, <4 x i32> %mask) {2035; CHECK-LABEL: test_masked_i32_to_4_mem_mask2:2036; CHECK:       # %bb.0:2037; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k12038; CHECK-NEXT:    vpbroadcastd (%rdi), %xmm0 {%k1}2039; CHECK-NEXT:    retq2040  %s = load i32, ptr %p2041  %vec = insertelement <2 x i32> undef, i32 %s, i32 02042  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2043  %cmp = icmp eq <4 x i32> %mask, zeroinitializer2044  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default2045  ret <4 x i32> %res2046}2047 2048define <4 x i32> @test_masked_z_i32_to_4_mem_mask2(ptr %p, <4 x i32> %mask) {2049; CHECK-LABEL: test_masked_z_i32_to_4_mem_mask2:2050; CHECK:       # %bb.0:2051; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k12052; CHECK-NEXT:    vpbroadcastd (%rdi), %xmm0 {%k1} {z}2053; CHECK-NEXT:    retq2054  %s = load i32, ptr %p2055  %vec = insertelement <2 x i32> undef, i32 %s, i32 02056  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2057  %cmp = icmp eq <4 x i32> %mask, zeroinitializer2058  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer2059  ret <4 x i32> %res2060}2061define <4 x i32> @test_masked_i32_to_4_mem_mask3(ptr %p, <4 x i32> %default, <4 x i32> %mask) {2062; CHECK-LABEL: test_masked_i32_to_4_mem_mask3:2063; CHECK:       # %bb.0:2064; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k12065; CHECK-NEXT:    vpbroadcastd (%rdi), %xmm0 {%k1}2066; CHECK-NEXT:    retq2067  %s = load i32, ptr %p2068  %vec = insertelement <2 x i32> undef, i32 %s, i32 02069  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2070  %cmp = icmp eq <4 x i32> %mask, zeroinitializer2071  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> %default2072  ret <4 x i32> %res2073}2074 2075define <4 x i32> @test_masked_z_i32_to_4_mem_mask3(ptr %p, <4 x i32> %mask) {2076; CHECK-LABEL: test_masked_z_i32_to_4_mem_mask3:2077; CHECK:       # %bb.0:2078; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k12079; CHECK-NEXT:    vpbroadcastd (%rdi), %xmm0 {%k1} {z}2080; CHECK-NEXT:    retq2081  %s = load i32, ptr %p2082  %vec = insertelement <2 x i32> undef, i32 %s, i32 02083  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2084  %cmp = icmp eq <4 x i32> %mask, zeroinitializer2085  %res = select <4 x i1> %cmp, <4 x i32> %shuf, <4 x i32> zeroinitializer2086  ret <4 x i32> %res2087}2088define <8 x i32> @test_i32_to_8_mem(ptr %p) {2089; CHECK-LABEL: test_i32_to_8_mem:2090; CHECK:       # %bb.0:2091; CHECK-NEXT:    vbroadcastss (%rdi), %ymm02092; CHECK-NEXT:    retq2093  %s = load i32, ptr %p2094  %vec = insertelement <2 x i32> undef, i32 %s, i32 02095  %res = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2096  ret <8 x i32> %res2097}2098define <8 x i32> @test_masked_i32_to_8_mem_mask0(ptr %p, <8 x i32> %default, <8 x i32> %mask) {2099; CHECK-LABEL: test_masked_i32_to_8_mem_mask0:2100; CHECK:       # %bb.0:2101; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k12102; CHECK-NEXT:    vpbroadcastd (%rdi), %ymm0 {%k1}2103; CHECK-NEXT:    retq2104  %s = load i32, ptr %p2105  %vec = insertelement <2 x i32> undef, i32 %s, i32 02106  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2107  %cmp = icmp eq <8 x i32> %mask, zeroinitializer2108  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default2109  ret <8 x i32> %res2110}2111 2112define <8 x i32> @test_masked_z_i32_to_8_mem_mask0(ptr %p, <8 x i32> %mask) {2113; CHECK-LABEL: test_masked_z_i32_to_8_mem_mask0:2114; CHECK:       # %bb.0:2115; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k12116; CHECK-NEXT:    vpbroadcastd (%rdi), %ymm0 {%k1} {z}2117; CHECK-NEXT:    retq2118  %s = load i32, ptr %p2119  %vec = insertelement <2 x i32> undef, i32 %s, i32 02120  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2121  %cmp = icmp eq <8 x i32> %mask, zeroinitializer2122  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer2123  ret <8 x i32> %res2124}2125define <8 x i32> @test_masked_i32_to_8_mem_mask1(ptr %p, <8 x i32> %default, <8 x i32> %mask) {2126; CHECK-LABEL: test_masked_i32_to_8_mem_mask1:2127; CHECK:       # %bb.0:2128; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k12129; CHECK-NEXT:    vpbroadcastd (%rdi), %ymm0 {%k1}2130; CHECK-NEXT:    retq2131  %s = load i32, ptr %p2132  %vec = insertelement <2 x i32> undef, i32 %s, i32 02133  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2134  %cmp = icmp eq <8 x i32> %mask, zeroinitializer2135  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default2136  ret <8 x i32> %res2137}2138 2139define <8 x i32> @test_masked_z_i32_to_8_mem_mask1(ptr %p, <8 x i32> %mask) {2140; CHECK-LABEL: test_masked_z_i32_to_8_mem_mask1:2141; CHECK:       # %bb.0:2142; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k12143; CHECK-NEXT:    vpbroadcastd (%rdi), %ymm0 {%k1} {z}2144; CHECK-NEXT:    retq2145  %s = load i32, ptr %p2146  %vec = insertelement <2 x i32> undef, i32 %s, i32 02147  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2148  %cmp = icmp eq <8 x i32> %mask, zeroinitializer2149  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer2150  ret <8 x i32> %res2151}2152define <8 x i32> @test_masked_i32_to_8_mem_mask2(ptr %p, <8 x i32> %default, <8 x i32> %mask) {2153; CHECK-LABEL: test_masked_i32_to_8_mem_mask2:2154; CHECK:       # %bb.0:2155; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k12156; CHECK-NEXT:    vpbroadcastd (%rdi), %ymm0 {%k1}2157; CHECK-NEXT:    retq2158  %s = load i32, ptr %p2159  %vec = insertelement <2 x i32> undef, i32 %s, i32 02160  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2161  %cmp = icmp eq <8 x i32> %mask, zeroinitializer2162  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default2163  ret <8 x i32> %res2164}2165 2166define <8 x i32> @test_masked_z_i32_to_8_mem_mask2(ptr %p, <8 x i32> %mask) {2167; CHECK-LABEL: test_masked_z_i32_to_8_mem_mask2:2168; CHECK:       # %bb.0:2169; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k12170; CHECK-NEXT:    vpbroadcastd (%rdi), %ymm0 {%k1} {z}2171; CHECK-NEXT:    retq2172  %s = load i32, ptr %p2173  %vec = insertelement <2 x i32> undef, i32 %s, i32 02174  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2175  %cmp = icmp eq <8 x i32> %mask, zeroinitializer2176  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer2177  ret <8 x i32> %res2178}2179define <8 x i32> @test_masked_i32_to_8_mem_mask3(ptr %p, <8 x i32> %default, <8 x i32> %mask) {2180; CHECK-LABEL: test_masked_i32_to_8_mem_mask3:2181; CHECK:       # %bb.0:2182; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k12183; CHECK-NEXT:    vpbroadcastd (%rdi), %ymm0 {%k1}2184; CHECK-NEXT:    retq2185  %s = load i32, ptr %p2186  %vec = insertelement <2 x i32> undef, i32 %s, i32 02187  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2188  %cmp = icmp eq <8 x i32> %mask, zeroinitializer2189  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> %default2190  ret <8 x i32> %res2191}2192 2193define <8 x i32> @test_masked_z_i32_to_8_mem_mask3(ptr %p, <8 x i32> %mask) {2194; CHECK-LABEL: test_masked_z_i32_to_8_mem_mask3:2195; CHECK:       # %bb.0:2196; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k12197; CHECK-NEXT:    vpbroadcastd (%rdi), %ymm0 {%k1} {z}2198; CHECK-NEXT:    retq2199  %s = load i32, ptr %p2200  %vec = insertelement <2 x i32> undef, i32 %s, i32 02201  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2202  %cmp = icmp eq <8 x i32> %mask, zeroinitializer2203  %res = select <8 x i1> %cmp, <8 x i32> %shuf, <8 x i32> zeroinitializer2204  ret <8 x i32> %res2205}2206define <16 x i32> @test_i32_to_16_mem(ptr %p) {2207; CHECK-LABEL: test_i32_to_16_mem:2208; CHECK:       # %bb.0:2209; CHECK-NEXT:    vbroadcastss (%rdi), %zmm02210; CHECK-NEXT:    retq2211  %s = load i32, ptr %p2212  %vec = insertelement <2 x i32> undef, i32 %s, i32 02213  %res = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2214  ret <16 x i32> %res2215}2216define <16 x i32> @test_masked_i32_to_16_mem_mask0(ptr %p, <16 x i32> %default, <16 x i32> %mask) {2217; CHECK-LABEL: test_masked_i32_to_16_mem_mask0:2218; CHECK:       # %bb.0:2219; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k12220; CHECK-NEXT:    vpbroadcastd (%rdi), %zmm0 {%k1}2221; CHECK-NEXT:    retq2222  %s = load i32, ptr %p2223  %vec = insertelement <2 x i32> undef, i32 %s, i32 02224  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2225  %cmp = icmp eq <16 x i32> %mask, zeroinitializer2226  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default2227  ret <16 x i32> %res2228}2229 2230define <16 x i32> @test_masked_z_i32_to_16_mem_mask0(ptr %p, <16 x i32> %mask) {2231; CHECK-LABEL: test_masked_z_i32_to_16_mem_mask0:2232; CHECK:       # %bb.0:2233; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k12234; CHECK-NEXT:    vpbroadcastd (%rdi), %zmm0 {%k1} {z}2235; CHECK-NEXT:    retq2236  %s = load i32, ptr %p2237  %vec = insertelement <2 x i32> undef, i32 %s, i32 02238  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2239  %cmp = icmp eq <16 x i32> %mask, zeroinitializer2240  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer2241  ret <16 x i32> %res2242}2243define <16 x i32> @test_masked_i32_to_16_mem_mask1(ptr %p, <16 x i32> %default, <16 x i32> %mask) {2244; CHECK-LABEL: test_masked_i32_to_16_mem_mask1:2245; CHECK:       # %bb.0:2246; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k12247; CHECK-NEXT:    vpbroadcastd (%rdi), %zmm0 {%k1}2248; CHECK-NEXT:    retq2249  %s = load i32, ptr %p2250  %vec = insertelement <2 x i32> undef, i32 %s, i32 02251  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2252  %cmp = icmp eq <16 x i32> %mask, zeroinitializer2253  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default2254  ret <16 x i32> %res2255}2256 2257define <16 x i32> @test_masked_z_i32_to_16_mem_mask1(ptr %p, <16 x i32> %mask) {2258; CHECK-LABEL: test_masked_z_i32_to_16_mem_mask1:2259; CHECK:       # %bb.0:2260; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k12261; CHECK-NEXT:    vpbroadcastd (%rdi), %zmm0 {%k1} {z}2262; CHECK-NEXT:    retq2263  %s = load i32, ptr %p2264  %vec = insertelement <2 x i32> undef, i32 %s, i32 02265  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2266  %cmp = icmp eq <16 x i32> %mask, zeroinitializer2267  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer2268  ret <16 x i32> %res2269}2270define <16 x i32> @test_masked_i32_to_16_mem_mask2(ptr %p, <16 x i32> %default, <16 x i32> %mask) {2271; CHECK-LABEL: test_masked_i32_to_16_mem_mask2:2272; CHECK:       # %bb.0:2273; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k12274; CHECK-NEXT:    vpbroadcastd (%rdi), %zmm0 {%k1}2275; CHECK-NEXT:    retq2276  %s = load i32, ptr %p2277  %vec = insertelement <2 x i32> undef, i32 %s, i32 02278  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2279  %cmp = icmp eq <16 x i32> %mask, zeroinitializer2280  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default2281  ret <16 x i32> %res2282}2283 2284define <16 x i32> @test_masked_z_i32_to_16_mem_mask2(ptr %p, <16 x i32> %mask) {2285; CHECK-LABEL: test_masked_z_i32_to_16_mem_mask2:2286; CHECK:       # %bb.0:2287; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k12288; CHECK-NEXT:    vpbroadcastd (%rdi), %zmm0 {%k1} {z}2289; CHECK-NEXT:    retq2290  %s = load i32, ptr %p2291  %vec = insertelement <2 x i32> undef, i32 %s, i32 02292  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2293  %cmp = icmp eq <16 x i32> %mask, zeroinitializer2294  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer2295  ret <16 x i32> %res2296}2297define <16 x i32> @test_masked_i32_to_16_mem_mask3(ptr %p, <16 x i32> %default, <16 x i32> %mask) {2298; CHECK-LABEL: test_masked_i32_to_16_mem_mask3:2299; CHECK:       # %bb.0:2300; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k12301; CHECK-NEXT:    vpbroadcastd (%rdi), %zmm0 {%k1}2302; CHECK-NEXT:    retq2303  %s = load i32, ptr %p2304  %vec = insertelement <2 x i32> undef, i32 %s, i32 02305  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2306  %cmp = icmp eq <16 x i32> %mask, zeroinitializer2307  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> %default2308  ret <16 x i32> %res2309}2310 2311define <16 x i32> @test_masked_z_i32_to_16_mem_mask3(ptr %p, <16 x i32> %mask) {2312; CHECK-LABEL: test_masked_z_i32_to_16_mem_mask3:2313; CHECK:       # %bb.0:2314; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k12315; CHECK-NEXT:    vpbroadcastd (%rdi), %zmm0 {%k1} {z}2316; CHECK-NEXT:    retq2317  %s = load i32, ptr %p2318  %vec = insertelement <2 x i32> undef, i32 %s, i32 02319  %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2320  %cmp = icmp eq <16 x i32> %mask, zeroinitializer2321  %res = select <16 x i1> %cmp, <16 x i32> %shuf, <16 x i32> zeroinitializer2322  ret <16 x i32> %res2323}2324define <2 x i64> @test_i64_to_2_mem(ptr %p) {2325; CHECK-LABEL: test_i64_to_2_mem:2326; CHECK:       # %bb.0:2327; CHECK-NEXT:    vmovddup {{.*#+}} xmm0 = mem[0,0]2328; CHECK-NEXT:    retq2329  %s = load i64, ptr %p2330  %vec = insertelement <2 x i64> undef, i64 %s, i32 02331  %res = shufflevector <2 x i64> %vec, <2 x i64> undef, <2 x i32> <i32 0, i32 0>2332  ret <2 x i64> %res2333}2334define <2 x i64> @test_masked_i64_to_2_mem_mask0(ptr %p, <2 x i64> %default, <2 x i64> %mask) {2335; CHECK-LABEL: test_masked_i64_to_2_mem_mask0:2336; CHECK:       # %bb.0:2337; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k12338; CHECK-NEXT:    vpbroadcastq (%rdi), %xmm0 {%k1}2339; CHECK-NEXT:    retq2340  %s = load i64, ptr %p2341  %vec = insertelement <2 x i64> undef, i64 %s, i32 02342  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <2 x i32> <i32 0, i32 0>2343  %cmp = icmp eq <2 x i64> %mask, zeroinitializer2344  %res = select <2 x i1> %cmp, <2 x i64> %shuf, <2 x i64> %default2345  ret <2 x i64> %res2346}2347 2348define <2 x i64> @test_masked_z_i64_to_2_mem_mask0(ptr %p, <2 x i64> %mask) {2349; CHECK-LABEL: test_masked_z_i64_to_2_mem_mask0:2350; CHECK:       # %bb.0:2351; CHECK-NEXT:    vptestnmq %xmm0, %xmm0, %k12352; CHECK-NEXT:    vpbroadcastq (%rdi), %xmm0 {%k1} {z}2353; CHECK-NEXT:    retq2354  %s = load i64, ptr %p2355  %vec = insertelement <2 x i64> undef, i64 %s, i32 02356  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <2 x i32> <i32 0, i32 0>2357  %cmp = icmp eq <2 x i64> %mask, zeroinitializer2358  %res = select <2 x i1> %cmp, <2 x i64> %shuf, <2 x i64> zeroinitializer2359  ret <2 x i64> %res2360}2361define <2 x i64> @test_masked_i64_to_2_mem_mask1(ptr %p, <2 x i64> %default, <2 x i64> %mask) {2362; CHECK-LABEL: test_masked_i64_to_2_mem_mask1:2363; CHECK:       # %bb.0:2364; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k12365; CHECK-NEXT:    vpbroadcastq (%rdi), %xmm0 {%k1}2366; CHECK-NEXT:    retq2367  %s = load i64, ptr %p2368  %vec = insertelement <2 x i64> undef, i64 %s, i32 02369  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <2 x i32> <i32 0, i32 0>2370  %cmp = icmp eq <2 x i64> %mask, zeroinitializer2371  %res = select <2 x i1> %cmp, <2 x i64> %shuf, <2 x i64> %default2372  ret <2 x i64> %res2373}2374 2375define <2 x i64> @test_masked_z_i64_to_2_mem_mask1(ptr %p, <2 x i64> %mask) {2376; CHECK-LABEL: test_masked_z_i64_to_2_mem_mask1:2377; CHECK:       # %bb.0:2378; CHECK-NEXT:    vptestnmq %xmm0, %xmm0, %k12379; CHECK-NEXT:    vpbroadcastq (%rdi), %xmm0 {%k1} {z}2380; CHECK-NEXT:    retq2381  %s = load i64, ptr %p2382  %vec = insertelement <2 x i64> undef, i64 %s, i32 02383  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <2 x i32> <i32 0, i32 0>2384  %cmp = icmp eq <2 x i64> %mask, zeroinitializer2385  %res = select <2 x i1> %cmp, <2 x i64> %shuf, <2 x i64> zeroinitializer2386  ret <2 x i64> %res2387}2388define <4 x i64> @test_i64_to_4_mem(ptr %p) {2389; CHECK-LABEL: test_i64_to_4_mem:2390; CHECK:       # %bb.0:2391; CHECK-NEXT:    vbroadcastsd (%rdi), %ymm02392; CHECK-NEXT:    retq2393  %s = load i64, ptr %p2394  %vec = insertelement <2 x i64> undef, i64 %s, i32 02395  %res = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2396  ret <4 x i64> %res2397}2398define <4 x i64> @test_masked_i64_to_4_mem_mask0(ptr %p, <4 x i64> %default, <4 x i64> %mask) {2399; CHECK-LABEL: test_masked_i64_to_4_mem_mask0:2400; CHECK:       # %bb.0:2401; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k12402; CHECK-NEXT:    vpbroadcastq (%rdi), %ymm0 {%k1}2403; CHECK-NEXT:    retq2404  %s = load i64, ptr %p2405  %vec = insertelement <2 x i64> undef, i64 %s, i32 02406  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2407  %cmp = icmp eq <4 x i64> %mask, zeroinitializer2408  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> %default2409  ret <4 x i64> %res2410}2411 2412define <4 x i64> @test_masked_z_i64_to_4_mem_mask0(ptr %p, <4 x i64> %mask) {2413; CHECK-LABEL: test_masked_z_i64_to_4_mem_mask0:2414; CHECK:       # %bb.0:2415; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k12416; CHECK-NEXT:    vpbroadcastq (%rdi), %ymm0 {%k1} {z}2417; CHECK-NEXT:    retq2418  %s = load i64, ptr %p2419  %vec = insertelement <2 x i64> undef, i64 %s, i32 02420  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2421  %cmp = icmp eq <4 x i64> %mask, zeroinitializer2422  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> zeroinitializer2423  ret <4 x i64> %res2424}2425define <4 x i64> @test_masked_i64_to_4_mem_mask1(ptr %p, <4 x i64> %default, <4 x i64> %mask) {2426; CHECK-LABEL: test_masked_i64_to_4_mem_mask1:2427; CHECK:       # %bb.0:2428; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k12429; CHECK-NEXT:    vpbroadcastq (%rdi), %ymm0 {%k1}2430; CHECK-NEXT:    retq2431  %s = load i64, ptr %p2432  %vec = insertelement <2 x i64> undef, i64 %s, i32 02433  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2434  %cmp = icmp eq <4 x i64> %mask, zeroinitializer2435  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> %default2436  ret <4 x i64> %res2437}2438 2439define <4 x i64> @test_masked_z_i64_to_4_mem_mask1(ptr %p, <4 x i64> %mask) {2440; CHECK-LABEL: test_masked_z_i64_to_4_mem_mask1:2441; CHECK:       # %bb.0:2442; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k12443; CHECK-NEXT:    vpbroadcastq (%rdi), %ymm0 {%k1} {z}2444; CHECK-NEXT:    retq2445  %s = load i64, ptr %p2446  %vec = insertelement <2 x i64> undef, i64 %s, i32 02447  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2448  %cmp = icmp eq <4 x i64> %mask, zeroinitializer2449  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> zeroinitializer2450  ret <4 x i64> %res2451}2452define <4 x i64> @test_masked_i64_to_4_mem_mask2(ptr %p, <4 x i64> %default, <4 x i64> %mask) {2453; CHECK-LABEL: test_masked_i64_to_4_mem_mask2:2454; CHECK:       # %bb.0:2455; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k12456; CHECK-NEXT:    vpbroadcastq (%rdi), %ymm0 {%k1}2457; CHECK-NEXT:    retq2458  %s = load i64, ptr %p2459  %vec = insertelement <2 x i64> undef, i64 %s, i32 02460  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2461  %cmp = icmp eq <4 x i64> %mask, zeroinitializer2462  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> %default2463  ret <4 x i64> %res2464}2465 2466define <4 x i64> @test_masked_z_i64_to_4_mem_mask2(ptr %p, <4 x i64> %mask) {2467; CHECK-LABEL: test_masked_z_i64_to_4_mem_mask2:2468; CHECK:       # %bb.0:2469; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k12470; CHECK-NEXT:    vpbroadcastq (%rdi), %ymm0 {%k1} {z}2471; CHECK-NEXT:    retq2472  %s = load i64, ptr %p2473  %vec = insertelement <2 x i64> undef, i64 %s, i32 02474  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2475  %cmp = icmp eq <4 x i64> %mask, zeroinitializer2476  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> zeroinitializer2477  ret <4 x i64> %res2478}2479define <4 x i64> @test_masked_i64_to_4_mem_mask3(ptr %p, <4 x i64> %default, <4 x i64> %mask) {2480; CHECK-LABEL: test_masked_i64_to_4_mem_mask3:2481; CHECK:       # %bb.0:2482; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k12483; CHECK-NEXT:    vpbroadcastq (%rdi), %ymm0 {%k1}2484; CHECK-NEXT:    retq2485  %s = load i64, ptr %p2486  %vec = insertelement <2 x i64> undef, i64 %s, i32 02487  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2488  %cmp = icmp eq <4 x i64> %mask, zeroinitializer2489  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> %default2490  ret <4 x i64> %res2491}2492 2493define <4 x i64> @test_masked_z_i64_to_4_mem_mask3(ptr %p, <4 x i64> %mask) {2494; CHECK-LABEL: test_masked_z_i64_to_4_mem_mask3:2495; CHECK:       # %bb.0:2496; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k12497; CHECK-NEXT:    vpbroadcastq (%rdi), %ymm0 {%k1} {z}2498; CHECK-NEXT:    retq2499  %s = load i64, ptr %p2500  %vec = insertelement <2 x i64> undef, i64 %s, i32 02501  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>2502  %cmp = icmp eq <4 x i64> %mask, zeroinitializer2503  %res = select <4 x i1> %cmp, <4 x i64> %shuf, <4 x i64> zeroinitializer2504  ret <4 x i64> %res2505}2506define <8 x i64> @test_i64_to_8_mem(ptr %p) {2507; CHECK-LABEL: test_i64_to_8_mem:2508; CHECK:       # %bb.0:2509; CHECK-NEXT:    vbroadcastsd (%rdi), %zmm02510; CHECK-NEXT:    retq2511  %s = load i64, ptr %p2512  %vec = insertelement <2 x i64> undef, i64 %s, i32 02513  %res = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2514  ret <8 x i64> %res2515}2516define <8 x i64> @test_masked_i64_to_8_mem_mask0(ptr %p, <8 x i64> %default, <8 x i64> %mask) {2517; CHECK-LABEL: test_masked_i64_to_8_mem_mask0:2518; CHECK:       # %bb.0:2519; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k12520; CHECK-NEXT:    vpbroadcastq (%rdi), %zmm0 {%k1}2521; CHECK-NEXT:    retq2522  %s = load i64, ptr %p2523  %vec = insertelement <2 x i64> undef, i64 %s, i32 02524  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2525  %cmp = icmp eq <8 x i64> %mask, zeroinitializer2526  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default2527  ret <8 x i64> %res2528}2529 2530define <8 x i64> @test_masked_z_i64_to_8_mem_mask0(ptr %p, <8 x i64> %mask) {2531; CHECK-LABEL: test_masked_z_i64_to_8_mem_mask0:2532; CHECK:       # %bb.0:2533; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k12534; CHECK-NEXT:    vpbroadcastq (%rdi), %zmm0 {%k1} {z}2535; CHECK-NEXT:    retq2536  %s = load i64, ptr %p2537  %vec = insertelement <2 x i64> undef, i64 %s, i32 02538  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2539  %cmp = icmp eq <8 x i64> %mask, zeroinitializer2540  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer2541  ret <8 x i64> %res2542}2543define <8 x i64> @test_masked_i64_to_8_mem_mask1(ptr %p, <8 x i64> %default, <8 x i64> %mask) {2544; CHECK-LABEL: test_masked_i64_to_8_mem_mask1:2545; CHECK:       # %bb.0:2546; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k12547; CHECK-NEXT:    vpbroadcastq (%rdi), %zmm0 {%k1}2548; CHECK-NEXT:    retq2549  %s = load i64, ptr %p2550  %vec = insertelement <2 x i64> undef, i64 %s, i32 02551  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2552  %cmp = icmp eq <8 x i64> %mask, zeroinitializer2553  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default2554  ret <8 x i64> %res2555}2556 2557define <8 x i64> @test_masked_z_i64_to_8_mem_mask1(ptr %p, <8 x i64> %mask) {2558; CHECK-LABEL: test_masked_z_i64_to_8_mem_mask1:2559; CHECK:       # %bb.0:2560; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k12561; CHECK-NEXT:    vpbroadcastq (%rdi), %zmm0 {%k1} {z}2562; CHECK-NEXT:    retq2563  %s = load i64, ptr %p2564  %vec = insertelement <2 x i64> undef, i64 %s, i32 02565  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2566  %cmp = icmp eq <8 x i64> %mask, zeroinitializer2567  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer2568  ret <8 x i64> %res2569}2570define <8 x i64> @test_masked_i64_to_8_mem_mask2(ptr %p, <8 x i64> %default, <8 x i64> %mask) {2571; CHECK-LABEL: test_masked_i64_to_8_mem_mask2:2572; CHECK:       # %bb.0:2573; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k12574; CHECK-NEXT:    vpbroadcastq (%rdi), %zmm0 {%k1}2575; CHECK-NEXT:    retq2576  %s = load i64, ptr %p2577  %vec = insertelement <2 x i64> undef, i64 %s, i32 02578  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2579  %cmp = icmp eq <8 x i64> %mask, zeroinitializer2580  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default2581  ret <8 x i64> %res2582}2583 2584define <8 x i64> @test_masked_z_i64_to_8_mem_mask2(ptr %p, <8 x i64> %mask) {2585; CHECK-LABEL: test_masked_z_i64_to_8_mem_mask2:2586; CHECK:       # %bb.0:2587; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k12588; CHECK-NEXT:    vpbroadcastq (%rdi), %zmm0 {%k1} {z}2589; CHECK-NEXT:    retq2590  %s = load i64, ptr %p2591  %vec = insertelement <2 x i64> undef, i64 %s, i32 02592  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2593  %cmp = icmp eq <8 x i64> %mask, zeroinitializer2594  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer2595  ret <8 x i64> %res2596}2597define <8 x i64> @test_masked_i64_to_8_mem_mask3(ptr %p, <8 x i64> %default, <8 x i64> %mask) {2598; CHECK-LABEL: test_masked_i64_to_8_mem_mask3:2599; CHECK:       # %bb.0:2600; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k12601; CHECK-NEXT:    vpbroadcastq (%rdi), %zmm0 {%k1}2602; CHECK-NEXT:    retq2603  %s = load i64, ptr %p2604  %vec = insertelement <2 x i64> undef, i64 %s, i32 02605  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2606  %cmp = icmp eq <8 x i64> %mask, zeroinitializer2607  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> %default2608  ret <8 x i64> %res2609}2610 2611define <8 x i64> @test_masked_z_i64_to_8_mem_mask3(ptr %p, <8 x i64> %mask) {2612; CHECK-LABEL: test_masked_z_i64_to_8_mem_mask3:2613; CHECK:       # %bb.0:2614; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k12615; CHECK-NEXT:    vpbroadcastq (%rdi), %zmm0 {%k1} {z}2616; CHECK-NEXT:    retq2617  %s = load i64, ptr %p2618  %vec = insertelement <2 x i64> undef, i64 %s, i32 02619  %shuf = shufflevector <2 x i64> %vec, <2 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>2620  %cmp = icmp eq <8 x i64> %mask, zeroinitializer2621  %res = select <8 x i1> %cmp, <8 x i64> %shuf, <8 x i64> zeroinitializer2622  ret <8 x i64> %res2623}2624