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-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=SSE --check-prefix=SSE2 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+ssse3 | FileCheck %s --check-prefix=SSE --check-prefix=SSSE3 4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=SSE --check-prefix=SSE41 5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=AVX --check-prefix=AVX1 6*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=AVX --check-prefix=AVX2 7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix=AVX --check-prefix=AVX512 --check-prefix=AVX512F 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @zext_16i8_to_8i16(<16 x i8> %A) nounwind uwtable readnone ssp { 10*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_16i8_to_8i16: 11*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 12*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm1, %xmm1 13*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 14*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 15*9880d681SAndroid Build Coastguard Worker; 16*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_16i8_to_8i16: 17*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 18*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm1, %xmm1 19*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 20*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 21*9880d681SAndroid Build Coastguard Worker; 22*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_16i8_to_8i16: 23*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 24*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero 25*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 26*9880d681SAndroid Build Coastguard Worker; 27*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: zext_16i8_to_8i16: 28*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 29*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero 30*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 31*9880d681SAndroid Build Coastguard Workerentry: 32*9880d681SAndroid Build Coastguard Worker %B = shufflevector <16 x i8> %A, <16 x i8> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 33*9880d681SAndroid Build Coastguard Worker %C = zext <8 x i8> %B to <8 x i16> 34*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %C 35*9880d681SAndroid Build Coastguard Worker} 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker; PR17654 38*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @zext_16i8_to_16i16(<16 x i8> %A) { 39*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_16i8_to_16i16: 40*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 41*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 42*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 43*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7] 44*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15] 45*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 46*9880d681SAndroid Build Coastguard Worker; 47*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_16i8_to_16i16: 48*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 49*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 50*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 51*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7] 52*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15] 53*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 54*9880d681SAndroid Build Coastguard Worker; 55*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_16i8_to_16i16: 56*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 57*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm0, %xmm1 58*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm2, %xmm2 59*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbw {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero 60*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15] 61*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 62*9880d681SAndroid Build Coastguard Worker; 63*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: zext_16i8_to_16i16: 64*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 65*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpxor %xmm1, %xmm1, %xmm1 66*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15] 67*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero 68*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 69*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 70*9880d681SAndroid Build Coastguard Worker; 71*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: zext_16i8_to_16i16: 72*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 73*9880d681SAndroid Build Coastguard Worker; AVX2-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; AVX2-NEXT: retq 75*9880d681SAndroid Build Coastguard Worker; 76*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: zext_16i8_to_16i16: 77*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 78*9880d681SAndroid Build Coastguard Worker; AVX512-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 79*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 80*9880d681SAndroid Build Coastguard Workerentry: 81*9880d681SAndroid Build Coastguard Worker %B = zext <16 x i8> %A to <16 x i16> 82*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %B 83*9880d681SAndroid Build Coastguard Worker} 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @zext_16i8_to_4i32(<16 x i8> %A) nounwind uwtable readnone ssp { 86*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_16i8_to_4i32: 87*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 88*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm1, %xmm1 89*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 90*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 91*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 92*9880d681SAndroid Build Coastguard Worker; 93*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_16i8_to_4i32: 94*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 95*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm1, %xmm1 96*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 97*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 98*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 99*9880d681SAndroid Build Coastguard Worker; 100*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_16i8_to_4i32: 101*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 102*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 103*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 104*9880d681SAndroid Build Coastguard Worker; 105*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: zext_16i8_to_4i32: 106*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 107*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 108*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 109*9880d681SAndroid Build Coastguard Workerentry: 110*9880d681SAndroid Build Coastguard Worker %B = shufflevector <16 x i8> %A, <16 x i8> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 111*9880d681SAndroid Build Coastguard Worker %C = zext <4 x i8> %B to <4 x i32> 112*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %C 113*9880d681SAndroid Build Coastguard Worker} 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @zext_16i8_to_8i32(<16 x i8> %A) nounwind uwtable readnone ssp { 116*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_16i8_to_8i32: 117*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 118*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 119*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 120*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 121*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 122*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 123*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 124*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 125*9880d681SAndroid Build Coastguard Worker; 126*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_16i8_to_8i32: 127*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 128*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 129*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 130*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 131*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 132*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 133*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 134*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 135*9880d681SAndroid Build Coastguard Worker; 136*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_16i8_to_8i32: 137*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 138*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbd {{.*#+}} xmm2 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 139*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 140*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 141*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm0 142*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 143*9880d681SAndroid Build Coastguard Worker; 144*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: zext_16i8_to_8i32: 145*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 146*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 147*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 148*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 149*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 150*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 151*9880d681SAndroid Build Coastguard Worker; 152*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: zext_16i8_to_8i32: 153*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 154*9880d681SAndroid Build Coastguard Worker; AVX2-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 155*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 156*9880d681SAndroid Build Coastguard Worker; 157*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: zext_16i8_to_8i32: 158*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 159*9880d681SAndroid Build Coastguard Worker; AVX512-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 160*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 161*9880d681SAndroid Build Coastguard Workerentry: 162*9880d681SAndroid Build Coastguard Worker %B = shufflevector <16 x i8> %A, <16 x i8> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 163*9880d681SAndroid Build Coastguard Worker %C = zext <8 x i8> %B to <8 x i32> 164*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %C 165*9880d681SAndroid Build Coastguard Worker} 166*9880d681SAndroid Build Coastguard Worker 167*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @zext_16i8_to_2i64(<16 x i8> %A) nounwind uwtable readnone ssp { 168*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_16i8_to_2i64: 169*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 170*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm1, %xmm1 171*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 172*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 173*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 174*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 175*9880d681SAndroid Build Coastguard Worker; 176*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_16i8_to_2i64: 177*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 178*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero 179*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 180*9880d681SAndroid Build Coastguard Worker; 181*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_16i8_to_2i64: 182*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 183*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero 184*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 185*9880d681SAndroid Build Coastguard Worker; 186*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: zext_16i8_to_2i64: 187*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 188*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero 189*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 190*9880d681SAndroid Build Coastguard Workerentry: 191*9880d681SAndroid Build Coastguard Worker %B = shufflevector <16 x i8> %A, <16 x i8> undef, <2 x i32> <i32 0, i32 1> 192*9880d681SAndroid Build Coastguard Worker %C = zext <2 x i8> %B to <2 x i64> 193*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %C 194*9880d681SAndroid Build Coastguard Worker} 195*9880d681SAndroid Build Coastguard Worker 196*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @zext_16i8_to_4i64(<16 x i8> %A) nounwind uwtable readnone ssp { 197*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_16i8_to_4i64: 198*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 199*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 200*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 201*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 202*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 203*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 204*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 205*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3] 206*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 207*9880d681SAndroid Build Coastguard Worker; 208*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_16i8_to_4i64: 209*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 210*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 211*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero 212*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm1 = xmm1[2],zero,zero,zero,zero,zero,zero,zero,xmm1[3],zero,zero,zero,zero,zero,zero,zero 213*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 214*9880d681SAndroid Build Coastguard Worker; 215*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_16i8_to_4i64: 216*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 217*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbq {{.*#+}} xmm2 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero 218*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrld $16, %xmm0 219*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero 220*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm0 221*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 222*9880d681SAndroid Build Coastguard Worker; 223*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: zext_16i8_to_4i64: 224*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 225*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero 226*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrld $16, %xmm0, %xmm0 227*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero 228*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 229*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 230*9880d681SAndroid Build Coastguard Worker; 231*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: zext_16i8_to_4i64: 232*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 233*9880d681SAndroid Build Coastguard Worker; AVX2-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 234*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 235*9880d681SAndroid Build Coastguard Worker; 236*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: zext_16i8_to_4i64: 237*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 238*9880d681SAndroid Build Coastguard Worker; AVX512-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 239*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 240*9880d681SAndroid Build Coastguard Workerentry: 241*9880d681SAndroid Build Coastguard Worker %B = shufflevector <16 x i8> %A, <16 x i8> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 242*9880d681SAndroid Build Coastguard Worker %C = zext <4 x i8> %B to <4 x i64> 243*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %C 244*9880d681SAndroid Build Coastguard Worker} 245*9880d681SAndroid Build Coastguard Worker 246*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @zext_8i16_to_4i32(<8 x i16> %A) nounwind uwtable readnone ssp { 247*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_8i16_to_4i32: 248*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 249*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm1, %xmm1 250*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 251*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 252*9880d681SAndroid Build Coastguard Worker; 253*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_8i16_to_4i32: 254*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 255*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm1, %xmm1 256*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 257*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 258*9880d681SAndroid Build Coastguard Worker; 259*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_8i16_to_4i32: 260*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 261*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 262*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 263*9880d681SAndroid Build Coastguard Worker; 264*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: zext_8i16_to_4i32: 265*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 266*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 267*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 268*9880d681SAndroid Build Coastguard Workerentry: 269*9880d681SAndroid Build Coastguard Worker %B = shufflevector <8 x i16> %A, <8 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 270*9880d681SAndroid Build Coastguard Worker %C = zext <4 x i16> %B to <4 x i32> 271*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %C 272*9880d681SAndroid Build Coastguard Worker} 273*9880d681SAndroid Build Coastguard Worker 274*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @zext_8i16_to_8i32(<8 x i16> %A) nounwind uwtable readnone ssp { 275*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_8i16_to_8i32: 276*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 277*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 278*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 279*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 280*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 281*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 282*9880d681SAndroid Build Coastguard Worker; 283*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_8i16_to_8i32: 284*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 285*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 286*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 287*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 288*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 289*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 290*9880d681SAndroid Build Coastguard Worker; 291*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_8i16_to_8i32: 292*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 293*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm0, %xmm1 294*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm2, %xmm2 295*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero 296*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 297*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 298*9880d681SAndroid Build Coastguard Worker; 299*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: zext_8i16_to_8i32: 300*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 301*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpxor %xmm1, %xmm1, %xmm1 302*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 303*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 304*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 305*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 306*9880d681SAndroid Build Coastguard Worker; 307*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: zext_8i16_to_8i32: 308*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 309*9880d681SAndroid Build Coastguard Worker; AVX2-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 310*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 311*9880d681SAndroid Build Coastguard Worker; 312*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: zext_8i16_to_8i32: 313*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 314*9880d681SAndroid Build Coastguard Worker; AVX512-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 315*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 316*9880d681SAndroid Build Coastguard Workerentry: 317*9880d681SAndroid Build Coastguard Worker %B = zext <8 x i16> %A to <8 x i32> 318*9880d681SAndroid Build Coastguard Worker ret <8 x i32>%B 319*9880d681SAndroid Build Coastguard Worker} 320*9880d681SAndroid Build Coastguard Worker 321*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @zext_8i16_to_2i64(<8 x i16> %A) nounwind uwtable readnone ssp { 322*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_8i16_to_2i64: 323*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 324*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm1, %xmm1 325*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 326*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 327*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 328*9880d681SAndroid Build Coastguard Worker; 329*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_8i16_to_2i64: 330*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 331*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm1, %xmm1 332*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 333*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 334*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 335*9880d681SAndroid Build Coastguard Worker; 336*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_8i16_to_2i64: 337*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 338*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero 339*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 340*9880d681SAndroid Build Coastguard Worker; 341*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: zext_8i16_to_2i64: 342*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 343*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero 344*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 345*9880d681SAndroid Build Coastguard Workerentry: 346*9880d681SAndroid Build Coastguard Worker %B = shufflevector <8 x i16> %A, <8 x i16> undef, <2 x i32> <i32 0, i32 1> 347*9880d681SAndroid Build Coastguard Worker %C = zext <2 x i16> %B to <2 x i64> 348*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %C 349*9880d681SAndroid Build Coastguard Worker} 350*9880d681SAndroid Build Coastguard Worker 351*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @zext_8i16_to_4i64(<8 x i16> %A) nounwind uwtable readnone ssp { 352*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_8i16_to_4i64: 353*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 354*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 355*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 356*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 357*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 358*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 359*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3] 360*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 361*9880d681SAndroid Build Coastguard Worker; 362*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_8i16_to_4i64: 363*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 364*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 365*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 366*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 367*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 368*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 369*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3] 370*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 371*9880d681SAndroid Build Coastguard Worker; 372*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_8i16_to_4i64: 373*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 374*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwq {{.*#+}} xmm2 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero 375*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 376*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero 377*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm0 378*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 379*9880d681SAndroid Build Coastguard Worker; 380*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: zext_8i16_to_4i64: 381*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 382*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero 383*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 384*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero 385*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 386*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 387*9880d681SAndroid Build Coastguard Worker; 388*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: zext_8i16_to_4i64: 389*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 390*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovzxwq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 391*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 392*9880d681SAndroid Build Coastguard Worker; 393*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: zext_8i16_to_4i64: 394*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 395*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovzxwq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 396*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 397*9880d681SAndroid Build Coastguard Workerentry: 398*9880d681SAndroid Build Coastguard Worker %B = shufflevector <8 x i16> %A, <8 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 399*9880d681SAndroid Build Coastguard Worker %C = zext <4 x i16> %B to <4 x i64> 400*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %C 401*9880d681SAndroid Build Coastguard Worker} 402*9880d681SAndroid Build Coastguard Worker 403*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @zext_4i32_to_2i64(<4 x i32> %A) nounwind uwtable readnone ssp { 404*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_4i32_to_2i64: 405*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 406*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm1, %xmm1 407*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 408*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 409*9880d681SAndroid Build Coastguard Worker; 410*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_4i32_to_2i64: 411*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 412*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm1, %xmm1 413*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 414*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 415*9880d681SAndroid Build Coastguard Worker; 416*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_4i32_to_2i64: 417*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 418*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero 419*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 420*9880d681SAndroid Build Coastguard Worker; 421*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: zext_4i32_to_2i64: 422*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 423*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovzxdq {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero 424*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 425*9880d681SAndroid Build Coastguard Workerentry: 426*9880d681SAndroid Build Coastguard Worker %B = shufflevector <4 x i32> %A, <4 x i32> undef, <2 x i32> <i32 0, i32 1> 427*9880d681SAndroid Build Coastguard Worker %C = zext <2 x i32> %B to <2 x i64> 428*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %C 429*9880d681SAndroid Build Coastguard Worker} 430*9880d681SAndroid Build Coastguard Worker 431*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @zext_4i32_to_4i64(<4 x i32> %A) nounwind uwtable readnone ssp { 432*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_4i32_to_4i64: 433*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 434*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 435*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 436*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 437*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3] 438*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 439*9880d681SAndroid Build Coastguard Worker; 440*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_4i32_to_4i64: 441*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 442*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 443*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 444*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 445*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3] 446*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 447*9880d681SAndroid Build Coastguard Worker; 448*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_4i32_to_4i64: 449*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 450*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm0, %xmm1 451*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm2, %xmm2 452*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero 453*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3] 454*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 455*9880d681SAndroid Build Coastguard Worker; 456*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: zext_4i32_to_4i64: 457*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 458*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpxor %xmm1, %xmm1, %xmm1 459*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhdq {{.*#+}} xmm1 = xmm0[2],xmm1[2],xmm0[3],xmm1[3] 460*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxdq {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero 461*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 462*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 463*9880d681SAndroid Build Coastguard Worker; 464*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: zext_4i32_to_4i64: 465*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 466*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 467*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 468*9880d681SAndroid Build Coastguard Worker; 469*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: zext_4i32_to_4i64: 470*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 471*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 472*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 473*9880d681SAndroid Build Coastguard Workerentry: 474*9880d681SAndroid Build Coastguard Worker %B = zext <4 x i32> %A to <4 x i64> 475*9880d681SAndroid Build Coastguard Worker ret <4 x i64>%B 476*9880d681SAndroid Build Coastguard Worker} 477*9880d681SAndroid Build Coastguard Worker 478*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @load_zext_2i8_to_2i64(<2 x i8> *%ptr) { 479*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_2i8_to_2i64: 480*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 481*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movzwl (%rdi), %eax 482*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm0 483*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm1, %xmm1 484*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 485*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 486*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 487*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 488*9880d681SAndroid Build Coastguard Worker; 489*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_2i8_to_2i64: 490*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 491*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movzwl (%rdi), %eax 492*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm0 493*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero 494*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 495*9880d681SAndroid Build Coastguard Worker; 496*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_2i8_to_2i64: 497*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 498*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbq {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 499*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 500*9880d681SAndroid Build Coastguard Worker; 501*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_zext_2i8_to_2i64: 502*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 503*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovzxbq {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 504*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 505*9880d681SAndroid Build Coastguard Workerentry: 506*9880d681SAndroid Build Coastguard Worker %X = load <2 x i8>, <2 x i8>* %ptr 507*9880d681SAndroid Build Coastguard Worker %Y = zext <2 x i8> %X to <2 x i64> 508*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Y 509*9880d681SAndroid Build Coastguard Worker} 510*9880d681SAndroid Build Coastguard Worker 511*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @load_zext_4i8_to_4i32(<4 x i8> *%ptr) { 512*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_4i8_to_4i32: 513*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 514*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 515*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm1, %xmm1 516*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 517*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 518*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 519*9880d681SAndroid Build Coastguard Worker; 520*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_4i8_to_4i32: 521*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 522*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 523*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm1, %xmm1 524*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 525*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 526*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 527*9880d681SAndroid Build Coastguard Worker; 528*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_4i8_to_4i32: 529*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 530*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbd {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero 531*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 532*9880d681SAndroid Build Coastguard Worker; 533*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_zext_4i8_to_4i32: 534*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 535*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovzxbd {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero 536*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 537*9880d681SAndroid Build Coastguard Workerentry: 538*9880d681SAndroid Build Coastguard Worker %X = load <4 x i8>, <4 x i8>* %ptr 539*9880d681SAndroid Build Coastguard Worker %Y = zext <4 x i8> %X to <4 x i32> 540*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %Y 541*9880d681SAndroid Build Coastguard Worker} 542*9880d681SAndroid Build Coastguard Worker 543*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @load_zext_4i8_to_4i64(<4 x i8> *%ptr) { 544*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_4i8_to_4i64: 545*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 546*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero 547*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 548*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 549*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 550*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 551*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 552*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3] 553*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 554*9880d681SAndroid Build Coastguard Worker; 555*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_4i8_to_4i64: 556*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 557*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero 558*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 559*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero 560*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm1 = xmm1[2],zero,zero,zero,zero,zero,zero,zero,xmm1[3],zero,zero,zero,zero,zero,zero,zero 561*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 562*9880d681SAndroid Build Coastguard Worker; 563*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_4i8_to_4i64: 564*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 565*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbq {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 566*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbq {{.*#+}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 567*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 568*9880d681SAndroid Build Coastguard Worker; 569*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_4i8_to_4i64: 570*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 571*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbq {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 572*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbq {{.*#+}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 573*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 574*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 575*9880d681SAndroid Build Coastguard Worker; 576*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_4i8_to_4i64: 577*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 578*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovzxbq {{.*#+}} ymm0 = 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 579*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 580*9880d681SAndroid Build Coastguard Worker; 581*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_4i8_to_4i64: 582*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 583*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovzxbq {{.*#+}} ymm0 = 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 584*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 585*9880d681SAndroid Build Coastguard Workerentry: 586*9880d681SAndroid Build Coastguard Worker %X = load <4 x i8>, <4 x i8>* %ptr 587*9880d681SAndroid Build Coastguard Worker %Y = zext <4 x i8> %X to <4 x i64> 588*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Y 589*9880d681SAndroid Build Coastguard Worker} 590*9880d681SAndroid Build Coastguard Worker 591*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @load_zext_8i8_to_8i16(<8 x i8> *%ptr) { 592*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_8i8_to_8i16: 593*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 594*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 595*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm1, %xmm1 596*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 597*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 598*9880d681SAndroid Build Coastguard Worker; 599*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_8i8_to_8i16: 600*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 601*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 602*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm1, %xmm1 603*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 604*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 605*9880d681SAndroid Build Coastguard Worker; 606*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_8i8_to_8i16: 607*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 608*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbw {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero 609*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 610*9880d681SAndroid Build Coastguard Worker; 611*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_zext_8i8_to_8i16: 612*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 613*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovzxbw {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero 614*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 615*9880d681SAndroid Build Coastguard Workerentry: 616*9880d681SAndroid Build Coastguard Worker %X = load <8 x i8>, <8 x i8>* %ptr 617*9880d681SAndroid Build Coastguard Worker %Y = zext <8 x i8> %X to <8 x i16> 618*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %Y 619*9880d681SAndroid Build Coastguard Worker} 620*9880d681SAndroid Build Coastguard Worker 621*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @load_zext_8i8_to_8i32(<8 x i8> *%ptr) { 622*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_8i8_to_8i32: 623*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 624*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq {{.*#+}} xmm1 = mem[0],zero 625*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 626*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 627*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 628*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 629*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 630*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 631*9880d681SAndroid Build Coastguard Worker; 632*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_8i8_to_8i32: 633*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 634*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq {{.*#+}} xmm1 = mem[0],zero 635*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 636*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 637*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 638*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 639*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 640*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 641*9880d681SAndroid Build Coastguard Worker; 642*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_8i8_to_8i32: 643*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 644*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbd {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero 645*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbd {{.*#+}} xmm1 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero 646*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 647*9880d681SAndroid Build Coastguard Worker; 648*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_8i8_to_8i32: 649*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 650*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbd {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero 651*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbd {{.*#+}} xmm1 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero 652*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 653*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 654*9880d681SAndroid Build Coastguard Worker; 655*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_8i8_to_8i32: 656*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 657*9880d681SAndroid Build Coastguard Worker; AVX2-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 658*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 659*9880d681SAndroid Build Coastguard Worker; 660*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_8i8_to_8i32: 661*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 662*9880d681SAndroid Build Coastguard Worker; AVX512-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 663*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 664*9880d681SAndroid Build Coastguard Workerentry: 665*9880d681SAndroid Build Coastguard Worker %X = load <8 x i8>, <8 x i8>* %ptr 666*9880d681SAndroid Build Coastguard Worker %Y = zext <8 x i8> %X to <8 x i32> 667*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Y 668*9880d681SAndroid Build Coastguard Worker} 669*9880d681SAndroid Build Coastguard Worker 670*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @load_zext_16i8_to_8i32(<16 x i8> *%ptr) { 671*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_16i8_to_8i32: 672*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 673*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa (%rdi), %xmm1 674*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 675*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 676*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 677*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 678*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 679*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 680*9880d681SAndroid Build Coastguard Worker; 681*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_16i8_to_8i32: 682*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 683*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa (%rdi), %xmm1 684*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 685*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 686*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 687*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 688*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 689*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 690*9880d681SAndroid Build Coastguard Worker; 691*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_16i8_to_8i32: 692*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 693*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa (%rdi), %xmm1 694*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbd {{.*#+}} xmm0 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero 695*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,2,3] 696*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero 697*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 698*9880d681SAndroid Build Coastguard Worker; 699*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_16i8_to_8i32: 700*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 701*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa (%rdi), %xmm0 702*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 703*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 704*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 705*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 706*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 707*9880d681SAndroid Build Coastguard Worker; 708*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_16i8_to_8i32: 709*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 710*9880d681SAndroid Build Coastguard Worker; AVX2-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 711*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 712*9880d681SAndroid Build Coastguard Worker; 713*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_16i8_to_8i32: 714*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 715*9880d681SAndroid Build Coastguard Worker; AVX512-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 716*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 717*9880d681SAndroid Build Coastguard Workerentry: 718*9880d681SAndroid Build Coastguard Worker %X = load <16 x i8>, <16 x i8>* %ptr 719*9880d681SAndroid Build Coastguard Worker %Y = shufflevector <16 x i8> %X, <16 x i8> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 720*9880d681SAndroid Build Coastguard Worker %Z = zext <8 x i8> %Y to <8 x i32> 721*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Z 722*9880d681SAndroid Build Coastguard Worker} 723*9880d681SAndroid Build Coastguard Worker 724*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @load_zext_8i8_to_8i64(<8 x i8> *%ptr) { 725*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_8i8_to_8i64: 726*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 727*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq {{.*#+}} xmm1 = mem[0],zero 728*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm4, %xmm4 729*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,1,2,3] 730*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3],xmm1[4],xmm4[4],xmm1[5],xmm4[5],xmm1[6],xmm4[6],xmm1[7],xmm4[7] 731*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3] 732*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 733*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1] 734*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm4[2],xmm1[3],xmm4[3] 735*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7] 736*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3] 737*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm3, %xmm2 738*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1] 739*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhdq {{.*#+}} xmm3 = xmm3[2],xmm4[2],xmm3[3],xmm4[3] 740*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 741*9880d681SAndroid Build Coastguard Worker; 742*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_8i8_to_8i64: 743*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 744*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq {{.*#+}} xmm1 = mem[0],zero 745*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa {{.*#+}} xmm4 = [0,128,128,128,128,128,128,128,1,128,128,128,128,128,128,128] 746*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 747*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb %xmm4, %xmm0 748*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [2,128,128,128,128,128,128,128,3,128,128,128,128,128,128,128] 749*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,1,2,3] 750*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb %xmm5, %xmm1 751*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm3, %xmm2 752*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb %xmm4, %xmm2 753*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb %xmm5, %xmm3 754*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 755*9880d681SAndroid Build Coastguard Worker; 756*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_8i8_to_8i64: 757*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 758*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbq {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 759*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbq {{.*#+}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 760*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbq {{.*#+}} xmm2 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 761*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbq {{.*#+}} xmm3 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 762*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 763*9880d681SAndroid Build Coastguard Worker; 764*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_8i8_to_8i64: 765*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 766*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbq {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 767*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbq {{.*#+}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 768*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 769*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbq {{.*#+}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 770*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbq {{.*#+}} xmm2 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero 771*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1 772*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 773*9880d681SAndroid Build Coastguard Worker; 774*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_8i8_to_8i64: 775*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 776*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovzxbq {{.*#+}} ymm0 = 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 777*9880d681SAndroid Build Coastguard Worker; AVX2-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 778*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 779*9880d681SAndroid Build Coastguard Worker; 780*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_8i8_to_8i64: 781*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 782*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovzxbq {{.*#+}} zmm0 = 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 783*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 784*9880d681SAndroid Build Coastguard Workerentry: 785*9880d681SAndroid Build Coastguard Worker %X = load <8 x i8>, <8 x i8>* %ptr 786*9880d681SAndroid Build Coastguard Worker %Y = zext <8 x i8> %X to <8 x i64> 787*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %Y 788*9880d681SAndroid Build Coastguard Worker} 789*9880d681SAndroid Build Coastguard Worker 790*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @load_zext_16i8_to_16i16(<16 x i8> *%ptr) { 791*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_16i8_to_16i16: 792*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 793*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa (%rdi), %xmm1 794*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 795*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 796*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7] 797*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15] 798*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 799*9880d681SAndroid Build Coastguard Worker; 800*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_16i8_to_16i16: 801*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 802*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa (%rdi), %xmm1 803*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 804*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 805*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7] 806*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15] 807*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 808*9880d681SAndroid Build Coastguard Worker; 809*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_16i8_to_16i16: 810*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 811*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbw {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero 812*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbw {{.*#+}} 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 813*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 814*9880d681SAndroid Build Coastguard Worker; 815*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_16i8_to_16i16: 816*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 817*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbw {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero 818*9880d681SAndroid Build Coastguard Worker; AVX1-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 819*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 820*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 821*9880d681SAndroid Build Coastguard Worker; 822*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_16i8_to_16i16: 823*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 824*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovzxbw {{.*#+}} 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,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero 825*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 826*9880d681SAndroid Build Coastguard Worker; 827*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_16i8_to_16i16: 828*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 829*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovzxbw {{.*#+}} 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,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero 830*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 831*9880d681SAndroid Build Coastguard Workerentry: 832*9880d681SAndroid Build Coastguard Worker %X = load <16 x i8>, <16 x i8>* %ptr 833*9880d681SAndroid Build Coastguard Worker %Y = zext <16 x i8> %X to <16 x i16> 834*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %Y 835*9880d681SAndroid Build Coastguard Worker} 836*9880d681SAndroid Build Coastguard Worker 837*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @load_zext_2i16_to_2i64(<2 x i16> *%ptr) { 838*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_2i16_to_2i64: 839*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 840*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 841*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm1, %xmm1 842*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 843*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 844*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 845*9880d681SAndroid Build Coastguard Worker; 846*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_2i16_to_2i64: 847*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 848*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 849*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm1, %xmm1 850*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 851*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 852*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 853*9880d681SAndroid Build Coastguard Worker; 854*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_2i16_to_2i64: 855*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 856*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwq {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero 857*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 858*9880d681SAndroid Build Coastguard Worker; 859*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_zext_2i16_to_2i64: 860*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 861*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovzxwq {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero 862*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 863*9880d681SAndroid Build Coastguard Workerentry: 864*9880d681SAndroid Build Coastguard Worker %X = load <2 x i16>, <2 x i16>* %ptr 865*9880d681SAndroid Build Coastguard Worker %Y = zext <2 x i16> %X to <2 x i64> 866*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Y 867*9880d681SAndroid Build Coastguard Worker} 868*9880d681SAndroid Build Coastguard Worker 869*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @load_zext_4i16_to_4i32(<4 x i16> *%ptr) { 870*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_4i16_to_4i32: 871*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 872*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 873*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm1, %xmm1 874*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 875*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 876*9880d681SAndroid Build Coastguard Worker; 877*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_4i16_to_4i32: 878*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 879*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 880*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm1, %xmm1 881*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 882*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 883*9880d681SAndroid Build Coastguard Worker; 884*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_4i16_to_4i32: 885*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 886*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwd {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero 887*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 888*9880d681SAndroid Build Coastguard Worker; 889*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_zext_4i16_to_4i32: 890*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 891*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovzxwd {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero 892*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 893*9880d681SAndroid Build Coastguard Workerentry: 894*9880d681SAndroid Build Coastguard Worker %X = load <4 x i16>, <4 x i16>* %ptr 895*9880d681SAndroid Build Coastguard Worker %Y = zext <4 x i16> %X to <4 x i32> 896*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %Y 897*9880d681SAndroid Build Coastguard Worker} 898*9880d681SAndroid Build Coastguard Worker 899*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @load_zext_4i16_to_4i64(<4 x i16> *%ptr) { 900*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_4i16_to_4i64: 901*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 902*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq {{.*#+}} xmm1 = mem[0],zero 903*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 904*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 905*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 906*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 907*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3] 908*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 909*9880d681SAndroid Build Coastguard Worker; 910*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_4i16_to_4i64: 911*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 912*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq {{.*#+}} xmm1 = mem[0],zero 913*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 914*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 915*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 916*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 917*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3] 918*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 919*9880d681SAndroid Build Coastguard Worker; 920*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_4i16_to_4i64: 921*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 922*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwq {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero 923*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwq {{.*#+}} xmm1 = mem[0],zero,zero,zero,mem[1],zero,zero,zero 924*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 925*9880d681SAndroid Build Coastguard Worker; 926*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_4i16_to_4i64: 927*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 928*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwq {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero 929*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwq {{.*#+}} xmm1 = mem[0],zero,zero,zero,mem[1],zero,zero,zero 930*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 931*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 932*9880d681SAndroid Build Coastguard Worker; 933*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_4i16_to_4i64: 934*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 935*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovzxwq {{.*#+}} ymm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero 936*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 937*9880d681SAndroid Build Coastguard Worker; 938*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_4i16_to_4i64: 939*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 940*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovzxwq {{.*#+}} ymm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero 941*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 942*9880d681SAndroid Build Coastguard Workerentry: 943*9880d681SAndroid Build Coastguard Worker %X = load <4 x i16>, <4 x i16>* %ptr 944*9880d681SAndroid Build Coastguard Worker %Y = zext <4 x i16> %X to <4 x i64> 945*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Y 946*9880d681SAndroid Build Coastguard Worker} 947*9880d681SAndroid Build Coastguard Worker 948*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @load_zext_8i16_to_8i32(<8 x i16> *%ptr) { 949*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_8i16_to_8i32: 950*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 951*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa (%rdi), %xmm1 952*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 953*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 954*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 955*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 956*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 957*9880d681SAndroid Build Coastguard Worker; 958*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_8i16_to_8i32: 959*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 960*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa (%rdi), %xmm1 961*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 962*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 963*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 964*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 965*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 966*9880d681SAndroid Build Coastguard Worker; 967*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_8i16_to_8i32: 968*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 969*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwd {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero 970*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwd {{.*#+}} xmm1 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero 971*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 972*9880d681SAndroid Build Coastguard Worker; 973*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_8i16_to_8i32: 974*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 975*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwd {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero 976*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwd {{.*#+}} xmm1 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero 977*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 978*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 979*9880d681SAndroid Build Coastguard Worker; 980*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_8i16_to_8i32: 981*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 982*9880d681SAndroid Build Coastguard Worker; AVX2-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 983*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 984*9880d681SAndroid Build Coastguard Worker; 985*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_8i16_to_8i32: 986*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 987*9880d681SAndroid Build Coastguard Worker; AVX512-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 988*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 989*9880d681SAndroid Build Coastguard Workerentry: 990*9880d681SAndroid Build Coastguard Worker %X = load <8 x i16>, <8 x i16>* %ptr 991*9880d681SAndroid Build Coastguard Worker %Y = zext <8 x i16> %X to <8 x i32> 992*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Y 993*9880d681SAndroid Build Coastguard Worker} 994*9880d681SAndroid Build Coastguard Worker 995*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @load_zext_2i32_to_2i64(<2 x i32> *%ptr) { 996*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_2i32_to_2i64: 997*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 998*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 999*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm1, %xmm1 1000*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 1001*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1002*9880d681SAndroid Build Coastguard Worker; 1003*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_2i32_to_2i64: 1004*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1005*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 1006*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm1, %xmm1 1007*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 1008*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1009*9880d681SAndroid Build Coastguard Worker; 1010*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_2i32_to_2i64: 1011*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1012*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = mem[0],zero,mem[1],zero 1013*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1014*9880d681SAndroid Build Coastguard Worker; 1015*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_zext_2i32_to_2i64: 1016*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 1017*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovzxdq {{.*#+}} xmm0 = mem[0],zero,mem[1],zero 1018*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 1019*9880d681SAndroid Build Coastguard Workerentry: 1020*9880d681SAndroid Build Coastguard Worker %X = load <2 x i32>, <2 x i32>* %ptr 1021*9880d681SAndroid Build Coastguard Worker %Y = zext <2 x i32> %X to <2 x i64> 1022*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Y 1023*9880d681SAndroid Build Coastguard Worker} 1024*9880d681SAndroid Build Coastguard Worker 1025*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @load_zext_4i32_to_4i64(<4 x i32> *%ptr) { 1026*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_4i32_to_4i64: 1027*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1028*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa (%rdi), %xmm1 1029*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 1030*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 1031*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 1032*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3] 1033*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1034*9880d681SAndroid Build Coastguard Worker; 1035*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_4i32_to_4i64: 1036*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1037*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa (%rdi), %xmm1 1038*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 1039*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 1040*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 1041*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3] 1042*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1043*9880d681SAndroid Build Coastguard Worker; 1044*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_4i32_to_4i64: 1045*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1046*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = mem[0],zero,mem[1],zero 1047*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxdq {{.*#+}} xmm1 = mem[0],zero,mem[1],zero 1048*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1049*9880d681SAndroid Build Coastguard Worker; 1050*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_4i32_to_4i64: 1051*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1052*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxdq {{.*#+}} xmm0 = mem[0],zero,mem[1],zero 1053*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxdq {{.*#+}} xmm1 = mem[0],zero,mem[1],zero 1054*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1055*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1056*9880d681SAndroid Build Coastguard Worker; 1057*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_4i32_to_4i64: 1058*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1059*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovzxdq {{.*#+}} ymm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero 1060*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1061*9880d681SAndroid Build Coastguard Worker; 1062*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_4i32_to_4i64: 1063*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1064*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovzxdq {{.*#+}} ymm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero 1065*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1066*9880d681SAndroid Build Coastguard Workerentry: 1067*9880d681SAndroid Build Coastguard Worker %X = load <4 x i32>, <4 x i32>* %ptr 1068*9880d681SAndroid Build Coastguard Worker %Y = zext <4 x i32> %X to <4 x i64> 1069*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Y 1070*9880d681SAndroid Build Coastguard Worker} 1071*9880d681SAndroid Build Coastguard Worker 1072*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @zext_8i8_to_8i32(<8 x i8> %z) { 1073*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_8i8_to_8i32: 1074*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1075*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 1076*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pand {{.*}}(%rip), %xmm1 1077*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 1078*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 1079*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1080*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1081*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1082*9880d681SAndroid Build Coastguard Worker; 1083*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_8i8_to_8i32: 1084*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1085*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 1086*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pand {{.*}}(%rip), %xmm1 1087*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 1088*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 1089*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1090*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1091*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1092*9880d681SAndroid Build Coastguard Worker; 1093*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_8i8_to_8i32: 1094*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1095*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm0, %xmm1 1096*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pand {{.*}}(%rip), %xmm1 1097*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm2, %xmm2 1098*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero 1099*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1100*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1101*9880d681SAndroid Build Coastguard Worker; 1102*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: zext_8i8_to_8i32: 1103*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1104*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0 1105*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpxor %xmm1, %xmm1, %xmm1 1106*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 1107*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 1108*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1109*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1110*9880d681SAndroid Build Coastguard Worker; 1111*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: zext_8i8_to_8i32: 1112*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1113*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0 1114*9880d681SAndroid Build Coastguard Worker; AVX2-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 1115*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1116*9880d681SAndroid Build Coastguard Worker; 1117*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: zext_8i8_to_8i32: 1118*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1119*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0 1120*9880d681SAndroid Build Coastguard Worker; AVX512-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 1121*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1122*9880d681SAndroid Build Coastguard Workerentry: 1123*9880d681SAndroid Build Coastguard Worker %t = zext <8 x i8> %z to <8 x i32> 1124*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %t 1125*9880d681SAndroid Build Coastguard Worker} 1126*9880d681SAndroid Build Coastguard Worker 1127*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @shuf_zext_8i16_to_8i32(<8 x i16> %A) nounwind uwtable readnone ssp { 1128*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_8i16_to_8i32: 1129*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1130*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 1131*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 1132*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1133*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1134*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1135*9880d681SAndroid Build Coastguard Worker; 1136*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_8i16_to_8i32: 1137*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1138*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 1139*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 1140*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1141*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1142*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1143*9880d681SAndroid Build Coastguard Worker; 1144*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_8i16_to_8i32: 1145*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1146*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm0, %xmm1 1147*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm2, %xmm2 1148*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero 1149*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1150*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1151*9880d681SAndroid Build Coastguard Worker; 1152*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_8i16_to_8i32: 1153*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1154*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpxor %xmm1, %xmm1, %xmm1 1155*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 1156*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 1157*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1158*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1159*9880d681SAndroid Build Coastguard Worker; 1160*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_8i16_to_8i32: 1161*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1162*9880d681SAndroid Build Coastguard Worker; AVX2-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 1163*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1164*9880d681SAndroid Build Coastguard Worker; 1165*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_8i16_to_8i32: 1166*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1167*9880d681SAndroid Build Coastguard Worker; AVX512-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 1168*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1169*9880d681SAndroid Build Coastguard Workerentry: 1170*9880d681SAndroid Build Coastguard Worker %B = shufflevector <8 x i16> %A, <8 x i16> zeroinitializer, <16 x i32> <i32 0, i32 8, i32 1, i32 8, i32 2, i32 8, i32 3, i32 8, i32 4, i32 8, i32 5, i32 8, i32 6, i32 8, i32 7, i32 8> 1171*9880d681SAndroid Build Coastguard Worker %Z = bitcast <16 x i16> %B to <8 x i32> 1172*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Z 1173*9880d681SAndroid Build Coastguard Worker} 1174*9880d681SAndroid Build Coastguard Worker 1175*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @shuf_zext_4i32_to_4i64(<4 x i32> %A) nounwind uwtable readnone ssp { 1176*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_4i32_to_4i64: 1177*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1178*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 1179*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 1180*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 1181*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3] 1182*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1183*9880d681SAndroid Build Coastguard Worker; 1184*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_4i32_to_4i64: 1185*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1186*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 1187*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 1188*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 1189*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3] 1190*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1191*9880d681SAndroid Build Coastguard Worker; 1192*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_4i32_to_4i64: 1193*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1194*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm0, %xmm1 1195*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm2, %xmm2 1196*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero 1197*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3] 1198*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1199*9880d681SAndroid Build Coastguard Worker; 1200*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_4i32_to_4i64: 1201*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1202*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertps {{.*#+}} xmm1 = xmm0[0],zero,xmm0[1],zero 1203*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vxorpd %xmm2, %xmm2, %xmm2 1204*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vblendpd {{.*#+}} xmm0 = xmm2[0],xmm0[1] 1205*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[2,0,3,0] 1206*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1207*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1208*9880d681SAndroid Build Coastguard Worker; 1209*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_4i32_to_4i64: 1210*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1211*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 1212*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1213*9880d681SAndroid Build Coastguard Worker; 1214*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_4i32_to_4i64: 1215*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1216*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 1217*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1218*9880d681SAndroid Build Coastguard Workerentry: 1219*9880d681SAndroid Build Coastguard Worker %B = shufflevector <4 x i32> %A, <4 x i32> zeroinitializer, <8 x i32> <i32 0, i32 4, i32 1, i32 4, i32 2, i32 4, i32 3, i32 4> 1220*9880d681SAndroid Build Coastguard Worker %Z = bitcast <8 x i32> %B to <4 x i64> 1221*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Z 1222*9880d681SAndroid Build Coastguard Worker} 1223*9880d681SAndroid Build Coastguard Worker 1224*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @shuf_zext_8i8_to_8i32(<8 x i8> %A) { 1225*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_8i8_to_8i32: 1226*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1227*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 1228*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pand {{.*}}(%rip), %xmm1 1229*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: packuswb %xmm1, %xmm1 1230*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 1231*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1232*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 1233*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1234*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1235*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1236*9880d681SAndroid Build Coastguard Worker; 1237*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_8i8_to_8i32: 1238*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1239*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 1240*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm1 = xmm1[0],zero,xmm1[2],zero,xmm1[4],zero,xmm1[6],zero,xmm1[8],zero,xmm1[10],zero,xmm1[12],zero,xmm1[14],zero 1241*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 1242*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 1243*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1244*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1245*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1246*9880d681SAndroid Build Coastguard Worker; 1247*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_8i8_to_8i32: 1248*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1249*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u] 1250*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbd {{.*#+}} xmm2 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 1251*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 1252*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 1253*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm0 1254*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1255*9880d681SAndroid Build Coastguard Worker; 1256*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_8i8_to_8i32: 1257*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1258*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u] 1259*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 1260*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 1261*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 1262*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1263*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1264*9880d681SAndroid Build Coastguard Worker; 1265*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_8i8_to_8i32: 1266*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1267*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u] 1268*9880d681SAndroid Build Coastguard Worker; AVX2-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 1269*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1270*9880d681SAndroid Build Coastguard Worker; 1271*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_8i8_to_8i32: 1272*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1273*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u] 1274*9880d681SAndroid Build Coastguard Worker; AVX512-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 1275*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1276*9880d681SAndroid Build Coastguard Workerentry: 1277*9880d681SAndroid Build Coastguard Worker %B = shufflevector <8 x i8> %A, <8 x i8> zeroinitializer, <32 x i32> <i32 0, i32 8, i32 8, i32 8, i32 1, i32 8, i32 8, i32 8, i32 2, i32 8, i32 8, i32 8, i32 3, i32 8, i32 8, i32 8, i32 4, i32 8, i32 8, i32 8, i32 5, i32 8, i32 8, i32 8, i32 6, i32 8, i32 8, i32 8, i32 7, i32 8, i32 8, i32 8> 1278*9880d681SAndroid Build Coastguard Worker %Z = bitcast <32 x i8> %B to <8 x i32> 1279*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Z 1280*9880d681SAndroid Build Coastguard Worker} 1281*9880d681SAndroid Build Coastguard Worker 1282*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @shuf_zext_16i8_to_2i64_offset6(<16 x i8> %A) nounwind uwtable readnone ssp { 1283*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_16i8_to_2i64_offset6: 1284*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1285*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm1, %xmm1 1286*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 1287*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 1288*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1289*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1290*9880d681SAndroid Build Coastguard Worker; 1291*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_16i8_to_2i64_offset6: 1292*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1293*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[6],zero,zero,zero,zero,zero,zero,zero,xmm0[7],zero,zero,zero,zero,zero,zero,zero 1294*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1295*9880d681SAndroid Build Coastguard Worker; 1296*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_16i8_to_2i64_offset6: 1297*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1298*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrlq $48, %xmm0 1299*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero 1300*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1301*9880d681SAndroid Build Coastguard Worker; 1302*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuf_zext_16i8_to_2i64_offset6: 1303*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 1304*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsrlq $48, %xmm0, %xmm0 1305*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero 1306*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 1307*9880d681SAndroid Build Coastguard Workerentry: 1308*9880d681SAndroid Build Coastguard Worker %B = shufflevector <16 x i8> %A, <16 x i8> zeroinitializer, <16 x i32> <i32 6, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 7, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16> 1309*9880d681SAndroid Build Coastguard Worker %Z = bitcast <16 x i8> %B to <2 x i64> 1310*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Z 1311*9880d681SAndroid Build Coastguard Worker} 1312*9880d681SAndroid Build Coastguard Worker 1313*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @shuf_zext_16i8_to_4i64_offset11(<16 x i8> %A) nounwind uwtable readnone ssp { 1314*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_16i8_to_4i64_offset11: 1315*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1316*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 1317*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrldq {{.*#+}} xmm1 = xmm1[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero 1318*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 1319*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15] 1320*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 1321*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1322*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1323*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1324*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 1325*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1326*9880d681SAndroid Build Coastguard Worker; 1327*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_16i8_to_4i64_offset11: 1328*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1329*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 1330*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[11],zero,zero,zero,zero,zero,zero,zero,xmm0[12],zero,zero,zero,zero,zero,zero,zero 1331*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm1 = xmm1[13],zero,zero,zero,zero,zero,zero,zero,xmm1[14],zero,zero,zero,zero,zero,zero,zero 1332*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1333*9880d681SAndroid Build Coastguard Worker; 1334*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_16i8_to_4i64_offset11: 1335*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1336*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm0, %xmm1 1337*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrldq {{.*#+}} xmm1 = xmm1[11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 1338*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbq {{.*#+}} xmm2 = xmm1[0],zero,zero,zero,zero,zero,zero,zero,xmm1[1],zero,zero,zero,zero,zero,zero,zero 1339*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrldq {{.*#+}} xmm0 = xmm0[13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 1340*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxbq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero 1341*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm0 1342*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1343*9880d681SAndroid Build Coastguard Worker; 1344*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_16i8_to_4i64_offset11: 1345*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1346*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrldq {{.*#+}} xmm1 = xmm0[11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 1347*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,zero,zero,zero,zero,xmm1[1],zero,zero,zero,zero,zero,zero,zero 1348*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 1349*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero 1350*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1351*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1352*9880d681SAndroid Build Coastguard Worker; 1353*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_16i8_to_4i64_offset11: 1354*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1355*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 1356*9880d681SAndroid Build Coastguard Worker; AVX2-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 1357*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1358*9880d681SAndroid Build Coastguard Worker; 1359*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_16i8_to_4i64_offset11: 1360*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1361*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 1362*9880d681SAndroid Build Coastguard Worker; AVX512-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 1363*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1364*9880d681SAndroid Build Coastguard Workerentry: 1365*9880d681SAndroid Build Coastguard Worker %B = shufflevector <16 x i8> %A, <16 x i8> zeroinitializer, <32 x i32> <i32 11, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 12, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 13, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 14, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16> 1366*9880d681SAndroid Build Coastguard Worker %Z = bitcast <32 x i8> %B to <4 x i64> 1367*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Z 1368*9880d681SAndroid Build Coastguard Worker} 1369*9880d681SAndroid Build Coastguard Worker 1370*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @shuf_zext_8i16_to_2i64_offset6(<8 x i16> %A) nounwind uwtable readnone ssp { 1371*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_8i16_to_2i64_offset6: 1372*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1373*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrldq {{.*#+}} xmm0 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero 1374*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm1, %xmm1 1375*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1376*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1377*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1378*9880d681SAndroid Build Coastguard Worker; 1379*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_8i16_to_2i64_offset6: 1380*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1381*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[6,7],zero,zero,zero,zero,zero,zero,xmm0[8,9],zero,zero,zero,zero,zero,zero 1382*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1383*9880d681SAndroid Build Coastguard Worker; 1384*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_8i16_to_2i64_offset6: 1385*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1386*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero 1387*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero 1388*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1389*9880d681SAndroid Build Coastguard Worker; 1390*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuf_zext_8i16_to_2i64_offset6: 1391*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 1392*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero 1393*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero 1394*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 1395*9880d681SAndroid Build Coastguard Workerentry: 1396*9880d681SAndroid Build Coastguard Worker %B = shufflevector <8 x i16> %A, <8 x i16> zeroinitializer, <8 x i32> <i32 3, i32 8, i32 8, i32 8, i32 4, i32 8, i32 8, i32 8> 1397*9880d681SAndroid Build Coastguard Worker %Z = bitcast <8 x i16> %B to <2 x i64> 1398*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Z 1399*9880d681SAndroid Build Coastguard Worker} 1400*9880d681SAndroid Build Coastguard Worker 1401*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @shuf_zext_8i16_to_4i64_offset2(<8 x i16> %A) nounwind uwtable readnone ssp { 1402*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_8i16_to_4i64_offset2: 1403*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1404*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 1405*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 1406*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1407*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1408*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1409*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 1410*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1411*9880d681SAndroid Build Coastguard Worker; 1412*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_8i16_to_4i64_offset2: 1413*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1414*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 1415*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 1416*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1417*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1418*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1419*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 1420*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1421*9880d681SAndroid Build Coastguard Worker; 1422*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_8i16_to_4i64_offset2: 1423*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1424*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,2,3] 1425*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwq {{.*#+}} xmm2 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero 1426*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 1427*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero 1428*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm0 1429*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1430*9880d681SAndroid Build Coastguard Worker; 1431*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_8i16_to_4i64_offset2: 1432*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1433*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3] 1434*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero 1435*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 1436*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero 1437*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1438*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1439*9880d681SAndroid Build Coastguard Worker; 1440*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_8i16_to_4i64_offset2: 1441*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1442*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,2,2,3] 1443*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovzxwq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 1444*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1445*9880d681SAndroid Build Coastguard Worker; 1446*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_8i16_to_4i64_offset2: 1447*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1448*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,2,2,3] 1449*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovzxwq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 1450*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1451*9880d681SAndroid Build Coastguard Workerentry: 1452*9880d681SAndroid Build Coastguard Worker %B = shufflevector <8 x i16> %A, <8 x i16> zeroinitializer, <16 x i32> <i32 2, i32 8, i32 8, i32 8, i32 3, i32 8, i32 8, i32 8, i32 4, i32 8, i32 8, i32 8, i32 5, i32 8, i32 8, i32 8> 1453*9880d681SAndroid Build Coastguard Worker %Z = bitcast <16 x i16> %B to <4 x i64> 1454*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Z 1455*9880d681SAndroid Build Coastguard Worker} 1456*9880d681SAndroid Build Coastguard Worker 1457*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @shuf_zext_8i16_to_4i32_offset1(<8 x i16> %A) nounwind uwtable readnone ssp { 1458*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuf_zext_8i16_to_4i32_offset1: 1459*9880d681SAndroid Build Coastguard Worker; SSE: # BB#0: # %entry 1460*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero 1461*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: pxor %xmm1, %xmm1 1462*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1463*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retq 1464*9880d681SAndroid Build Coastguard Worker; 1465*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuf_zext_8i16_to_4i32_offset1: 1466*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 1467*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero 1468*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpxor %xmm1, %xmm1, %xmm1 1469*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1470*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 1471*9880d681SAndroid Build Coastguard Workerentry: 1472*9880d681SAndroid Build Coastguard Worker %B = shufflevector <8 x i16> %A, <8 x i16> zeroinitializer, <8 x i32> <i32 1, i32 8, i32 2, i32 8, i32 3, i32 8, i32 4, i32 8> 1473*9880d681SAndroid Build Coastguard Worker %Z = bitcast <8 x i16> %B to <4 x i32> 1474*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %Z 1475*9880d681SAndroid Build Coastguard Worker} 1476*9880d681SAndroid Build Coastguard Worker 1477*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @shuf_zext_8i16_to_8i32_offset3(<8 x i16> %A) nounwind uwtable readnone ssp { 1478*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_8i16_to_8i32_offset3: 1479*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1480*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 1481*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero 1482*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 1483*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1484*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrldq {{.*#+}} xmm1 = xmm1[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 1485*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1486*9880d681SAndroid Build Coastguard Worker; 1487*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_8i16_to_8i32_offset3: 1488*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1489*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 1490*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero 1491*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 1492*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1493*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrldq {{.*#+}} xmm1 = xmm1[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 1494*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1495*9880d681SAndroid Build Coastguard Worker; 1496*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_8i16_to_8i32_offset3: 1497*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1498*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm0, %xmm1 1499*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13] 1500*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm2, %xmm2 1501*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7] 1502*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrldq {{.*#+}} xmm1 = xmm1[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 1503*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1504*9880d681SAndroid Build Coastguard Worker; 1505*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_8i16_to_8i32_offset3: 1506*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1507*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13] 1508*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpxor %xmm2, %xmm2, %xmm2 1509*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1510*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 1511*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1512*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1513*9880d681SAndroid Build Coastguard Worker; 1514*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_8i16_to_8i32_offset3: 1515*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1516*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero 1517*9880d681SAndroid Build Coastguard Worker; AVX2-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 1518*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1519*9880d681SAndroid Build Coastguard Worker; 1520*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_8i16_to_8i32_offset3: 1521*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1522*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero 1523*9880d681SAndroid Build Coastguard Worker; AVX512-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 1524*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1525*9880d681SAndroid Build Coastguard Workerentry: 1526*9880d681SAndroid Build Coastguard Worker %B = shufflevector <8 x i16> %A, <8 x i16> zeroinitializer, <16 x i32> <i32 3, i32 8, i32 4, i32 8, i32 5, i32 8, i32 6, i32 8, i32 7, i32 8, i32 undef, i32 8, i32 undef, i32 8, i32 undef, i32 8> 1527*9880d681SAndroid Build Coastguard Worker %Z = bitcast <16 x i16> %B to <8 x i32> 1528*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Z 1529*9880d681SAndroid Build Coastguard Worker} 1530*9880d681SAndroid Build Coastguard Worker 1531*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @shuf_zext_16i16_to_8i32_offset8(<16 x i16> %A) nounwind uwtable readnone ssp { 1532*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_16i16_to_8i32_offset8: 1533*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1534*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pxor %xmm2, %xmm2 1535*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 1536*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1537*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1538*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1539*9880d681SAndroid Build Coastguard Worker; 1540*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_16i16_to_8i32_offset8: 1541*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1542*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pxor %xmm2, %xmm2 1543*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 1544*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1545*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 1546*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1547*9880d681SAndroid Build Coastguard Worker; 1548*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_16i16_to_8i32_offset8: 1549*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1550*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,2,3,3] 1551*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm2, %xmm2 1552*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm0[0],xmm2[1,2,3],xmm0[4],xmm2[5,6,7] 1553*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero 1554*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm1 1555*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1556*9880d681SAndroid Build Coastguard Worker; 1557*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_16i16_to_8i32_offset8: 1558*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1559*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1560*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,2,3,3] 1561*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpxor %xmm2, %xmm2, %xmm2 1562*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1,2,3],xmm1[4],xmm2[5,6,7] 1563*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 1564*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1565*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1566*9880d681SAndroid Build Coastguard Worker; 1567*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_16i16_to_8i32_offset8: 1568*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1569*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm0 1570*9880d681SAndroid Build Coastguard Worker; AVX2-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 1571*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1572*9880d681SAndroid Build Coastguard Worker; 1573*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_16i16_to_8i32_offset8: 1574*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1575*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm0 1576*9880d681SAndroid Build Coastguard Worker; AVX512-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 1577*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1578*9880d681SAndroid Build Coastguard Workerentry: 1579*9880d681SAndroid Build Coastguard Worker %B = shufflevector <16 x i16> %A, <16 x i16> zeroinitializer, <16 x i32> <i32 8, i32 16, i32 9, i32 16, i32 10, i32 16, i32 11, i32 16, i32 12, i32 16, i32 undef, i32 16, i32 14, i32 16, i32 undef, i32 16> 1580*9880d681SAndroid Build Coastguard Worker %Z = bitcast <16 x i16> %B to <8 x i32> 1581*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Z 1582*9880d681SAndroid Build Coastguard Worker} 1583*9880d681SAndroid Build Coastguard Worker 1584*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @shuf_zext_4i32_to_2i64_offset2(<4 x i32> %A) nounwind uwtable readnone ssp { 1585*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuf_zext_4i32_to_2i64_offset2: 1586*9880d681SAndroid Build Coastguard Worker; SSE: # BB#0: # %entry 1587*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: pxor %xmm1, %xmm1 1588*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1589*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retq 1590*9880d681SAndroid Build Coastguard Worker; 1591*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuf_zext_4i32_to_2i64_offset2: 1592*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 1593*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpxor %xmm1, %xmm1, %xmm1 1594*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpunpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1595*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 1596*9880d681SAndroid Build Coastguard Workerentry: 1597*9880d681SAndroid Build Coastguard Worker %B = shufflevector <4 x i32> %A, <4 x i32> zeroinitializer, <4 x i32> <i32 2, i32 4, i32 3, i32 4> 1598*9880d681SAndroid Build Coastguard Worker %Z = bitcast <4 x i32> %B to <2 x i64> 1599*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Z 1600*9880d681SAndroid Build Coastguard Worker} 1601*9880d681SAndroid Build Coastguard Worker 1602*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @shuf_zext_4i32_to_4i64_offset1(<4 x i32> %A) nounwind uwtable readnone ssp { 1603*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_4i32_to_4i64_offset1: 1604*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1605*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 1606*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa {{.*#+}} xmm0 = [0,0,4294967295,0] 1607*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pand %xmm1, %xmm0 1608*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrldq {{.*#+}} xmm1 = xmm1[12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 1609*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1610*9880d681SAndroid Build Coastguard Worker; 1611*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_4i32_to_4i64_offset1: 1612*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1613*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 1614*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [0,0,4294967295,0] 1615*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pand %xmm1, %xmm0 1616*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrldq {{.*#+}} xmm1 = xmm1[12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 1617*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1618*9880d681SAndroid Build Coastguard Worker; 1619*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_4i32_to_4i64_offset1: 1620*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1621*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm0, %xmm1 1622*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm0, %xmm0 1623*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5],xmm0[6,7] 1624*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrldq {{.*#+}} xmm1 = xmm1[12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 1625*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1626*9880d681SAndroid Build Coastguard Worker; 1627*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_4i32_to_4i64_offset1: 1628*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1629*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertps {{.*#+}} xmm1 = xmm0[3],zero,zero,zero 1630*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vxorps %xmm2, %xmm2, %xmm2 1631*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vblendps {{.*#+}} xmm0 = xmm2[0,1],xmm0[2],xmm2[3] 1632*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1633*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1634*9880d681SAndroid Build Coastguard Worker; 1635*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_4i32_to_4i64_offset1: 1636*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1637*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,2,3,3] 1638*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 1639*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1640*9880d681SAndroid Build Coastguard Worker; 1641*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_4i32_to_4i64_offset1: 1642*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1643*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,2,3,3] 1644*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 1645*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1646*9880d681SAndroid Build Coastguard Workerentry: 1647*9880d681SAndroid Build Coastguard Worker %B = shufflevector <4 x i32> %A, <4 x i32> zeroinitializer, <8 x i32> <i32 undef, i32 4, i32 2, i32 4, i32 3, i32 4, i32 undef, i32 4> 1648*9880d681SAndroid Build Coastguard Worker %Z = bitcast <8 x i32> %B to <4 x i64> 1649*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Z 1650*9880d681SAndroid Build Coastguard Worker} 1651