1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl | FileCheck %s --check-prefix=ALL --check-prefix=KNL 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=skx | FileCheck %s --check-prefix=ALL --check-prefix=SKX 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @zext_8x8mem_to_8x16(<8 x i8> *%i , <8 x i1> %mask) nounwind readnone { 6*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_8x8mem_to_8x16: 7*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 8*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} xmm1 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero 9*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %xmm0, %xmm0 10*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %xmm0, %xmm0 11*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm1, %xmm0, %xmm0 12*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 13*9880d681SAndroid Build Coastguard Worker; 14*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_8x8mem_to_8x16: 15*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 16*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 17*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k1 18*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxbw {{.*#+}} xmm0 {%k1} {z} = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero 19*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 20*9880d681SAndroid Build Coastguard Worker %a = load <8 x i8>,<8 x i8> *%i,align 1 21*9880d681SAndroid Build Coastguard Worker %x = zext <8 x i8> %a to <8 x i16> 22*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i16> %x, <8 x i16> zeroinitializer 23*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %ret 24*9880d681SAndroid Build Coastguard Worker} 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sext_8x8mem_to_8x16(<8 x i8> *%i , <8 x i1> %mask) nounwind readnone { 27*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_8x8mem_to_8x16: 28*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 29*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbw (%rdi), %xmm1 30*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %xmm0, %xmm0 31*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %xmm0, %xmm0 32*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm1, %xmm0, %xmm0 33*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 34*9880d681SAndroid Build Coastguard Worker; 35*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_8x8mem_to_8x16: 36*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 37*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 38*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k1 39*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxbw (%rdi), %xmm0 {%k1} {z} 40*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 41*9880d681SAndroid Build Coastguard Worker %a = load <8 x i8>,<8 x i8> *%i,align 1 42*9880d681SAndroid Build Coastguard Worker %x = sext <8 x i8> %a to <8 x i16> 43*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i16> %x, <8 x i16> zeroinitializer 44*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %ret 45*9880d681SAndroid Build Coastguard Worker} 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @zext_16x8mem_to_16x16(<16 x i8> *%i , <16 x i1> %mask) nounwind readnone { 49*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_16x8mem_to_16x16: 50*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 51*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero 52*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm1 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero 53*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm0, %ymm0 54*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm0, %ymm0 55*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm1, %ymm0, %ymm0 56*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 57*9880d681SAndroid Build Coastguard Worker; 58*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_16x8mem_to_16x16: 59*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 60*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm0, %xmm0 61*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm0, %k1 62*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxbw {{.*#+}} ymm0 {%k1} {z} = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero 63*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 64*9880d681SAndroid Build Coastguard Worker %a = load <16 x i8>,<16 x i8> *%i,align 1 65*9880d681SAndroid Build Coastguard Worker %x = zext <16 x i8> %a to <16 x i16> 66*9880d681SAndroid Build Coastguard Worker %ret = select <16 x i1> %mask, <16 x i16> %x, <16 x i16> zeroinitializer 67*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %ret 68*9880d681SAndroid Build Coastguard Worker} 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @sext_16x8mem_to_16x16(<16 x i8> *%i , <16 x i1> %mask) nounwind readnone { 71*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_16x8mem_to_16x16: 72*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 73*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero 74*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbw (%rdi), %ymm1 75*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm0, %ymm0 76*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm0, %ymm0 77*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm1, %ymm0, %ymm0 78*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 79*9880d681SAndroid Build Coastguard Worker; 80*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_16x8mem_to_16x16: 81*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 82*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm0, %xmm0 83*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm0, %k1 84*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxbw (%rdi), %ymm0 {%k1} {z} 85*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 86*9880d681SAndroid Build Coastguard Worker %a = load <16 x i8>,<16 x i8> *%i,align 1 87*9880d681SAndroid Build Coastguard Worker %x = sext <16 x i8> %a to <16 x i16> 88*9880d681SAndroid Build Coastguard Worker %ret = select <16 x i1> %mask, <16 x i16> %x, <16 x i16> zeroinitializer 89*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %ret 90*9880d681SAndroid Build Coastguard Worker} 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @zext_16x8_to_16x16(<16 x i8> %a ) nounwind readnone { 93*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: zext_16x8_to_16x16: 94*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 95*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero 96*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 97*9880d681SAndroid Build Coastguard Worker %x = zext <16 x i8> %a to <16 x i16> 98*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %x 99*9880d681SAndroid Build Coastguard Worker} 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @zext_16x8_to_16x16_mask(<16 x i8> %a ,<16 x i1> %mask) nounwind readnone { 102*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_16x8_to_16x16_mask: 103*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 104*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm1 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero,xmm1[8],zero,xmm1[9],zero,xmm1[10],zero,xmm1[11],zero,xmm1[12],zero,xmm1[13],zero,xmm1[14],zero,xmm1[15],zero 105*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero 106*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm1, %ymm1 107*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm1, %ymm1 108*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm0, %ymm1, %ymm0 109*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 110*9880d681SAndroid Build Coastguard Worker; 111*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_16x8_to_16x16_mask: 112*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 113*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm1, %xmm1 114*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm1, %k1 115*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxbw {{.*#+}} ymm0 {%k1} {z} = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero 116*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 117*9880d681SAndroid Build Coastguard Worker %x = zext <16 x i8> %a to <16 x i16> 118*9880d681SAndroid Build Coastguard Worker %ret = select <16 x i1> %mask, <16 x i16> %x, <16 x i16> zeroinitializer 119*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %ret 120*9880d681SAndroid Build Coastguard Worker} 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @sext_16x8_to_16x16(<16 x i8> %a ) nounwind readnone { 123*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_16x8_to_16x16: 124*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 125*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxbw %xmm0, %ymm0 126*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 127*9880d681SAndroid Build Coastguard Worker %x = sext <16 x i8> %a to <16 x i16> 128*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %x 129*9880d681SAndroid Build Coastguard Worker} 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @sext_16x8_to_16x16_mask(<16 x i8> %a ,<16 x i1> %mask) nounwind readnone { 132*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_16x8_to_16x16_mask: 133*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 134*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm1 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero,xmm1[8],zero,xmm1[9],zero,xmm1[10],zero,xmm1[11],zero,xmm1[12],zero,xmm1[13],zero,xmm1[14],zero,xmm1[15],zero 135*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbw %xmm0, %ymm0 136*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm1, %ymm1 137*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm1, %ymm1 138*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm0, %ymm1, %ymm0 139*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 140*9880d681SAndroid Build Coastguard Worker; 141*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_16x8_to_16x16_mask: 142*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 143*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm1, %xmm1 144*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm1, %k1 145*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxbw %xmm0, %ymm0 {%k1} {z} 146*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 147*9880d681SAndroid Build Coastguard Worker %x = sext <16 x i8> %a to <16 x i16> 148*9880d681SAndroid Build Coastguard Worker %ret = select <16 x i1> %mask, <16 x i16> %x, <16 x i16> zeroinitializer 149*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %ret 150*9880d681SAndroid Build Coastguard Worker} 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @zext_32x8mem_to_32x16(<32 x i8> *%i , <32 x i1> %mask) nounwind readnone { 153*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_32x8mem_to_32x16: 154*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 155*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm1 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero 156*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm2 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero 157*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm3 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero 158*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm3, %ymm3 159*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm3, %ymm3 160*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm2, %ymm3, %ymm2 161*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vextracti128 $1, %ymm0, %xmm0 162*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero 163*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm0, %ymm0 164*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm0, %ymm0 165*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm1, %ymm0, %ymm1 166*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovaps %zmm2, %zmm0 167*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 168*9880d681SAndroid Build Coastguard Worker; 169*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_32x8mem_to_32x16: 170*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 171*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %ymm0, %ymm0 172*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %ymm0, %k1 173*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxbw {{.*#+}} zmm0 {%k1} {z} = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero,mem[16],zero,mem[17],zero,mem[18],zero,mem[19],zero,mem[20],zero,mem[21],zero,mem[22],zero,mem[23],zero,mem[24],zero,mem[25],zero,mem[26],zero,mem[27],zero,mem[28],zero,mem[29],zero,mem[30],zero,mem[31],zero 174*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 175*9880d681SAndroid Build Coastguard Worker %a = load <32 x i8>,<32 x i8> *%i,align 1 176*9880d681SAndroid Build Coastguard Worker %x = zext <32 x i8> %a to <32 x i16> 177*9880d681SAndroid Build Coastguard Worker %ret = select <32 x i1> %mask, <32 x i16> %x, <32 x i16> zeroinitializer 178*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %ret 179*9880d681SAndroid Build Coastguard Worker} 180*9880d681SAndroid Build Coastguard Worker 181*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @sext_32x8mem_to_32x16(<32 x i8> *%i , <32 x i1> %mask) nounwind readnone { 182*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_32x8mem_to_32x16: 183*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 184*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbw 16(%rdi), %ymm1 185*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbw (%rdi), %ymm2 186*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm3 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero 187*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm3, %ymm3 188*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm3, %ymm3 189*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm2, %ymm3, %ymm2 190*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vextracti128 $1, %ymm0, %xmm0 191*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero 192*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm0, %ymm0 193*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm0, %ymm0 194*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm1, %ymm0, %ymm1 195*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovaps %zmm2, %zmm0 196*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 197*9880d681SAndroid Build Coastguard Worker; 198*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_32x8mem_to_32x16: 199*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 200*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %ymm0, %ymm0 201*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %ymm0, %k1 202*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxbw (%rdi), %zmm0 {%k1} {z} 203*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 204*9880d681SAndroid Build Coastguard Worker %a = load <32 x i8>,<32 x i8> *%i,align 1 205*9880d681SAndroid Build Coastguard Worker %x = sext <32 x i8> %a to <32 x i16> 206*9880d681SAndroid Build Coastguard Worker %ret = select <32 x i1> %mask, <32 x i16> %x, <32 x i16> zeroinitializer 207*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %ret 208*9880d681SAndroid Build Coastguard Worker} 209*9880d681SAndroid Build Coastguard Worker 210*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @zext_32x8_to_32x16(<32 x i8> %a ) nounwind readnone { 211*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_32x8_to_32x16: 212*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 213*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm2 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero 214*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vextracti128 $1, %ymm0, %xmm0 215*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm1 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero 216*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovaps %zmm2, %zmm0 217*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 218*9880d681SAndroid Build Coastguard Worker; 219*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_32x8_to_32x16: 220*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 221*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxbw {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero,ymm0[16],zero,ymm0[17],zero,ymm0[18],zero,ymm0[19],zero,ymm0[20],zero,ymm0[21],zero,ymm0[22],zero,ymm0[23],zero,ymm0[24],zero,ymm0[25],zero,ymm0[26],zero,ymm0[27],zero,ymm0[28],zero,ymm0[29],zero,ymm0[30],zero,ymm0[31],zero 222*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 223*9880d681SAndroid Build Coastguard Worker %x = zext <32 x i8> %a to <32 x i16> 224*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %x 225*9880d681SAndroid Build Coastguard Worker} 226*9880d681SAndroid Build Coastguard Worker 227*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @zext_32x8_to_32x16_mask(<32 x i8> %a ,<32 x i1> %mask) nounwind readnone { 228*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_32x8_to_32x16_mask: 229*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 230*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vextracti128 $1, %ymm0, %xmm2 231*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm2 = xmm2[0],zero,xmm2[1],zero,xmm2[2],zero,xmm2[3],zero,xmm2[4],zero,xmm2[5],zero,xmm2[6],zero,xmm2[7],zero,xmm2[8],zero,xmm2[9],zero,xmm2[10],zero,xmm2[11],zero,xmm2[12],zero,xmm2[13],zero,xmm2[14],zero,xmm2[15],zero 232*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero 233*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm3 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero,xmm1[8],zero,xmm1[9],zero,xmm1[10],zero,xmm1[11],zero,xmm1[12],zero,xmm1[13],zero,xmm1[14],zero,xmm1[15],zero 234*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm3, %ymm3 235*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm3, %ymm3 236*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm0, %ymm3, %ymm0 237*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vextracti128 $1, %ymm1, %xmm1 238*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm1 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero,xmm1[8],zero,xmm1[9],zero,xmm1[10],zero,xmm1[11],zero,xmm1[12],zero,xmm1[13],zero,xmm1[14],zero,xmm1[15],zero 239*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm1, %ymm1 240*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm1, %ymm1 241*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm2, %ymm1, %ymm1 242*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 243*9880d681SAndroid Build Coastguard Worker; 244*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_32x8_to_32x16_mask: 245*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 246*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %ymm1, %ymm1 247*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %ymm1, %k1 248*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxbw {{.*#+}} zmm0 {%k1} {z} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero,ymm0[16],zero,ymm0[17],zero,ymm0[18],zero,ymm0[19],zero,ymm0[20],zero,ymm0[21],zero,ymm0[22],zero,ymm0[23],zero,ymm0[24],zero,ymm0[25],zero,ymm0[26],zero,ymm0[27],zero,ymm0[28],zero,ymm0[29],zero,ymm0[30],zero,ymm0[31],zero 249*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 250*9880d681SAndroid Build Coastguard Worker %x = zext <32 x i8> %a to <32 x i16> 251*9880d681SAndroid Build Coastguard Worker %ret = select <32 x i1> %mask, <32 x i16> %x, <32 x i16> zeroinitializer 252*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %ret 253*9880d681SAndroid Build Coastguard Worker} 254*9880d681SAndroid Build Coastguard Worker 255*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @sext_32x8_to_32x16(<32 x i8> %a ) nounwind readnone { 256*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_32x8_to_32x16: 257*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 258*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbw %xmm0, %ymm2 259*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vextracti128 $1, %ymm0, %xmm0 260*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbw %xmm0, %ymm1 261*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovaps %zmm2, %zmm0 262*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 263*9880d681SAndroid Build Coastguard Worker; 264*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_32x8_to_32x16: 265*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 266*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxbw %ymm0, %zmm0 267*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 268*9880d681SAndroid Build Coastguard Worker %x = sext <32 x i8> %a to <32 x i16> 269*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %x 270*9880d681SAndroid Build Coastguard Worker} 271*9880d681SAndroid Build Coastguard Worker 272*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @sext_32x8_to_32x16_mask(<32 x i8> %a ,<32 x i1> %mask) nounwind readnone { 273*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_32x8_to_32x16_mask: 274*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 275*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vextracti128 $1, %ymm0, %xmm2 276*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbw %xmm2, %ymm2 277*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbw %xmm0, %ymm0 278*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm3 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero,xmm1[8],zero,xmm1[9],zero,xmm1[10],zero,xmm1[11],zero,xmm1[12],zero,xmm1[13],zero,xmm1[14],zero,xmm1[15],zero 279*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm3, %ymm3 280*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm3, %ymm3 281*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm0, %ymm3, %ymm0 282*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vextracti128 $1, %ymm1, %xmm1 283*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm1 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero,xmm1[8],zero,xmm1[9],zero,xmm1[10],zero,xmm1[11],zero,xmm1[12],zero,xmm1[13],zero,xmm1[14],zero,xmm1[15],zero 284*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm1, %ymm1 285*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm1, %ymm1 286*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm2, %ymm1, %ymm1 287*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 288*9880d681SAndroid Build Coastguard Worker; 289*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_32x8_to_32x16_mask: 290*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 291*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %ymm1, %ymm1 292*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %ymm1, %k1 293*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxbw %ymm0, %zmm0 {%k1} {z} 294*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 295*9880d681SAndroid Build Coastguard Worker %x = sext <32 x i8> %a to <32 x i16> 296*9880d681SAndroid Build Coastguard Worker %ret = select <32 x i1> %mask, <32 x i16> %x, <32 x i16> zeroinitializer 297*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %ret 298*9880d681SAndroid Build Coastguard Worker} 299*9880d681SAndroid Build Coastguard Worker 300*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @zext_4x8mem_to_4x32(<4 x i8> *%i , <4 x i1> %mask) nounwind readnone { 301*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_4x8mem_to_4x32: 302*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 303*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %xmm0, %xmm0 304*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 305*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbd {{.*#+}} xmm1 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero 306*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm1, %xmm0, %xmm0 307*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 308*9880d681SAndroid Build Coastguard Worker; 309*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_4x8mem_to_4x32: 310*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 311*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm0, %xmm0 312*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k1 313*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxbd {{.*#+}} xmm0 {%k1} {z} = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero 314*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 315*9880d681SAndroid Build Coastguard Worker %a = load <4 x i8>,<4 x i8> *%i,align 1 316*9880d681SAndroid Build Coastguard Worker %x = zext <4 x i8> %a to <4 x i32> 317*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> zeroinitializer 318*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 319*9880d681SAndroid Build Coastguard Worker} 320*9880d681SAndroid Build Coastguard Worker 321*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sext_4x8mem_to_4x32(<4 x i8> *%i , <4 x i1> %mask) nounwind readnone { 322*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_4x8mem_to_4x32: 323*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 324*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %xmm0, %xmm0 325*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 326*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd (%rdi), %xmm1 327*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm1, %xmm0, %xmm0 328*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 329*9880d681SAndroid Build Coastguard Worker; 330*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_4x8mem_to_4x32: 331*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 332*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm0, %xmm0 333*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k1 334*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxbd (%rdi), %xmm0 {%k1} {z} 335*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 336*9880d681SAndroid Build Coastguard Worker %a = load <4 x i8>,<4 x i8> *%i,align 1 337*9880d681SAndroid Build Coastguard Worker %x = sext <4 x i8> %a to <4 x i32> 338*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> zeroinitializer 339*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 340*9880d681SAndroid Build Coastguard Worker} 341*9880d681SAndroid Build Coastguard Worker 342*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @zext_8x8mem_to_8x32(<8 x i8> *%i , <8 x i1> %mask) nounwind readnone { 343*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_8x8mem_to_8x32: 344*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 345*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 346*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 347*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k1 348*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbd {{.*#+}} ymm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero 349*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpxor %ymm1, %ymm1, %ymm1 350*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} 351*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill> 352*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 353*9880d681SAndroid Build Coastguard Worker; 354*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_8x8mem_to_8x32: 355*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 356*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 357*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k1 358*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxbd {{.*#+}} ymm0 {%k1} {z} = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero 359*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 360*9880d681SAndroid Build Coastguard Worker %a = load <8 x i8>,<8 x i8> *%i,align 1 361*9880d681SAndroid Build Coastguard Worker %x = zext <8 x i8> %a to <8 x i32> 362*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> zeroinitializer 363*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %ret 364*9880d681SAndroid Build Coastguard Worker} 365*9880d681SAndroid Build Coastguard Worker 366*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @sext_8x8mem_to_8x32(<8 x i8> *%i , <8 x i1> %mask) nounwind readnone { 367*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_8x8mem_to_8x32: 368*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 369*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 370*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 371*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k1 372*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd (%rdi), %ymm0 373*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpxor %ymm1, %ymm1, %ymm1 374*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} 375*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill> 376*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 377*9880d681SAndroid Build Coastguard Worker; 378*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_8x8mem_to_8x32: 379*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 380*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 381*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k1 382*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxbd (%rdi), %ymm0 {%k1} {z} 383*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 384*9880d681SAndroid Build Coastguard Worker %a = load <8 x i8>,<8 x i8> *%i,align 1 385*9880d681SAndroid Build Coastguard Worker %x = sext <8 x i8> %a to <8 x i32> 386*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> zeroinitializer 387*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %ret 388*9880d681SAndroid Build Coastguard Worker} 389*9880d681SAndroid Build Coastguard Worker 390*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @zext_16x8mem_to_16x32(<16 x i8> *%i , <16 x i1> %mask) nounwind readnone { 391*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_16x8mem_to_16x32: 392*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 393*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm0, %zmm0 394*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm0, %zmm0 395*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k1 396*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbd {{.*#+}} zmm0 {%k1} {z} = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero,mem[8],zero,zero,zero,mem[9],zero,zero,zero,mem[10],zero,zero,zero,mem[11],zero,zero,zero,mem[12],zero,zero,zero,mem[13],zero,zero,zero,mem[14],zero,zero,zero,mem[15],zero,zero,zero 397*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 398*9880d681SAndroid Build Coastguard Worker; 399*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_16x8mem_to_16x32: 400*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 401*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm0, %xmm0 402*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm0, %k1 403*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxbd {{.*#+}} zmm0 {%k1} {z} = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero,mem[8],zero,zero,zero,mem[9],zero,zero,zero,mem[10],zero,zero,zero,mem[11],zero,zero,zero,mem[12],zero,zero,zero,mem[13],zero,zero,zero,mem[14],zero,zero,zero,mem[15],zero,zero,zero 404*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 405*9880d681SAndroid Build Coastguard Worker %a = load <16 x i8>,<16 x i8> *%i,align 1 406*9880d681SAndroid Build Coastguard Worker %x = zext <16 x i8> %a to <16 x i32> 407*9880d681SAndroid Build Coastguard Worker %ret = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> zeroinitializer 408*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %ret 409*9880d681SAndroid Build Coastguard Worker} 410*9880d681SAndroid Build Coastguard Worker 411*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @sext_16x8mem_to_16x32(<16 x i8> *%i , <16 x i1> %mask) nounwind readnone { 412*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_16x8mem_to_16x32: 413*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 414*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm0, %zmm0 415*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm0, %zmm0 416*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k1 417*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd (%rdi), %zmm0 {%k1} {z} 418*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 419*9880d681SAndroid Build Coastguard Worker; 420*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_16x8mem_to_16x32: 421*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 422*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm0, %xmm0 423*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm0, %k1 424*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxbd (%rdi), %zmm0 {%k1} {z} 425*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 426*9880d681SAndroid Build Coastguard Worker %a = load <16 x i8>,<16 x i8> *%i,align 1 427*9880d681SAndroid Build Coastguard Worker %x = sext <16 x i8> %a to <16 x i32> 428*9880d681SAndroid Build Coastguard Worker %ret = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> zeroinitializer 429*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %ret 430*9880d681SAndroid Build Coastguard Worker} 431*9880d681SAndroid Build Coastguard Worker 432*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @zext_16x8_to_16x32_mask(<16 x i8> %a , <16 x i1> %mask) nounwind readnone { 433*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_16x8_to_16x32_mask: 434*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 435*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm1, %zmm1 436*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm1, %zmm1 437*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm1, %zmm1, %k1 438*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbd {{.*#+}} zmm0 {%k1} {z} = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero 439*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 440*9880d681SAndroid Build Coastguard Worker; 441*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_16x8_to_16x32_mask: 442*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 443*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm1, %xmm1 444*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm1, %k1 445*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxbd {{.*#+}} zmm0 {%k1} {z} = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero 446*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 447*9880d681SAndroid Build Coastguard Worker %x = zext <16 x i8> %a to <16 x i32> 448*9880d681SAndroid Build Coastguard Worker %ret = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> zeroinitializer 449*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %ret 450*9880d681SAndroid Build Coastguard Worker} 451*9880d681SAndroid Build Coastguard Worker 452*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @sext_16x8_to_16x32_mask(<16 x i8> %a , <16 x i1> %mask) nounwind readnone { 453*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_16x8_to_16x32_mask: 454*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 455*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm1, %zmm1 456*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm1, %zmm1 457*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm1, %zmm1, %k1 458*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm0, %zmm0 {%k1} {z} 459*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 460*9880d681SAndroid Build Coastguard Worker; 461*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_16x8_to_16x32_mask: 462*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 463*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm1, %xmm1 464*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm1, %k1 465*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxbd %xmm0, %zmm0 {%k1} {z} 466*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 467*9880d681SAndroid Build Coastguard Worker %x = sext <16 x i8> %a to <16 x i32> 468*9880d681SAndroid Build Coastguard Worker %ret = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> zeroinitializer 469*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %ret 470*9880d681SAndroid Build Coastguard Worker} 471*9880d681SAndroid Build Coastguard Worker 472*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @zext_16x8_to_16x32(<16 x i8> %i) nounwind readnone { 473*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: zext_16x8_to_16x32: 474*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 475*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovzxbd {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero 476*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 477*9880d681SAndroid Build Coastguard Worker %x = zext <16 x i8> %i to <16 x i32> 478*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %x 479*9880d681SAndroid Build Coastguard Worker} 480*9880d681SAndroid Build Coastguard Worker 481*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @sext_16x8_to_16x32(<16 x i8> %i) nounwind readnone { 482*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_16x8_to_16x32: 483*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 484*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxbd %xmm0, %zmm0 485*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 486*9880d681SAndroid Build Coastguard Worker %x = sext <16 x i8> %i to <16 x i32> 487*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %x 488*9880d681SAndroid Build Coastguard Worker} 489*9880d681SAndroid Build Coastguard Worker 490*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @zext_2x8mem_to_2x64(<2 x i8> *%i , <2 x i1> %mask) nounwind readnone { 491*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_2x8mem_to_2x64: 492*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 493*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %xmm0, %xmm0 494*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 495*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,3,3] 496*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbq {{.*#+}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 497*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm1, %xmm0, %xmm0 498*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 499*9880d681SAndroid Build Coastguard Worker; 500*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_2x8mem_to_2x64: 501*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 502*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllq $63, %xmm0, %xmm0 503*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmq %xmm0, %xmm0, %k1 504*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxbq {{.*#+}} xmm0 {%k1} {z} = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 505*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 506*9880d681SAndroid Build Coastguard Worker %a = load <2 x i8>,<2 x i8> *%i,align 1 507*9880d681SAndroid Build Coastguard Worker %x = zext <2 x i8> %a to <2 x i64> 508*9880d681SAndroid Build Coastguard Worker %ret = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> zeroinitializer 509*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %ret 510*9880d681SAndroid Build Coastguard Worker} 511*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sext_2x8mem_to_2x64mask(<2 x i8> *%i , <2 x i1> %mask) nounwind readnone { 512*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_2x8mem_to_2x64mask: 513*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 514*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %xmm0, %xmm0 515*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 516*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,3,3] 517*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbq (%rdi), %xmm1 518*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm1, %xmm0, %xmm0 519*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 520*9880d681SAndroid Build Coastguard Worker; 521*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_2x8mem_to_2x64mask: 522*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 523*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllq $63, %xmm0, %xmm0 524*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmq %xmm0, %xmm0, %k1 525*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxbq (%rdi), %xmm0 {%k1} {z} 526*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 527*9880d681SAndroid Build Coastguard Worker %a = load <2 x i8>,<2 x i8> *%i,align 1 528*9880d681SAndroid Build Coastguard Worker %x = sext <2 x i8> %a to <2 x i64> 529*9880d681SAndroid Build Coastguard Worker %ret = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> zeroinitializer 530*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %ret 531*9880d681SAndroid Build Coastguard Worker} 532*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sext_2x8mem_to_2x64(<2 x i8> *%i) nounwind readnone { 533*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_2x8mem_to_2x64: 534*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 535*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxbq (%rdi), %xmm0 536*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 537*9880d681SAndroid Build Coastguard Worker %a = load <2 x i8>,<2 x i8> *%i,align 1 538*9880d681SAndroid Build Coastguard Worker %x = sext <2 x i8> %a to <2 x i64> 539*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %x 540*9880d681SAndroid Build Coastguard Worker} 541*9880d681SAndroid Build Coastguard Worker 542*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @zext_4x8mem_to_4x64(<4 x i8> *%i , <4 x i1> %mask) nounwind readnone { 543*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_4x8mem_to_4x64: 544*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 545*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %xmm0, %xmm0 546*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 547*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxdq %xmm0, %ymm0 548*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbq {{.*#+}} ymm1 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero,mem[2],zero,zero,zero,zero,zero,zero,zero,mem[3],zero,zero,zero,zero,zero,zero,zero 549*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm1, %ymm0, %ymm0 550*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 551*9880d681SAndroid Build Coastguard Worker; 552*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_4x8mem_to_4x64: 553*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 554*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm0, %xmm0 555*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k1 556*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxbq {{.*#+}} ymm0 {%k1} {z} = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero,mem[2],zero,zero,zero,zero,zero,zero,zero,mem[3],zero,zero,zero,zero,zero,zero,zero 557*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 558*9880d681SAndroid Build Coastguard Worker %a = load <4 x i8>,<4 x i8> *%i,align 1 559*9880d681SAndroid Build Coastguard Worker %x = zext <4 x i8> %a to <4 x i64> 560*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> zeroinitializer 561*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %ret 562*9880d681SAndroid Build Coastguard Worker} 563*9880d681SAndroid Build Coastguard Worker 564*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_4x8mem_to_4x64mask(<4 x i8> *%i , <4 x i1> %mask) nounwind readnone { 565*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_4x8mem_to_4x64mask: 566*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 567*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %xmm0, %xmm0 568*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 569*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxdq %xmm0, %ymm0 570*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbq (%rdi), %ymm1 571*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm1, %ymm0, %ymm0 572*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 573*9880d681SAndroid Build Coastguard Worker; 574*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_4x8mem_to_4x64mask: 575*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 576*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm0, %xmm0 577*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k1 578*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxbq (%rdi), %ymm0 {%k1} {z} 579*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 580*9880d681SAndroid Build Coastguard Worker %a = load <4 x i8>,<4 x i8> *%i,align 1 581*9880d681SAndroid Build Coastguard Worker %x = sext <4 x i8> %a to <4 x i64> 582*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> zeroinitializer 583*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %ret 584*9880d681SAndroid Build Coastguard Worker} 585*9880d681SAndroid Build Coastguard Worker 586*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_4x8mem_to_4x64(<4 x i8> *%i) nounwind readnone { 587*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_4x8mem_to_4x64: 588*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 589*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxbq (%rdi), %ymm0 590*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 591*9880d681SAndroid Build Coastguard Worker %a = load <4 x i8>,<4 x i8> *%i,align 1 592*9880d681SAndroid Build Coastguard Worker %x = sext <4 x i8> %a to <4 x i64> 593*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %x 594*9880d681SAndroid Build Coastguard Worker} 595*9880d681SAndroid Build Coastguard Worker 596*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @zext_8x8mem_to_8x64(<8 x i8> *%i , <8 x i1> %mask) nounwind readnone { 597*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_8x8mem_to_8x64: 598*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 599*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 600*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 601*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k1 602*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbq {{.*#+}} zmm0 {%k1} {z} = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero,mem[2],zero,zero,zero,zero,zero,zero,zero,mem[3],zero,zero,zero,zero,zero,zero,zero,mem[4],zero,zero,zero,zero,zero,zero,zero,mem[5],zero,zero,zero,zero,zero,zero,zero,mem[6],zero,zero,zero,zero,zero,zero,zero,mem[7],zero,zero,zero,zero,zero,zero,zero 603*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 604*9880d681SAndroid Build Coastguard Worker; 605*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_8x8mem_to_8x64: 606*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 607*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 608*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k1 609*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxbq {{.*#+}} zmm0 {%k1} {z} = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero,mem[2],zero,zero,zero,zero,zero,zero,zero,mem[3],zero,zero,zero,zero,zero,zero,zero,mem[4],zero,zero,zero,zero,zero,zero,zero,mem[5],zero,zero,zero,zero,zero,zero,zero,mem[6],zero,zero,zero,zero,zero,zero,zero,mem[7],zero,zero,zero,zero,zero,zero,zero 610*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 611*9880d681SAndroid Build Coastguard Worker %a = load <8 x i8>,<8 x i8> *%i,align 1 612*9880d681SAndroid Build Coastguard Worker %x = zext <8 x i8> %a to <8 x i64> 613*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i64> %x, <8 x i64> zeroinitializer 614*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %ret 615*9880d681SAndroid Build Coastguard Worker} 616*9880d681SAndroid Build Coastguard Worker 617*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @sext_8x8mem_to_8x64mask(<8 x i8> *%i , <8 x i1> %mask) nounwind readnone { 618*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_8x8mem_to_8x64mask: 619*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 620*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 621*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 622*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k1 623*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbq (%rdi), %zmm0 {%k1} {z} 624*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 625*9880d681SAndroid Build Coastguard Worker; 626*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_8x8mem_to_8x64mask: 627*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 628*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 629*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k1 630*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxbq (%rdi), %zmm0 {%k1} {z} 631*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 632*9880d681SAndroid Build Coastguard Worker %a = load <8 x i8>,<8 x i8> *%i,align 1 633*9880d681SAndroid Build Coastguard Worker %x = sext <8 x i8> %a to <8 x i64> 634*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i64> %x, <8 x i64> zeroinitializer 635*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %ret 636*9880d681SAndroid Build Coastguard Worker} 637*9880d681SAndroid Build Coastguard Worker 638*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @sext_8x8mem_to_8x64(<8 x i8> *%i) nounwind readnone { 639*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_8x8mem_to_8x64: 640*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 641*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxbq (%rdi), %zmm0 642*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 643*9880d681SAndroid Build Coastguard Worker %a = load <8 x i8>,<8 x i8> *%i,align 1 644*9880d681SAndroid Build Coastguard Worker %x = sext <8 x i8> %a to <8 x i64> 645*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %x 646*9880d681SAndroid Build Coastguard Worker} 647*9880d681SAndroid Build Coastguard Worker 648*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @zext_4x16mem_to_4x32(<4 x i16> *%i , <4 x i1> %mask) nounwind readnone { 649*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_4x16mem_to_4x32: 650*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 651*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %xmm0, %xmm0 652*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 653*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxwd {{.*#+}} xmm1 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero 654*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm1, %xmm0, %xmm0 655*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 656*9880d681SAndroid Build Coastguard Worker; 657*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_4x16mem_to_4x32: 658*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 659*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm0, %xmm0 660*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k1 661*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxwd {{.*#+}} xmm0 {%k1} {z} = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero 662*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 663*9880d681SAndroid Build Coastguard Worker %a = load <4 x i16>,<4 x i16> *%i,align 1 664*9880d681SAndroid Build Coastguard Worker %x = zext <4 x i16> %a to <4 x i32> 665*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> zeroinitializer 666*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 667*9880d681SAndroid Build Coastguard Worker} 668*9880d681SAndroid Build Coastguard Worker 669*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sext_4x16mem_to_4x32mask(<4 x i16> *%i , <4 x i1> %mask) nounwind readnone { 670*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_4x16mem_to_4x32mask: 671*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 672*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %xmm0, %xmm0 673*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 674*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwd (%rdi), %xmm1 675*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm1, %xmm0, %xmm0 676*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 677*9880d681SAndroid Build Coastguard Worker; 678*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_4x16mem_to_4x32mask: 679*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 680*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm0, %xmm0 681*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k1 682*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxwd (%rdi), %xmm0 {%k1} {z} 683*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 684*9880d681SAndroid Build Coastguard Worker %a = load <4 x i16>,<4 x i16> *%i,align 1 685*9880d681SAndroid Build Coastguard Worker %x = sext <4 x i16> %a to <4 x i32> 686*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> zeroinitializer 687*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 688*9880d681SAndroid Build Coastguard Worker} 689*9880d681SAndroid Build Coastguard Worker 690*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sext_4x16mem_to_4x32(<4 x i16> *%i) nounwind readnone { 691*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_4x16mem_to_4x32: 692*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 693*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxwd (%rdi), %xmm0 694*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 695*9880d681SAndroid Build Coastguard Worker %a = load <4 x i16>,<4 x i16> *%i,align 1 696*9880d681SAndroid Build Coastguard Worker %x = sext <4 x i16> %a to <4 x i32> 697*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %x 698*9880d681SAndroid Build Coastguard Worker} 699*9880d681SAndroid Build Coastguard Worker 700*9880d681SAndroid Build Coastguard Worker 701*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @zext_8x16mem_to_8x32(<8 x i16> *%i , <8 x i1> %mask) nounwind readnone { 702*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_8x16mem_to_8x32: 703*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 704*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 705*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 706*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k1 707*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxwd {{.*#+}} ymm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero 708*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpxor %ymm1, %ymm1, %ymm1 709*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} 710*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill> 711*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 712*9880d681SAndroid Build Coastguard Worker; 713*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_8x16mem_to_8x32: 714*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 715*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 716*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k1 717*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxwd {{.*#+}} ymm0 {%k1} {z} = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero 718*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 719*9880d681SAndroid Build Coastguard Worker %a = load <8 x i16>,<8 x i16> *%i,align 1 720*9880d681SAndroid Build Coastguard Worker %x = zext <8 x i16> %a to <8 x i32> 721*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> zeroinitializer 722*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %ret 723*9880d681SAndroid Build Coastguard Worker} 724*9880d681SAndroid Build Coastguard Worker 725*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @sext_8x16mem_to_8x32mask(<8 x i16> *%i , <8 x i1> %mask) nounwind readnone { 726*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_8x16mem_to_8x32mask: 727*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 728*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 729*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 730*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k1 731*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwd (%rdi), %ymm0 732*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpxor %ymm1, %ymm1, %ymm1 733*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} 734*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill> 735*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 736*9880d681SAndroid Build Coastguard Worker; 737*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_8x16mem_to_8x32mask: 738*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 739*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 740*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k1 741*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxwd (%rdi), %ymm0 {%k1} {z} 742*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 743*9880d681SAndroid Build Coastguard Worker %a = load <8 x i16>,<8 x i16> *%i,align 1 744*9880d681SAndroid Build Coastguard Worker %x = sext <8 x i16> %a to <8 x i32> 745*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> zeroinitializer 746*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %ret 747*9880d681SAndroid Build Coastguard Worker} 748*9880d681SAndroid Build Coastguard Worker 749*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @sext_8x16mem_to_8x32(<8 x i16> *%i) nounwind readnone { 750*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_8x16mem_to_8x32: 751*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 752*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxwd (%rdi), %ymm0 753*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 754*9880d681SAndroid Build Coastguard Worker %a = load <8 x i16>,<8 x i16> *%i,align 1 755*9880d681SAndroid Build Coastguard Worker %x = sext <8 x i16> %a to <8 x i32> 756*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %x 757*9880d681SAndroid Build Coastguard Worker} 758*9880d681SAndroid Build Coastguard Worker 759*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @zext_8x16_to_8x32mask(<8 x i16> %a , <8 x i1> %mask) nounwind readnone { 760*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_8x16_to_8x32mask: 761*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 762*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm1, %zmm1 763*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm1, %zmm1 764*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm1, %zmm1, %k1 765*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero 766*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpxor %ymm1, %ymm1, %ymm1 767*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} 768*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill> 769*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 770*9880d681SAndroid Build Coastguard Worker; 771*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_8x16_to_8x32mask: 772*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 773*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm1, %xmm1 774*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm1, %k1 775*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxwd {{.*#+}} ymm0 {%k1} {z} = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero 776*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 777*9880d681SAndroid Build Coastguard Worker %x = zext <8 x i16> %a to <8 x i32> 778*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> zeroinitializer 779*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %ret 780*9880d681SAndroid Build Coastguard Worker} 781*9880d681SAndroid Build Coastguard Worker 782*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @zext_8x16_to_8x32(<8 x i16> %a ) nounwind readnone { 783*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: zext_8x16_to_8x32: 784*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 785*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero 786*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 787*9880d681SAndroid Build Coastguard Worker %x = zext <8 x i16> %a to <8 x i32> 788*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %x 789*9880d681SAndroid Build Coastguard Worker} 790*9880d681SAndroid Build Coastguard Worker 791*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @zext_16x16mem_to_16x32(<16 x i16> *%i , <16 x i1> %mask) nounwind readnone { 792*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_16x16mem_to_16x32: 793*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 794*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm0, %zmm0 795*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm0, %zmm0 796*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k1 797*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxwd {{.*#+}} zmm0 {%k1} {z} = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero 798*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 799*9880d681SAndroid Build Coastguard Worker; 800*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_16x16mem_to_16x32: 801*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 802*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm0, %xmm0 803*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm0, %k1 804*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxwd {{.*#+}} zmm0 {%k1} {z} = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero 805*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 806*9880d681SAndroid Build Coastguard Worker %a = load <16 x i16>,<16 x i16> *%i,align 1 807*9880d681SAndroid Build Coastguard Worker %x = zext <16 x i16> %a to <16 x i32> 808*9880d681SAndroid Build Coastguard Worker %ret = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> zeroinitializer 809*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %ret 810*9880d681SAndroid Build Coastguard Worker} 811*9880d681SAndroid Build Coastguard Worker 812*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @sext_16x16mem_to_16x32mask(<16 x i16> *%i , <16 x i1> %mask) nounwind readnone { 813*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_16x16mem_to_16x32mask: 814*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 815*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm0, %zmm0 816*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm0, %zmm0 817*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k1 818*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwd (%rdi), %zmm0 {%k1} {z} 819*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 820*9880d681SAndroid Build Coastguard Worker; 821*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_16x16mem_to_16x32mask: 822*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 823*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm0, %xmm0 824*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm0, %k1 825*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxwd (%rdi), %zmm0 {%k1} {z} 826*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 827*9880d681SAndroid Build Coastguard Worker %a = load <16 x i16>,<16 x i16> *%i,align 1 828*9880d681SAndroid Build Coastguard Worker %x = sext <16 x i16> %a to <16 x i32> 829*9880d681SAndroid Build Coastguard Worker %ret = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> zeroinitializer 830*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %ret 831*9880d681SAndroid Build Coastguard Worker} 832*9880d681SAndroid Build Coastguard Worker 833*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @sext_16x16mem_to_16x32(<16 x i16> *%i) nounwind readnone { 834*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_16x16mem_to_16x32: 835*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 836*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxwd (%rdi), %zmm0 837*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 838*9880d681SAndroid Build Coastguard Worker %a = load <16 x i16>,<16 x i16> *%i,align 1 839*9880d681SAndroid Build Coastguard Worker %x = sext <16 x i16> %a to <16 x i32> 840*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %x 841*9880d681SAndroid Build Coastguard Worker} 842*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @zext_16x16_to_16x32mask(<16 x i16> %a , <16 x i1> %mask) nounwind readnone { 843*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_16x16_to_16x32mask: 844*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 845*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm1, %zmm1 846*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm1, %zmm1 847*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm1, %zmm1, %k1 848*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxwd {{.*#+}} zmm0 {%k1} {z} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero 849*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 850*9880d681SAndroid Build Coastguard Worker; 851*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_16x16_to_16x32mask: 852*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 853*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm1, %xmm1 854*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm1, %k1 855*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxwd {{.*#+}} zmm0 {%k1} {z} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero 856*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 857*9880d681SAndroid Build Coastguard Worker %x = zext <16 x i16> %a to <16 x i32> 858*9880d681SAndroid Build Coastguard Worker %ret = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> zeroinitializer 859*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %ret 860*9880d681SAndroid Build Coastguard Worker} 861*9880d681SAndroid Build Coastguard Worker 862*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @zext_16x16_to_16x32(<16 x i16> %a ) nounwind readnone { 863*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: zext_16x16_to_16x32: 864*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 865*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero 866*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 867*9880d681SAndroid Build Coastguard Worker %x = zext <16 x i16> %a to <16 x i32> 868*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %x 869*9880d681SAndroid Build Coastguard Worker} 870*9880d681SAndroid Build Coastguard Worker 871*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @zext_2x16mem_to_2x64(<2 x i16> *%i , <2 x i1> %mask) nounwind readnone { 872*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_2x16mem_to_2x64: 873*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 874*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %xmm0, %xmm0 875*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 876*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,3,3] 877*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxwq {{.*#+}} xmm1 = mem[0],zero,zero,zero,mem[1],zero,zero,zero 878*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm1, %xmm0, %xmm0 879*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 880*9880d681SAndroid Build Coastguard Worker; 881*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_2x16mem_to_2x64: 882*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 883*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllq $63, %xmm0, %xmm0 884*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmq %xmm0, %xmm0, %k1 885*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxwq {{.*#+}} xmm0 {%k1} {z} = mem[0],zero,zero,zero,mem[1],zero,zero,zero 886*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 887*9880d681SAndroid Build Coastguard Worker %a = load <2 x i16>,<2 x i16> *%i,align 1 888*9880d681SAndroid Build Coastguard Worker %x = zext <2 x i16> %a to <2 x i64> 889*9880d681SAndroid Build Coastguard Worker %ret = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> zeroinitializer 890*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %ret 891*9880d681SAndroid Build Coastguard Worker} 892*9880d681SAndroid Build Coastguard Worker 893*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sext_2x16mem_to_2x64mask(<2 x i16> *%i , <2 x i1> %mask) nounwind readnone { 894*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_2x16mem_to_2x64mask: 895*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 896*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %xmm0, %xmm0 897*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 898*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,3,3] 899*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq (%rdi), %xmm1 900*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm1, %xmm0, %xmm0 901*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 902*9880d681SAndroid Build Coastguard Worker; 903*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_2x16mem_to_2x64mask: 904*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 905*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllq $63, %xmm0, %xmm0 906*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmq %xmm0, %xmm0, %k1 907*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxwq (%rdi), %xmm0 {%k1} {z} 908*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 909*9880d681SAndroid Build Coastguard Worker %a = load <2 x i16>,<2 x i16> *%i,align 1 910*9880d681SAndroid Build Coastguard Worker %x = sext <2 x i16> %a to <2 x i64> 911*9880d681SAndroid Build Coastguard Worker %ret = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> zeroinitializer 912*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %ret 913*9880d681SAndroid Build Coastguard Worker} 914*9880d681SAndroid Build Coastguard Worker 915*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sext_2x16mem_to_2x64(<2 x i16> *%i) nounwind readnone { 916*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_2x16mem_to_2x64: 917*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 918*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxwq (%rdi), %xmm0 919*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 920*9880d681SAndroid Build Coastguard Worker %a = load <2 x i16>,<2 x i16> *%i,align 1 921*9880d681SAndroid Build Coastguard Worker %x = sext <2 x i16> %a to <2 x i64> 922*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %x 923*9880d681SAndroid Build Coastguard Worker} 924*9880d681SAndroid Build Coastguard Worker 925*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @zext_4x16mem_to_4x64(<4 x i16> *%i , <4 x i1> %mask) nounwind readnone { 926*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_4x16mem_to_4x64: 927*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 928*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %xmm0, %xmm0 929*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 930*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxdq %xmm0, %ymm0 931*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxwq {{.*#+}} ymm1 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero 932*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm1, %ymm0, %ymm0 933*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 934*9880d681SAndroid Build Coastguard Worker; 935*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_4x16mem_to_4x64: 936*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 937*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm0, %xmm0 938*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k1 939*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxwq {{.*#+}} ymm0 {%k1} {z} = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero 940*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 941*9880d681SAndroid Build Coastguard Worker %a = load <4 x i16>,<4 x i16> *%i,align 1 942*9880d681SAndroid Build Coastguard Worker %x = zext <4 x i16> %a to <4 x i64> 943*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> zeroinitializer 944*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %ret 945*9880d681SAndroid Build Coastguard Worker} 946*9880d681SAndroid Build Coastguard Worker 947*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_4x16mem_to_4x64mask(<4 x i16> *%i , <4 x i1> %mask) nounwind readnone { 948*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_4x16mem_to_4x64mask: 949*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 950*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %xmm0, %xmm0 951*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 952*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxdq %xmm0, %ymm0 953*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq (%rdi), %ymm1 954*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm1, %ymm0, %ymm0 955*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 956*9880d681SAndroid Build Coastguard Worker; 957*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_4x16mem_to_4x64mask: 958*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 959*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm0, %xmm0 960*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k1 961*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxwq (%rdi), %ymm0 {%k1} {z} 962*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 963*9880d681SAndroid Build Coastguard Worker %a = load <4 x i16>,<4 x i16> *%i,align 1 964*9880d681SAndroid Build Coastguard Worker %x = sext <4 x i16> %a to <4 x i64> 965*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> zeroinitializer 966*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %ret 967*9880d681SAndroid Build Coastguard Worker} 968*9880d681SAndroid Build Coastguard Worker 969*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_4x16mem_to_4x64(<4 x i16> *%i) nounwind readnone { 970*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_4x16mem_to_4x64: 971*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 972*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxwq (%rdi), %ymm0 973*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 974*9880d681SAndroid Build Coastguard Worker %a = load <4 x i16>,<4 x i16> *%i,align 1 975*9880d681SAndroid Build Coastguard Worker %x = sext <4 x i16> %a to <4 x i64> 976*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %x 977*9880d681SAndroid Build Coastguard Worker} 978*9880d681SAndroid Build Coastguard Worker 979*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @zext_8x16mem_to_8x64(<8 x i16> *%i , <8 x i1> %mask) nounwind readnone { 980*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_8x16mem_to_8x64: 981*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 982*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 983*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 984*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k1 985*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxwq {{.*#+}} zmm0 {%k1} {z} = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero 986*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 987*9880d681SAndroid Build Coastguard Worker; 988*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_8x16mem_to_8x64: 989*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 990*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 991*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k1 992*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxwq {{.*#+}} zmm0 {%k1} {z} = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero 993*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 994*9880d681SAndroid Build Coastguard Worker %a = load <8 x i16>,<8 x i16> *%i,align 1 995*9880d681SAndroid Build Coastguard Worker %x = zext <8 x i16> %a to <8 x i64> 996*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i64> %x, <8 x i64> zeroinitializer 997*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %ret 998*9880d681SAndroid Build Coastguard Worker} 999*9880d681SAndroid Build Coastguard Worker 1000*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @sext_8x16mem_to_8x64mask(<8 x i16> *%i , <8 x i1> %mask) nounwind readnone { 1001*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_8x16mem_to_8x64mask: 1002*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1003*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 1004*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 1005*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k1 1006*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq (%rdi), %zmm0 {%k1} {z} 1007*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1008*9880d681SAndroid Build Coastguard Worker; 1009*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_8x16mem_to_8x64mask: 1010*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1011*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 1012*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k1 1013*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxwq (%rdi), %zmm0 {%k1} {z} 1014*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1015*9880d681SAndroid Build Coastguard Worker %a = load <8 x i16>,<8 x i16> *%i,align 1 1016*9880d681SAndroid Build Coastguard Worker %x = sext <8 x i16> %a to <8 x i64> 1017*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i64> %x, <8 x i64> zeroinitializer 1018*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %ret 1019*9880d681SAndroid Build Coastguard Worker} 1020*9880d681SAndroid Build Coastguard Worker 1021*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @sext_8x16mem_to_8x64(<8 x i16> *%i) nounwind readnone { 1022*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_8x16mem_to_8x64: 1023*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1024*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxwq (%rdi), %zmm0 1025*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1026*9880d681SAndroid Build Coastguard Worker %a = load <8 x i16>,<8 x i16> *%i,align 1 1027*9880d681SAndroid Build Coastguard Worker %x = sext <8 x i16> %a to <8 x i64> 1028*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %x 1029*9880d681SAndroid Build Coastguard Worker} 1030*9880d681SAndroid Build Coastguard Worker 1031*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @zext_8x16_to_8x64mask(<8 x i16> %a , <8 x i1> %mask) nounwind readnone { 1032*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_8x16_to_8x64mask: 1033*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1034*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm1, %zmm1 1035*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm1, %zmm1 1036*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm1, %zmm1, %k1 1037*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxwq {{.*#+}} zmm0 {%k1} {z} = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero 1038*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1039*9880d681SAndroid Build Coastguard Worker; 1040*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_8x16_to_8x64mask: 1041*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1042*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm1, %xmm1 1043*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm1, %k1 1044*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxwq {{.*#+}} zmm0 {%k1} {z} = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero 1045*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1046*9880d681SAndroid Build Coastguard Worker %x = zext <8 x i16> %a to <8 x i64> 1047*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i64> %x, <8 x i64> zeroinitializer 1048*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %ret 1049*9880d681SAndroid Build Coastguard Worker} 1050*9880d681SAndroid Build Coastguard Worker 1051*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @zext_8x16_to_8x64(<8 x i16> %a) nounwind readnone { 1052*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: zext_8x16_to_8x64: 1053*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1054*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovzxwq {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero 1055*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1056*9880d681SAndroid Build Coastguard Worker %ret = zext <8 x i16> %a to <8 x i64> 1057*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %ret 1058*9880d681SAndroid Build Coastguard Worker} 1059*9880d681SAndroid Build Coastguard Worker 1060*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @zext_2x32mem_to_2x64(<2 x i32> *%i , <2 x i1> %mask) nounwind readnone { 1061*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_2x32mem_to_2x64: 1062*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1063*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %xmm0, %xmm0 1064*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 1065*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,3,3] 1066*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxdq {{.*#+}} xmm1 = mem[0],zero,mem[1],zero 1067*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm1, %xmm0, %xmm0 1068*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1069*9880d681SAndroid Build Coastguard Worker; 1070*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_2x32mem_to_2x64: 1071*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1072*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllq $63, %xmm0, %xmm0 1073*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmq %xmm0, %xmm0, %k1 1074*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxdq {{.*#+}} xmm0 {%k1} {z} = mem[0],zero,mem[1],zero 1075*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1076*9880d681SAndroid Build Coastguard Worker %a = load <2 x i32>,<2 x i32> *%i,align 1 1077*9880d681SAndroid Build Coastguard Worker %x = zext <2 x i32> %a to <2 x i64> 1078*9880d681SAndroid Build Coastguard Worker %ret = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> zeroinitializer 1079*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %ret 1080*9880d681SAndroid Build Coastguard Worker} 1081*9880d681SAndroid Build Coastguard Worker 1082*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sext_2x32mem_to_2x64mask(<2 x i32> *%i , <2 x i1> %mask) nounwind readnone { 1083*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_2x32mem_to_2x64mask: 1084*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1085*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %xmm0, %xmm0 1086*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 1087*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,3,3] 1088*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxdq (%rdi), %xmm1 1089*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm1, %xmm0, %xmm0 1090*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1091*9880d681SAndroid Build Coastguard Worker; 1092*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_2x32mem_to_2x64mask: 1093*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1094*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllq $63, %xmm0, %xmm0 1095*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmq %xmm0, %xmm0, %k1 1096*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxdq (%rdi), %xmm0 {%k1} {z} 1097*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1098*9880d681SAndroid Build Coastguard Worker %a = load <2 x i32>,<2 x i32> *%i,align 1 1099*9880d681SAndroid Build Coastguard Worker %x = sext <2 x i32> %a to <2 x i64> 1100*9880d681SAndroid Build Coastguard Worker %ret = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> zeroinitializer 1101*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %ret 1102*9880d681SAndroid Build Coastguard Worker} 1103*9880d681SAndroid Build Coastguard Worker 1104*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sext_2x32mem_to_2x64(<2 x i32> *%i) nounwind readnone { 1105*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_2x32mem_to_2x64: 1106*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1107*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxdq (%rdi), %xmm0 1108*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1109*9880d681SAndroid Build Coastguard Worker %a = load <2 x i32>,<2 x i32> *%i,align 1 1110*9880d681SAndroid Build Coastguard Worker %x = sext <2 x i32> %a to <2 x i64> 1111*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %x 1112*9880d681SAndroid Build Coastguard Worker} 1113*9880d681SAndroid Build Coastguard Worker 1114*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @zext_4x32mem_to_4x64(<4 x i32> *%i , <4 x i1> %mask) nounwind readnone { 1115*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_4x32mem_to_4x64: 1116*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1117*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %xmm0, %xmm0 1118*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 1119*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxdq %xmm0, %ymm0 1120*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxdq {{.*#+}} ymm1 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero 1121*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm1, %ymm0, %ymm0 1122*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1123*9880d681SAndroid Build Coastguard Worker; 1124*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_4x32mem_to_4x64: 1125*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1126*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm0, %xmm0 1127*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k1 1128*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxdq {{.*#+}} ymm0 {%k1} {z} = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero 1129*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1130*9880d681SAndroid Build Coastguard Worker %a = load <4 x i32>,<4 x i32> *%i,align 1 1131*9880d681SAndroid Build Coastguard Worker %x = zext <4 x i32> %a to <4 x i64> 1132*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> zeroinitializer 1133*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %ret 1134*9880d681SAndroid Build Coastguard Worker} 1135*9880d681SAndroid Build Coastguard Worker 1136*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_4x32mem_to_4x64mask(<4 x i32> *%i , <4 x i1> %mask) nounwind readnone { 1137*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_4x32mem_to_4x64mask: 1138*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1139*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %xmm0, %xmm0 1140*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 1141*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxdq %xmm0, %ymm0 1142*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxdq (%rdi), %ymm1 1143*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm1, %ymm0, %ymm0 1144*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1145*9880d681SAndroid Build Coastguard Worker; 1146*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_4x32mem_to_4x64mask: 1147*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1148*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm0, %xmm0 1149*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k1 1150*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxdq (%rdi), %ymm0 {%k1} {z} 1151*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1152*9880d681SAndroid Build Coastguard Worker %a = load <4 x i32>,<4 x i32> *%i,align 1 1153*9880d681SAndroid Build Coastguard Worker %x = sext <4 x i32> %a to <4 x i64> 1154*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> zeroinitializer 1155*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %ret 1156*9880d681SAndroid Build Coastguard Worker} 1157*9880d681SAndroid Build Coastguard Worker 1158*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_4x32mem_to_4x64(<4 x i32> *%i) nounwind readnone { 1159*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_4x32mem_to_4x64: 1160*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1161*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxdq (%rdi), %ymm0 1162*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1163*9880d681SAndroid Build Coastguard Worker %a = load <4 x i32>,<4 x i32> *%i,align 1 1164*9880d681SAndroid Build Coastguard Worker %x = sext <4 x i32> %a to <4 x i64> 1165*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %x 1166*9880d681SAndroid Build Coastguard Worker} 1167*9880d681SAndroid Build Coastguard Worker 1168*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_4x32_to_4x64(<4 x i32> %a) nounwind readnone { 1169*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_4x32_to_4x64: 1170*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1171*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxdq %xmm0, %ymm0 1172*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1173*9880d681SAndroid Build Coastguard Worker %x = sext <4 x i32> %a to <4 x i64> 1174*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %x 1175*9880d681SAndroid Build Coastguard Worker} 1176*9880d681SAndroid Build Coastguard Worker 1177*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @zext_4x32_to_4x64mask(<4 x i32> %a , <4 x i1> %mask) nounwind readnone { 1178*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_4x32_to_4x64mask: 1179*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1180*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %xmm1, %xmm1 1181*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm1, %xmm1 1182*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxdq %xmm1, %ymm1 1183*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 1184*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm0, %ymm1, %ymm0 1185*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1186*9880d681SAndroid Build Coastguard Worker; 1187*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_4x32_to_4x64mask: 1188*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1189*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm1, %xmm1 1190*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm1, %xmm1, %k1 1191*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxdq {{.*#+}} ymm0 {%k1} {z} = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 1192*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1193*9880d681SAndroid Build Coastguard Worker %x = zext <4 x i32> %a to <4 x i64> 1194*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> zeroinitializer 1195*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %ret 1196*9880d681SAndroid Build Coastguard Worker} 1197*9880d681SAndroid Build Coastguard Worker 1198*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @zext_8x32mem_to_8x64(<8 x i32> *%i , <8 x i1> %mask) nounwind readnone { 1199*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_8x32mem_to_8x64: 1200*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1201*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 1202*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 1203*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k1 1204*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxdq {{.*#+}} zmm0 {%k1} {z} = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero 1205*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1206*9880d681SAndroid Build Coastguard Worker; 1207*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_8x32mem_to_8x64: 1208*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1209*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 1210*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k1 1211*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxdq {{.*#+}} zmm0 {%k1} {z} = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero 1212*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1213*9880d681SAndroid Build Coastguard Worker %a = load <8 x i32>,<8 x i32> *%i,align 1 1214*9880d681SAndroid Build Coastguard Worker %x = zext <8 x i32> %a to <8 x i64> 1215*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i64> %x, <8 x i64> zeroinitializer 1216*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %ret 1217*9880d681SAndroid Build Coastguard Worker} 1218*9880d681SAndroid Build Coastguard Worker 1219*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @sext_8x32mem_to_8x64mask(<8 x i32> *%i , <8 x i1> %mask) nounwind readnone { 1220*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_8x32mem_to_8x64mask: 1221*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1222*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 1223*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 1224*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k1 1225*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxdq (%rdi), %zmm0 {%k1} {z} 1226*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1227*9880d681SAndroid Build Coastguard Worker; 1228*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_8x32mem_to_8x64mask: 1229*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1230*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 1231*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k1 1232*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovsxdq (%rdi), %zmm0 {%k1} {z} 1233*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1234*9880d681SAndroid Build Coastguard Worker %a = load <8 x i32>,<8 x i32> *%i,align 1 1235*9880d681SAndroid Build Coastguard Worker %x = sext <8 x i32> %a to <8 x i64> 1236*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i64> %x, <8 x i64> zeroinitializer 1237*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %ret 1238*9880d681SAndroid Build Coastguard Worker} 1239*9880d681SAndroid Build Coastguard Worker 1240*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @sext_8x32mem_to_8x64(<8 x i32> *%i) nounwind readnone { 1241*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_8x32mem_to_8x64: 1242*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1243*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxdq (%rdi), %zmm0 1244*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1245*9880d681SAndroid Build Coastguard Worker %a = load <8 x i32>,<8 x i32> *%i,align 1 1246*9880d681SAndroid Build Coastguard Worker %x = sext <8 x i32> %a to <8 x i64> 1247*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %x 1248*9880d681SAndroid Build Coastguard Worker} 1249*9880d681SAndroid Build Coastguard Worker 1250*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @sext_8x32_to_8x64(<8 x i32> %a) nounwind readnone { 1251*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: sext_8x32_to_8x64: 1252*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1253*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxdq %ymm0, %zmm0 1254*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1255*9880d681SAndroid Build Coastguard Worker %x = sext <8 x i32> %a to <8 x i64> 1256*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %x 1257*9880d681SAndroid Build Coastguard Worker} 1258*9880d681SAndroid Build Coastguard Worker 1259*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @zext_8x32_to_8x64mask(<8 x i32> %a , <8 x i1> %mask) nounwind readnone { 1260*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_8x32_to_8x64mask: 1261*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1262*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm1, %zmm1 1263*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm1, %zmm1 1264*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm1, %zmm1, %k1 1265*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxdq {{.*#+}} zmm0 {%k1} {z} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero 1266*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1267*9880d681SAndroid Build Coastguard Worker; 1268*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_8x32_to_8x64mask: 1269*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1270*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm1, %xmm1 1271*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm1, %k1 1272*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovzxdq {{.*#+}} zmm0 {%k1} {z} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero 1273*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1274*9880d681SAndroid Build Coastguard Worker %x = zext <8 x i32> %a to <8 x i64> 1275*9880d681SAndroid Build Coastguard Worker %ret = select <8 x i1> %mask, <8 x i64> %x, <8 x i64> zeroinitializer 1276*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %ret 1277*9880d681SAndroid Build Coastguard Worker} 1278*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @fptrunc_test(<8 x double> %a) nounwind readnone { 1279*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: fptrunc_test: 1280*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1281*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vcvtpd2ps %zmm0, %ymm0 1282*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1283*9880d681SAndroid Build Coastguard Worker %b = fptrunc <8 x double> %a to <8 x float> 1284*9880d681SAndroid Build Coastguard Worker ret <8 x float> %b 1285*9880d681SAndroid Build Coastguard Worker} 1286*9880d681SAndroid Build Coastguard Worker 1287*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @fpext_test(<8 x float> %a) nounwind readnone { 1288*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: fpext_test: 1289*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1290*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vcvtps2pd %ymm0, %zmm0 1291*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1292*9880d681SAndroid Build Coastguard Worker %b = fpext <8 x float> %a to <8 x double> 1293*9880d681SAndroid Build Coastguard Worker ret <8 x double> %b 1294*9880d681SAndroid Build Coastguard Worker} 1295*9880d681SAndroid Build Coastguard Worker 1296*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @zext_16i1_to_16xi32(i16 %b) { 1297*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: zext_16i1_to_16xi32: 1298*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1299*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: kmovw %edi, %k1 1300*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpbroadcastd {{.*}}(%rip), %zmm0 {%k1} {z} 1301*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1302*9880d681SAndroid Build Coastguard Worker %a = bitcast i16 %b to <16 x i1> 1303*9880d681SAndroid Build Coastguard Worker %c = zext <16 x i1> %a to <16 x i32> 1304*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %c 1305*9880d681SAndroid Build Coastguard Worker} 1306*9880d681SAndroid Build Coastguard Worker 1307*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @zext_8i1_to_8xi64(i8 %b) { 1308*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_8i1_to_8xi64: 1309*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1310*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %edi, %k1 1311*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpbroadcastq {{.*}}(%rip), %zmm0 {%k1} {z} 1312*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1313*9880d681SAndroid Build Coastguard Worker; 1314*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_8i1_to_8xi64: 1315*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1316*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %edi, %k1 1317*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpbroadcastq {{.*}}(%rip), %zmm0 {%k1} {z} 1318*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1319*9880d681SAndroid Build Coastguard Worker %a = bitcast i8 %b to <8 x i1> 1320*9880d681SAndroid Build Coastguard Worker %c = zext <8 x i1> %a to <8 x i64> 1321*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %c 1322*9880d681SAndroid Build Coastguard Worker} 1323*9880d681SAndroid Build Coastguard Worker 1324*9880d681SAndroid Build Coastguard Workerdefine i16 @trunc_16i8_to_16i1(<16 x i8> %a) { 1325*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: trunc_16i8_to_16i1: 1326*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1327*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm0, %zmm0 1328*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm0, %zmm0 1329*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0 1330*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1331*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %AX<def> %AX<kill> %EAX<kill> 1332*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1333*9880d681SAndroid Build Coastguard Worker; 1334*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: trunc_16i8_to_16i1: 1335*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1336*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm0, %xmm0 1337*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm0, %k0 1338*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovw %k0, %eax 1339*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: ## kill: %AX<def> %AX<kill> %EAX<kill> 1340*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1341*9880d681SAndroid Build Coastguard Worker %mask_b = trunc <16 x i8>%a to <16 x i1> 1342*9880d681SAndroid Build Coastguard Worker %mask = bitcast <16 x i1> %mask_b to i16 1343*9880d681SAndroid Build Coastguard Worker ret i16 %mask 1344*9880d681SAndroid Build Coastguard Worker} 1345*9880d681SAndroid Build Coastguard Worker 1346*9880d681SAndroid Build Coastguard Workerdefine i16 @trunc_16i32_to_16i1(<16 x i32> %a) { 1347*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: trunc_16i32_to_16i1: 1348*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1349*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpslld $31, %zmm0, %zmm0 1350*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vptestmd %zmm0, %zmm0, %k0 1351*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: kmovw %k0, %eax 1352*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: ## kill: %AX<def> %AX<kill> %EAX<kill> 1353*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1354*9880d681SAndroid Build Coastguard Worker %mask_b = trunc <16 x i32>%a to <16 x i1> 1355*9880d681SAndroid Build Coastguard Worker %mask = bitcast <16 x i1> %mask_b to i16 1356*9880d681SAndroid Build Coastguard Worker ret i16 %mask 1357*9880d681SAndroid Build Coastguard Worker} 1358*9880d681SAndroid Build Coastguard Worker 1359*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @trunc_4i32_to_4i1(<4 x i32> %a, <4 x i32> %b) { 1360*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: trunc_4i32_to_4i1: 1361*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1362*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm1, %xmm0, %xmm0 1363*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %xmm0, %xmm0 1364*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 1365*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1366*9880d681SAndroid Build Coastguard Worker; 1367*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: trunc_4i32_to_4i1: 1368*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1369*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm0, %xmm0 1370*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k1 1371*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm1, %xmm0 1372*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k0 {%k1} 1373*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2d %k0, %xmm0 1374*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1375*9880d681SAndroid Build Coastguard Worker %mask_a = trunc <4 x i32>%a to <4 x i1> 1376*9880d681SAndroid Build Coastguard Worker %mask_b = trunc <4 x i32>%b to <4 x i1> 1377*9880d681SAndroid Build Coastguard Worker %a_and_b = and <4 x i1>%mask_a, %mask_b 1378*9880d681SAndroid Build Coastguard Worker %res = sext <4 x i1>%a_and_b to <4 x i32> 1379*9880d681SAndroid Build Coastguard Worker ret <4 x i32>%res 1380*9880d681SAndroid Build Coastguard Worker} 1381*9880d681SAndroid Build Coastguard Worker 1382*9880d681SAndroid Build Coastguard Worker 1383*9880d681SAndroid Build Coastguard Workerdefine i8 @trunc_8i16_to_8i1(<8 x i16> %a) { 1384*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: trunc_8i16_to_8i1: 1385*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1386*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 1387*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 1388*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k0 1389*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1390*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %AL<def> %AL<kill> %EAX<kill> 1391*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1392*9880d681SAndroid Build Coastguard Worker; 1393*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: trunc_8i16_to_8i1: 1394*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1395*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 1396*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k0 1397*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, %eax 1398*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: ## kill: %AL<def> %AL<kill> %EAX<kill> 1399*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1400*9880d681SAndroid Build Coastguard Worker %mask_b = trunc <8 x i16>%a to <8 x i1> 1401*9880d681SAndroid Build Coastguard Worker %mask = bitcast <8 x i1> %mask_b to i8 1402*9880d681SAndroid Build Coastguard Worker ret i8 %mask 1403*9880d681SAndroid Build Coastguard Worker} 1404*9880d681SAndroid Build Coastguard Worker 1405*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @sext_8i1_8i32(<8 x i32> %a1, <8 x i32> %a2) nounwind { 1406*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_8i1_8i32: 1407*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1408*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %YMM1<def> %YMM1<kill> %ZMM1<def> 1409*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def> 1410*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpgtd %zmm0, %zmm1, %k0 1411*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: knotw %k0, %k1 1412*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 1413*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z} 1414*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovqd %zmm0, %ymm0 1415*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1416*9880d681SAndroid Build Coastguard Worker; 1417*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_8i1_8i32: 1418*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1419*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpgtd %ymm0, %ymm1, %k0 1420*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: knotb %k0, %k0 1421*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2d %k0, %ymm0 1422*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1423*9880d681SAndroid Build Coastguard Worker %x = icmp slt <8 x i32> %a1, %a2 1424*9880d681SAndroid Build Coastguard Worker %x1 = xor <8 x i1>%x, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true> 1425*9880d681SAndroid Build Coastguard Worker %y = sext <8 x i1> %x1 to <8 x i32> 1426*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %y 1427*9880d681SAndroid Build Coastguard Worker} 1428*9880d681SAndroid Build Coastguard Worker 1429*9880d681SAndroid Build Coastguard Worker 1430*9880d681SAndroid Build Coastguard Workerdefine i16 @trunc_i32_to_i1(i32 %a) { 1431*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: trunc_i32_to_i1: 1432*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1433*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: andl $1, %edi 1434*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: kmovw %edi, %k0 1435*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: movw $-4, %ax 1436*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: kmovw %eax, %k1 1437*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: korw %k0, %k1, %k0 1438*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: kmovw %k0, %eax 1439*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: ## kill: %AX<def> %AX<kill> %EAX<kill> 1440*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1441*9880d681SAndroid Build Coastguard Worker %a_i = trunc i32 %a to i1 1442*9880d681SAndroid Build Coastguard Worker %maskv = insertelement <16 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, i1 %a_i, i32 0 1443*9880d681SAndroid Build Coastguard Worker %res = bitcast <16 x i1> %maskv to i16 1444*9880d681SAndroid Build Coastguard Worker ret i16 %res 1445*9880d681SAndroid Build Coastguard Worker} 1446*9880d681SAndroid Build Coastguard Worker 1447*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sext_8i1_8i16(<8 x i32> %a1, <8 x i32> %a2) nounwind { 1448*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_8i1_8i16: 1449*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1450*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpgtd %ymm0, %ymm1, %ymm0 1451*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdw %zmm0, %ymm0 1452*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 1453*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1454*9880d681SAndroid Build Coastguard Worker; 1455*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_8i1_8i16: 1456*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1457*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpgtd %ymm0, %ymm1, %k0 1458*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2w %k0, %xmm0 1459*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1460*9880d681SAndroid Build Coastguard Worker %x = icmp slt <8 x i32> %a1, %a2 1461*9880d681SAndroid Build Coastguard Worker %y = sext <8 x i1> %x to <8 x i16> 1462*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %y 1463*9880d681SAndroid Build Coastguard Worker} 1464*9880d681SAndroid Build Coastguard Worker 1465*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @sext_16i1_16i32(<16 x i32> %a1, <16 x i32> %a2) nounwind { 1466*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_16i1_16i32: 1467*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1468*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpgtd %zmm0, %zmm1, %k1 1469*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 1470*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z} 1471*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1472*9880d681SAndroid Build Coastguard Worker; 1473*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_16i1_16i32: 1474*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1475*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpgtd %zmm0, %zmm1, %k0 1476*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2d %k0, %zmm0 1477*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1478*9880d681SAndroid Build Coastguard Worker %x = icmp slt <16 x i32> %a1, %a2 1479*9880d681SAndroid Build Coastguard Worker %y = sext <16 x i1> %x to <16 x i32> 1480*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %y 1481*9880d681SAndroid Build Coastguard Worker} 1482*9880d681SAndroid Build Coastguard Worker 1483*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @sext_8i1_8i64(<8 x i32> %a1, <8 x i32> %a2) nounwind { 1484*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: sext_8i1_8i64: 1485*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1486*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpgtd %ymm0, %ymm1, %ymm0 1487*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxdq %ymm0, %zmm0 1488*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1489*9880d681SAndroid Build Coastguard Worker; 1490*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: sext_8i1_8i64: 1491*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1492*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpgtd %ymm0, %ymm1, %k0 1493*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2q %k0, %zmm0 1494*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1495*9880d681SAndroid Build Coastguard Worker %x = icmp slt <8 x i32> %a1, %a2 1496*9880d681SAndroid Build Coastguard Worker %y = sext <8 x i1> %x to <8 x i64> 1497*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %y 1498*9880d681SAndroid Build Coastguard Worker} 1499*9880d681SAndroid Build Coastguard Worker 1500*9880d681SAndroid Build Coastguard Workerdefine void @extload_v8i64(<8 x i8>* %a, <8 x i64>* %res) { 1501*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: extload_v8i64: 1502*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1503*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovsxbq (%rdi), %zmm0 1504*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vmovdqa64 %zmm0, (%rsi) 1505*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1506*9880d681SAndroid Build Coastguard Worker %sign_load = load <8 x i8>, <8 x i8>* %a 1507*9880d681SAndroid Build Coastguard Worker %c = sext <8 x i8> %sign_load to <8 x i64> 1508*9880d681SAndroid Build Coastguard Worker store <8 x i64> %c, <8 x i64>* %res 1509*9880d681SAndroid Build Coastguard Worker ret void 1510*9880d681SAndroid Build Coastguard Worker} 1511*9880d681SAndroid Build Coastguard Worker 1512*9880d681SAndroid Build Coastguard Workerdefine <64 x i16> @test21(<64 x i16> %x , <64 x i1> %mask) nounwind readnone { 1513*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test21: 1514*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1515*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %rbp 1516*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %r15 1517*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %r14 1518*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %r13 1519*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %r12 1520*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %rbx 1521*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm7, %zmm7 1522*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm7, %zmm7 1523*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm6, %zmm6 1524*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm6, %zmm6 1525*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm5, %zmm5 1526*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm5, %zmm5 1527*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm4, %zmm4 1528*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm4, %zmm4 1529*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm4, %zmm4, %k0 1530*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $14, %k0, %k1 1531*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1532*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %ecx 1533*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $15, %k0, %k1 1534*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1535*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r15d 1536*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $13, %k0, %k1 1537*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1538*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r12d 1539*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $12, %k0, %k1 1540*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1541*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %edx 1542*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $11, %k0, %k1 1543*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1544*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r13d 1545*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $10, %k0, %k1 1546*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1547*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1548*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill 1549*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $9, %k0, %k1 1550*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1551*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %esi 1552*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $8, %k0, %k1 1553*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1554*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %edi 1555*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $7, %k0, %k1 1556*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1557*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r8d 1558*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $6, %k0, %k1 1559*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1560*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r9d 1561*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $5, %k0, %k1 1562*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1563*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r10d 1564*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $4, %k0, %k1 1565*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1566*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r11d 1567*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $3, %k0, %k1 1568*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1569*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %ebx 1570*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $2, %k0, %k1 1571*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1572*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %ebp 1573*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $1, %k0, %k1 1574*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1575*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r14d 1576*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm5, %zmm5, %k2 1577*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $0, %k0, %k0 1578*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1579*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovd %r15d, %xmm4 1580*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r15d 1581*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $14, %k2, %k0 1582*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1583*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $1, %ecx, %xmm4, %xmm4 1584*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %ecx 1585*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $15, %k2, %k0 1586*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1587*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $2, %r12d, %xmm4, %xmm4 1588*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1589*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $13, %k2, %k0 1590*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1591*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $3, %edx, %xmm4, %xmm4 1592*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r12d 1593*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $12, %k2, %k0 1594*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1595*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $4, %r13d, %xmm4, %xmm4 1596*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %edx 1597*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $11, %k2, %k0 1598*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1599*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $5, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload 1600*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r13d 1601*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $10, %k2, %k0 1602*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1603*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $6, %esi, %xmm4, %xmm4 1604*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %esi 1605*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movl %esi, -{{[0-9]+}}(%rsp) ## 4-byte Spill 1606*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $9, %k2, %k0 1607*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1608*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $7, %edi, %xmm4, %xmm4 1609*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %esi 1610*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $8, %k2, %k0 1611*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1612*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $8, %r8d, %xmm4, %xmm4 1613*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %edi 1614*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $7, %k2, %k0 1615*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1616*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $9, %r9d, %xmm4, %xmm4 1617*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r8d 1618*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $6, %k2, %k0 1619*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1620*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $10, %r10d, %xmm4, %xmm4 1621*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r9d 1622*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $5, %k2, %k0 1623*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1624*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $11, %r11d, %xmm4, %xmm4 1625*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r10d 1626*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $4, %k2, %k0 1627*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1628*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $12, %ebx, %xmm4, %xmm4 1629*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %ebx 1630*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $3, %k2, %k0 1631*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1632*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $13, %ebp, %xmm4, %xmm4 1633*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %ebp 1634*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $2, %k2, %k0 1635*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1636*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $14, %r14d, %xmm4, %xmm4 1637*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r11d 1638*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $1, %k2, %k0 1639*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1640*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $15, %r15d, %xmm4, %xmm4 1641*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r14d 1642*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm6, %zmm6, %k1 1643*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $0, %k2, %k0 1644*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1645*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovd %eax, %xmm5 1646*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r15d 1647*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $14, %k1, %k0 1648*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1649*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $1, %ecx, %xmm5, %xmm5 1650*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %ecx 1651*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $15, %k1, %k0 1652*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1653*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $2, %r12d, %xmm5, %xmm5 1654*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1655*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $13, %k1, %k0 1656*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1657*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $3, %edx, %xmm5, %xmm5 1658*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r12d 1659*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $12, %k1, %k0 1660*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1661*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $4, %r13d, %xmm5, %xmm5 1662*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %edx 1663*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $11, %k1, %k0 1664*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1665*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $5, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload 1666*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r13d 1667*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $10, %k1, %k0 1668*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1669*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $6, %esi, %xmm5, %xmm5 1670*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %esi 1671*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movl %esi, -{{[0-9]+}}(%rsp) ## 4-byte Spill 1672*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $9, %k1, %k0 1673*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1674*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $7, %edi, %xmm5, %xmm5 1675*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %esi 1676*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $8, %k1, %k0 1677*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1678*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $8, %r8d, %xmm5, %xmm5 1679*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %edi 1680*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $7, %k1, %k0 1681*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1682*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $9, %r9d, %xmm5, %xmm5 1683*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r8d 1684*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $6, %k1, %k0 1685*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1686*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $10, %r10d, %xmm5, %xmm5 1687*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r9d 1688*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $5, %k1, %k0 1689*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1690*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $11, %ebx, %xmm5, %xmm5 1691*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %ebx 1692*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $4, %k1, %k0 1693*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1694*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $12, %ebp, %xmm5, %xmm5 1695*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %ebp 1696*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $3, %k1, %k0 1697*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1698*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $13, %r11d, %xmm5, %xmm5 1699*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r10d 1700*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $2, %k1, %k0 1701*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1702*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $14, %r14d, %xmm5, %xmm5 1703*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r11d 1704*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $1, %k1, %k0 1705*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1706*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $15, %r15d, %xmm5, %xmm5 1707*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r14d 1708*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm7, %zmm7, %k0 1709*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $0, %k1, %k1 1710*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1711*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovd %eax, %xmm6 1712*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r15d 1713*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $14, %k0, %k1 1714*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1715*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $1, %ecx, %xmm6, %xmm6 1716*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %ecx 1717*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $15, %k0, %k1 1718*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1719*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $2, %r12d, %xmm6, %xmm6 1720*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r12d 1721*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $13, %k0, %k1 1722*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1723*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $3, %edx, %xmm6, %xmm6 1724*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %edx 1725*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $12, %k0, %k1 1726*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1727*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $4, %r13d, %xmm6, %xmm6 1728*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r13d 1729*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $11, %k0, %k1 1730*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1731*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $5, -{{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload 1732*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1733*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $10, %k0, %k1 1734*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1735*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $6, %esi, %xmm6, %xmm6 1736*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %esi 1737*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $9, %k0, %k1 1738*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1739*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $7, %edi, %xmm6, %xmm6 1740*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %edi 1741*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $8, %k0, %k1 1742*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1743*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $8, %r8d, %xmm6, %xmm6 1744*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r8d 1745*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $7, %k0, %k1 1746*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1747*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $9, %r9d, %xmm6, %xmm6 1748*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r9d 1749*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $6, %k0, %k1 1750*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1751*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $10, %ebx, %xmm6, %xmm6 1752*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %ebx 1753*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $5, %k0, %k1 1754*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1755*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $11, %ebp, %xmm6, %xmm6 1756*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %ebp 1757*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $4, %k0, %k1 1758*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1759*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $12, %r10d, %xmm6, %xmm6 1760*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r10d 1761*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $3, %k0, %k1 1762*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1763*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $13, %r11d, %xmm6, %xmm6 1764*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r11d 1765*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $2, %k0, %k1 1766*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1767*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $14, %r14d, %xmm6, %xmm6 1768*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r14d 1769*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $1, %k0, %k1 1770*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1771*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $15, %r15d, %xmm6, %xmm6 1772*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r15d 1773*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $0, %k0, %k0 1774*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1775*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovd %r12d, %xmm7 1776*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r12d 1777*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $1, %ecx, %xmm7, %xmm7 1778*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $2, %edx, %xmm7, %xmm7 1779*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $3, %r13d, %xmm7, %xmm7 1780*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $4, %eax, %xmm7, %xmm7 1781*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $5, %esi, %xmm7, %xmm7 1782*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $6, %edi, %xmm7, %xmm7 1783*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $7, %r8d, %xmm7, %xmm7 1784*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $8, %r9d, %xmm7, %xmm7 1785*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $9, %ebx, %xmm7, %xmm7 1786*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $10, %ebp, %xmm7, %xmm7 1787*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $11, %r10d, %xmm7, %xmm7 1788*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $12, %r11d, %xmm7, %xmm7 1789*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $13, %r14d, %xmm7, %xmm7 1790*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm4 = xmm4[0],zero,xmm4[1],zero,xmm4[2],zero,xmm4[3],zero,xmm4[4],zero,xmm4[5],zero,xmm4[6],zero,xmm4[7],zero,xmm4[8],zero,xmm4[9],zero,xmm4[10],zero,xmm4[11],zero,xmm4[12],zero,xmm4[13],zero,xmm4[14],zero,xmm4[15],zero 1791*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm4, %ymm4 1792*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm4, %ymm4 1793*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm0, %ymm4, %ymm0 1794*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm4 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[4],zero,xmm5[5],zero,xmm5[6],zero,xmm5[7],zero,xmm5[8],zero,xmm5[9],zero,xmm5[10],zero,xmm5[11],zero,xmm5[12],zero,xmm5[13],zero,xmm5[14],zero,xmm5[15],zero 1795*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm4, %ymm4 1796*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm4, %ymm4 1797*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm1, %ymm4, %ymm1 1798*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm4 = xmm6[0],zero,xmm6[1],zero,xmm6[2],zero,xmm6[3],zero,xmm6[4],zero,xmm6[5],zero,xmm6[6],zero,xmm6[7],zero,xmm6[8],zero,xmm6[9],zero,xmm6[10],zero,xmm6[11],zero,xmm6[12],zero,xmm6[13],zero,xmm6[14],zero,xmm6[15],zero 1799*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm4, %ymm4 1800*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm4, %ymm4 1801*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm2, %ymm4, %ymm2 1802*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $14, %r15d, %xmm7, %xmm4 1803*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $15, %r12d, %xmm4, %xmm4 1804*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm4 = xmm4[0],zero,xmm4[1],zero,xmm4[2],zero,xmm4[3],zero,xmm4[4],zero,xmm4[5],zero,xmm4[6],zero,xmm4[7],zero,xmm4[8],zero,xmm4[9],zero,xmm4[10],zero,xmm4[11],zero,xmm4[12],zero,xmm4[13],zero,xmm4[14],zero,xmm4[15],zero 1805*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm4, %ymm4 1806*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm4, %ymm4 1807*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm3, %ymm4, %ymm3 1808*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %rbx 1809*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %r12 1810*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %r13 1811*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %r14 1812*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %r15 1813*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %rbp 1814*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1815*9880d681SAndroid Build Coastguard Worker; 1816*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test21: 1817*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1818*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %zmm2, %zmm2 1819*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %zmm2, %k1 1820*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovdqu16 %zmm0, %zmm0 {%k1} {z} 1821*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kshiftrq $32, %k1, %k1 1822*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovdqu16 %zmm1, %zmm1 {%k1} {z} 1823*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1824*9880d681SAndroid Build Coastguard Worker %ret = select <64 x i1> %mask, <64 x i16> %x, <64 x i16> zeroinitializer 1825*9880d681SAndroid Build Coastguard Worker ret <64 x i16> %ret 1826*9880d681SAndroid Build Coastguard Worker} 1827*9880d681SAndroid Build Coastguard Worker 1828*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_zext_16x8_to_16x16(<16 x i8> %a) nounwind readnone { 1829*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: shuffle_zext_16x8_to_16x16: 1830*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1831*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero 1832*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1833*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i8> %a, <16 x i8> zeroinitializer, <32 x i32> <i32 0, i32 16, i32 1, i32 16, i32 2, i32 16, i32 3, i32 16, i32 4, i32 16, i32 5, i32 16, i32 6, i32 16, i32 7, i32 16, i32 8, i32 16, i32 9, i32 16, i32 10, i32 16, i32 11, i32 16, i32 12, i32 16, i32 13, i32 16, i32 14, i32 16, i32 15, i32 16> 1834*9880d681SAndroid Build Coastguard Worker %2 = bitcast <32 x i8> %1 to <16 x i16> 1835*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %2 1836*9880d681SAndroid Build Coastguard Worker} 1837*9880d681SAndroid Build Coastguard Worker 1838*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @zext_32x8_to_16x16(<32 x i8> %a) { 1839*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: zext_32x8_to_16x16: 1840*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1841*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero 1842*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1843*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <32 x i8> %a, <32 x i8> zeroinitializer, <32 x i32> <i32 0, i32 32, i32 1, i32 32, i32 2, i32 32, i32 3, i32 32, i32 4, i32 32, i32 5, i32 32, i32 6, i32 32, i32 7, i32 32, i32 8, i32 32, i32 9, i32 32, i32 10, i32 32, i32 11, i32 32, i32 12, i32 32, i32 13, i32 32, i32 14, i32 32, i32 15, i32 32> 1844*9880d681SAndroid Build Coastguard Worker %2 = bitcast <32 x i8> %1 to <16 x i16> 1845*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %2 1846*9880d681SAndroid Build Coastguard Worker} 1847*9880d681SAndroid Build Coastguard Worker 1848*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @zext_32x8_to_8x32(<32 x i8> %a) { 1849*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: zext_32x8_to_8x32: 1850*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1851*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovzxbd {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero 1852*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1853*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <32 x i8> %a, <32 x i8> zeroinitializer, <32 x i32> <i32 0, i32 32, i32 32, i32 32, i32 1, i32 32, i32 32, i32 32, i32 2, i32 32, i32 32, i32 32, i32 3, i32 32, i32 32, i32 32, i32 4, i32 32, i32 32, i32 32, i32 5, i32 32, i32 32, i32 32, i32 6, i32 32, i32 32, i32 32, i32 7, i32 32, i32 32, i32 32> 1854*9880d681SAndroid Build Coastguard Worker %2 = bitcast <32 x i8> %1 to <8 x i32> 1855*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %2 1856*9880d681SAndroid Build Coastguard Worker} 1857*9880d681SAndroid Build Coastguard Worker 1858*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @zext_32x8_to_4x64(<32 x i8> %a) { 1859*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: zext_32x8_to_4x64: 1860*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1861*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovzxbq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero,xmm0[2],zero,zero,zero,zero,zero,zero,zero,xmm0[3],zero,zero,zero,zero,zero,zero,zero 1862*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1863*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <32 x i8> %a, <32 x i8> zeroinitializer, <32 x i32> <i32 0, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 1, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 2, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 3, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32> 1864*9880d681SAndroid Build Coastguard Worker %2 = bitcast <32 x i8> %1 to <4 x i64> 1865*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %2 1866*9880d681SAndroid Build Coastguard Worker} 1867*9880d681SAndroid Build Coastguard Worker 1868*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @zext_16x16_to_8x32(<16 x i16> %a) { 1869*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: zext_16x16_to_8x32: 1870*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1871*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero 1872*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1873*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i16> %a, <16 x i16> zeroinitializer, <16 x i32> <i32 0, i32 16, i32 1, i32 16, i32 2, i32 16, i32 3, i32 16, i32 4, i32 16, i32 5, i32 16, i32 6, i32 16, i32 7, i32 16> 1874*9880d681SAndroid Build Coastguard Worker %2 = bitcast <16 x i16> %1 to <8 x i32> 1875*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %2 1876*9880d681SAndroid Build Coastguard Worker} 1877*9880d681SAndroid Build Coastguard Worker 1878*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @zext_16x16_to_4x64(<16 x i16> %a) { 1879*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: zext_16x16_to_4x64: 1880*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1881*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovzxwq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 1882*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1883*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i16> %a, <16 x i16> zeroinitializer, <16 x i32> <i32 0, i32 16, i32 16, i32 16, i32 1, i32 16, i32 16, i32 16, i32 2, i32 16, i32 16, i32 16, i32 3, i32 16, i32 16, i32 16> 1884*9880d681SAndroid Build Coastguard Worker %2 = bitcast <16 x i16> %1 to <4 x i64> 1885*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %2 1886*9880d681SAndroid Build Coastguard Worker} 1887*9880d681SAndroid Build Coastguard Worker 1888*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @zext_8x32_to_4x64(<8 x i32> %a) { 1889*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: zext_8x32_to_4x64: 1890*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 1891*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 1892*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 1893*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <8 x i32> %a, <8 x i32> zeroinitializer, <8 x i32> <i32 0, i32 8, i32 1, i32 8, i32 2, i32 8, i32 3, i32 8> 1894*9880d681SAndroid Build Coastguard Worker %2 = bitcast <8 x i32> %1 to <4 x i64> 1895*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %2 1896*9880d681SAndroid Build Coastguard Worker} 1897*9880d681SAndroid Build Coastguard Worker 1898*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @zext_64xi1_to_64xi8(<64 x i8> %x, <64 x i8> %y) #0 { 1899*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_64xi1_to_64xi8: 1900*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1901*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpeqb %ymm2, %ymm0, %ymm0 1902*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa {{.*#+}} ymm2 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] 1903*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm2, %ymm0, %ymm0 1904*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpeqb %ymm3, %ymm1, %ymm1 1905*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm2, %ymm1, %ymm1 1906*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1907*9880d681SAndroid Build Coastguard Worker; 1908*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_64xi1_to_64xi8: 1909*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1910*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpeqb %zmm1, %zmm0, %k1 1911*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovdqu8 {{.*}}(%rip), %zmm0 {%k1} {z} 1912*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1913*9880d681SAndroid Build Coastguard Worker %mask = icmp eq <64 x i8> %x, %y 1914*9880d681SAndroid Build Coastguard Worker %1 = zext <64 x i1> %mask to <64 x i8> 1915*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %1 1916*9880d681SAndroid Build Coastguard Worker} 1917*9880d681SAndroid Build Coastguard Worker 1918*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @zext_32xi1_to_32xi16(<32 x i16> %x, <32 x i16> %y) #0 { 1919*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_32xi1_to_32xi16: 1920*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1921*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpeqw %ymm2, %ymm0, %ymm0 1922*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrlw $15, %ymm0, %ymm0 1923*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpeqw %ymm3, %ymm1, %ymm1 1924*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrlw $15, %ymm1, %ymm1 1925*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1926*9880d681SAndroid Build Coastguard Worker; 1927*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_32xi1_to_32xi16: 1928*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1929*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpeqw %zmm1, %zmm0, %k1 1930*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovdqu16 {{.*}}(%rip), %zmm0 {%k1} {z} 1931*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1932*9880d681SAndroid Build Coastguard Worker %mask = icmp eq <32 x i16> %x, %y 1933*9880d681SAndroid Build Coastguard Worker %1 = zext <32 x i1> %mask to <32 x i16> 1934*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %1 1935*9880d681SAndroid Build Coastguard Worker} 1936*9880d681SAndroid Build Coastguard Worker 1937*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @zext_16xi1_to_16xi16(<16 x i16> %x, <16 x i16> %y) #0 { 1938*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_16xi1_to_16xi16: 1939*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1940*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpeqw %ymm1, %ymm0, %ymm0 1941*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrlw $15, %ymm0, %ymm0 1942*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1943*9880d681SAndroid Build Coastguard Worker; 1944*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_16xi1_to_16xi16: 1945*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1946*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpeqw %ymm1, %ymm0, %k1 1947*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovdqu16 {{.*}}(%rip), %ymm0 {%k1} {z} 1948*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1949*9880d681SAndroid Build Coastguard Worker %mask = icmp eq <16 x i16> %x, %y 1950*9880d681SAndroid Build Coastguard Worker %1 = zext <16 x i1> %mask to <16 x i16> 1951*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %1 1952*9880d681SAndroid Build Coastguard Worker} 1953*9880d681SAndroid Build Coastguard Worker 1954*9880d681SAndroid Build Coastguard Worker 1955*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @zext_32xi1_to_32xi8(<32 x i16> %x, <32 x i16> %y) #0 { 1956*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_32xi1_to_32xi8: 1957*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1958*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpeqw %ymm2, %ymm0, %ymm0 1959*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwd %ymm0, %zmm0 1960*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm0, %xmm0 1961*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpeqw %ymm3, %ymm1, %ymm1 1962*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwd %ymm1, %zmm1 1963*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm1, %xmm1 1964*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1965*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vandps {{.*}}(%rip), %ymm0, %ymm0 1966*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1967*9880d681SAndroid Build Coastguard Worker; 1968*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_32xi1_to_32xi8: 1969*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1970*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpeqw %zmm1, %zmm0, %k1 1971*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovdqu8 {{.*}}(%rip), %ymm0 {%k1} {z} 1972*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1973*9880d681SAndroid Build Coastguard Worker %mask = icmp eq <32 x i16> %x, %y 1974*9880d681SAndroid Build Coastguard Worker %1 = zext <32 x i1> %mask to <32 x i8> 1975*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %1 1976*9880d681SAndroid Build Coastguard Worker} 1977*9880d681SAndroid Build Coastguard Worker 1978*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @zext_4xi1_to_4x32(<4 x i8> %x, <4 x i8> %y) #0 { 1979*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_4xi1_to_4x32: 1980*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1981*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa {{.*#+}} xmm2 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0] 1982*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm2, %xmm1, %xmm1 1983*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm2, %xmm0, %xmm0 1984*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0 1985*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrld $31, %xmm0, %xmm0 1986*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1987*9880d681SAndroid Build Coastguard Worker; 1988*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_4xi1_to_4x32: 1989*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1990*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovdqa64 {{.*#+}} xmm2 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0] 1991*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpandq %xmm2, %xmm1, %xmm1 1992*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpandq %xmm2, %xmm0, %xmm0 1993*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpeqd %xmm1, %xmm0, %k1 1994*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpbroadcastd {{.*}}(%rip), %xmm0 {%k1} {z} 1995*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1996*9880d681SAndroid Build Coastguard Worker %mask = icmp eq <4 x i8> %x, %y 1997*9880d681SAndroid Build Coastguard Worker %1 = zext <4 x i1> %mask to <4 x i32> 1998*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %1 1999*9880d681SAndroid Build Coastguard Worker} 2000*9880d681SAndroid Build Coastguard Worker 2001*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @zext_2xi1_to_2xi64(<2 x i8> %x, <2 x i8> %y) #0 { 2002*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: zext_2xi1_to_2xi64: 2003*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 2004*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa {{.*#+}} xmm2 = [255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0] 2005*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm2, %xmm1, %xmm1 2006*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %xmm2, %xmm0, %xmm0 2007*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpeqq %xmm1, %xmm0, %xmm0 2008*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrlq $63, %xmm0, %xmm0 2009*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 2010*9880d681SAndroid Build Coastguard Worker; 2011*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: zext_2xi1_to_2xi64: 2012*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 2013*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovdqa64 {{.*#+}} xmm2 = [255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0] 2014*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpandq %xmm2, %xmm1, %xmm1 2015*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpandq %xmm2, %xmm0, %xmm0 2016*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpeqq %xmm1, %xmm0, %k1 2017*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovdqa64 {{.*}}(%rip), %xmm0 {%k1} {z} 2018*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 2019*9880d681SAndroid Build Coastguard Worker %mask = icmp eq <2 x i8> %x, %y 2020*9880d681SAndroid Build Coastguard Worker %1 = zext <2 x i1> %mask to <2 x i64> 2021*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %1 2022*9880d681SAndroid Build Coastguard Worker} 2023