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 Worker; Just one 32-bit run to make sure we do reasonable things there. 10*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=X32-SSE41 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sext_16i8_to_8i16(<16 x i8> %A) nounwind uwtable readnone ssp { 13*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_16i8_to_8i16: 14*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 15*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 16*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psraw $8, %xmm0 17*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 18*9880d681SAndroid Build Coastguard Worker; 19*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_16i8_to_8i16: 20*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 21*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 22*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psraw $8, %xmm0 23*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 24*9880d681SAndroid Build Coastguard Worker; 25*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_16i8_to_8i16: 26*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 27*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbw %xmm0, %xmm0 28*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 29*9880d681SAndroid Build Coastguard Worker; 30*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sext_16i8_to_8i16: 31*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 32*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovsxbw %xmm0, %xmm0 33*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 34*9880d681SAndroid Build Coastguard Worker; 35*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_16i8_to_8i16: 36*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 37*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbw %xmm0, %xmm0 38*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 39*9880d681SAndroid Build Coastguard Workerentry: 40*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> 41*9880d681SAndroid Build Coastguard Worker %C = sext <8 x i8> %B to <8 x i16> 42*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %C 43*9880d681SAndroid Build Coastguard Worker} 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @sext_16i8_to_16i16(<16 x i8> %A) nounwind uwtable readnone ssp { 46*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_16i8_to_16i16: 47*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 48*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 49*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psraw $8, %xmm2 50*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15] 51*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psraw $8, %xmm1 52*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm2, %xmm0 53*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 54*9880d681SAndroid Build Coastguard Worker; 55*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_16i8_to_16i16: 56*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 57*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 58*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psraw $8, %xmm2 59*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15] 60*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psraw $8, %xmm1 61*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm2, %xmm0 62*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 63*9880d681SAndroid Build Coastguard Worker; 64*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_16i8_to_16i16: 65*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 66*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbw %xmm0, %xmm2 67*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 68*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbw %xmm0, %xmm1 69*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm0 70*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 71*9880d681SAndroid Build Coastguard Worker; 72*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_16i8_to_16i16: 73*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 74*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbw %xmm0, %xmm1 75*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 76*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbw %xmm0, %xmm0 77*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 78*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 79*9880d681SAndroid Build Coastguard Worker; 80*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_16i8_to_16i16: 81*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 82*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxbw %xmm0, %ymm0 83*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 84*9880d681SAndroid Build Coastguard Worker; 85*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_16i8_to_16i16: 86*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 87*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxbw %xmm0, %ymm0 88*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 89*9880d681SAndroid Build Coastguard Worker; 90*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_16i8_to_16i16: 91*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 92*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbw %xmm0, %xmm2 93*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 94*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbw %xmm0, %xmm1 95*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movdqa %xmm2, %xmm0 96*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 97*9880d681SAndroid Build Coastguard Workerentry: 98*9880d681SAndroid Build Coastguard Worker %B = sext <16 x i8> %A to <16 x i16> 99*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %B 100*9880d681SAndroid Build Coastguard Worker} 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sext_16i8_to_4i32(<16 x i8> %A) nounwind uwtable readnone ssp { 103*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_16i8_to_4i32: 104*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 105*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 106*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 107*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm0 108*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 109*9880d681SAndroid Build Coastguard Worker; 110*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_16i8_to_4i32: 111*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 112*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 113*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 114*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm0 115*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 116*9880d681SAndroid Build Coastguard Worker; 117*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_16i8_to_4i32: 118*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 119*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbd %xmm0, %xmm0 120*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 121*9880d681SAndroid Build Coastguard Worker; 122*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sext_16i8_to_4i32: 123*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 124*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovsxbd %xmm0, %xmm0 125*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 126*9880d681SAndroid Build Coastguard Worker; 127*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_16i8_to_4i32: 128*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 129*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbd %xmm0, %xmm0 130*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 131*9880d681SAndroid Build Coastguard Workerentry: 132*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> 133*9880d681SAndroid Build Coastguard Worker %C = sext <4 x i8> %B to <4 x i32> 134*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %C 135*9880d681SAndroid Build Coastguard Worker} 136*9880d681SAndroid Build Coastguard Worker 137*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @sext_16i8_to_8i32(<16 x i8> %A) nounwind uwtable readnone ssp { 138*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_16i8_to_8i32: 139*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 140*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 141*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3] 142*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm2 143*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 144*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 145*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 146*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm1 147*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm2, %xmm0 148*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 149*9880d681SAndroid Build Coastguard Worker; 150*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_16i8_to_8i32: 151*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 152*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 153*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] 154*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 155*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm0 156*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm1 = xmm1[u,u,u,4,u,u,u,5,u,u,u,6,u,u,u,7] 157*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm1 158*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 159*9880d681SAndroid Build Coastguard Worker; 160*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_16i8_to_8i32: 161*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 162*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbd %xmm0, %xmm2 163*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 164*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbd %xmm0, %xmm1 165*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm0 166*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 167*9880d681SAndroid Build Coastguard Worker; 168*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_16i8_to_8i32: 169*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 170*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbd %xmm0, %xmm1 171*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 172*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbd %xmm0, %xmm0 173*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 174*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 175*9880d681SAndroid Build Coastguard Worker; 176*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_16i8_to_8i32: 177*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 178*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxbd %xmm0, %ymm0 179*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 180*9880d681SAndroid Build Coastguard Worker; 181*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_16i8_to_8i32: 182*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 183*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxbd %xmm0, %ymm0 184*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 185*9880d681SAndroid Build Coastguard Worker; 186*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_16i8_to_8i32: 187*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 188*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbd %xmm0, %xmm2 189*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 190*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbd %xmm0, %xmm1 191*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movdqa %xmm2, %xmm0 192*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 193*9880d681SAndroid Build Coastguard Workerentry: 194*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> 195*9880d681SAndroid Build Coastguard Worker %C = sext <8 x i8> %B to <8 x i32> 196*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %C 197*9880d681SAndroid Build Coastguard Worker} 198*9880d681SAndroid Build Coastguard Worker 199*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sext_16i8_to_2i64(<16 x i8> %A) nounwind uwtable readnone ssp { 200*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_16i8_to_2i64: 201*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 202*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 203*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 204*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 205*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm1 206*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm0 207*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 208*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 209*9880d681SAndroid Build Coastguard Worker; 210*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_16i8_to_2i64: 211*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 212*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 213*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 214*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 215*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm1 216*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm0 217*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 218*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 219*9880d681SAndroid Build Coastguard Worker; 220*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_16i8_to_2i64: 221*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 222*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbq %xmm0, %xmm0 223*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 224*9880d681SAndroid Build Coastguard Worker; 225*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sext_16i8_to_2i64: 226*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 227*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovsxbq %xmm0, %xmm0 228*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 229*9880d681SAndroid Build Coastguard Worker; 230*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_16i8_to_2i64: 231*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 232*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbq %xmm0, %xmm0 233*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 234*9880d681SAndroid Build Coastguard Workerentry: 235*9880d681SAndroid Build Coastguard Worker %B = shufflevector <16 x i8> %A, <16 x i8> undef, <2 x i32> <i32 0, i32 1> 236*9880d681SAndroid Build Coastguard Worker %C = sext <2 x i8> %B to <2 x i64> 237*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %C 238*9880d681SAndroid Build Coastguard Worker} 239*9880d681SAndroid Build Coastguard Worker 240*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_16i8_to_4i64(<16 x i8> %A) nounwind uwtable readnone ssp { 241*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_16i8_to_4i64: 242*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 243*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 244*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3] 245*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm2, %xmm1 246*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm1 247*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm2 248*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] 249*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrld $16, %xmm0 250*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 251*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 252*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 253*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm0 254*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm1 255*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 256*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm2, %xmm0 257*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 258*9880d681SAndroid Build Coastguard Worker; 259*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_16i8_to_4i64: 260*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 261*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 262*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3] 263*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm2, %xmm1 264*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm1 265*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm2 266*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] 267*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrld $16, %xmm0 268*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 269*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 270*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 271*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm0 272*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm1 273*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 274*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm2, %xmm0 275*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 276*9880d681SAndroid Build Coastguard Worker; 277*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_16i8_to_4i64: 278*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 279*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbq %xmm0, %xmm2 280*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrld $16, %xmm0 281*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbq %xmm0, %xmm1 282*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm0 283*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 284*9880d681SAndroid Build Coastguard Worker; 285*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_16i8_to_4i64: 286*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 287*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbq %xmm0, %xmm1 288*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrld $16, %xmm0, %xmm0 289*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbq %xmm0, %xmm0 290*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 291*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 292*9880d681SAndroid Build Coastguard Worker; 293*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_16i8_to_4i64: 294*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 295*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxbq %xmm0, %ymm0 296*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 297*9880d681SAndroid Build Coastguard Worker; 298*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_16i8_to_4i64: 299*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 300*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxbq %xmm0, %ymm0 301*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 302*9880d681SAndroid Build Coastguard Worker; 303*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_16i8_to_4i64: 304*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 305*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbq %xmm0, %xmm2 306*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psrld $16, %xmm0 307*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbq %xmm0, %xmm1 308*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movdqa %xmm2, %xmm0 309*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 310*9880d681SAndroid Build Coastguard Workerentry: 311*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> 312*9880d681SAndroid Build Coastguard Worker %C = sext <4 x i8> %B to <4 x i64> 313*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %C 314*9880d681SAndroid Build Coastguard Worker} 315*9880d681SAndroid Build Coastguard Worker 316*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @sext_16i8_to_8i64(<16 x i8> %A) nounwind uwtable readnone ssp { 317*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_16i8_to_8i64: 318*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 319*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 320*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] 321*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 322*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm2 323*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm2 324*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm0 325*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 326*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,1,2,3] 327*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrld $16, %xmm1 328*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 329*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3] 330*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm2 331*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm2 332*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm1 333*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 334*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7] 335*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3] 336*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm2, %xmm4 337*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm4 338*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm2 339*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1] 340*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrld $16, %xmm3 341*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 342*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3] 343*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm3, %xmm4 344*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm4 345*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm3 346*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1] 347*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 348*9880d681SAndroid Build Coastguard Worker; 349*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_16i8_to_8i64: 350*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 351*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 352*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] 353*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 354*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm2 355*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm2 356*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm0 357*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 358*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,1,2,3] 359*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrld $16, %xmm1 360*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 361*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3] 362*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm2 363*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm2 364*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm1 365*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 366*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7] 367*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3] 368*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm2, %xmm4 369*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm4 370*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm2 371*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1] 372*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrld $16, %xmm3 373*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 374*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3] 375*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm3, %xmm4 376*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm4 377*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm3 378*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1] 379*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 380*9880d681SAndroid Build Coastguard Worker; 381*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_16i8_to_8i64: 382*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 383*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbq %xmm0, %xmm4 384*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm0, %xmm1 385*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrld $16, %xmm1 386*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbq %xmm1, %xmm1 387*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3] 388*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbq %xmm2, %xmm2 389*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrlq $48, %xmm0 390*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbq %xmm0, %xmm3 391*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm4, %xmm0 392*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 393*9880d681SAndroid Build Coastguard Worker; 394*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_16i8_to_8i64: 395*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 396*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbq %xmm0, %xmm1 397*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrld $16, %xmm0, %xmm2 398*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbq %xmm2, %xmm2 399*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm2 400*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3] 401*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbq %xmm1, %xmm1 402*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrlq $48, %xmm0, %xmm0 403*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbq %xmm0, %xmm0 404*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm1 405*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovaps %ymm2, %ymm0 406*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 407*9880d681SAndroid Build Coastguard Worker; 408*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_16i8_to_8i64: 409*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 410*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 411*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpslld $24, %xmm1, %xmm1 412*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrad $24, %xmm1, %xmm1 413*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxdq %xmm1, %ymm2 414*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 415*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 416*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpslld $24, %xmm0, %xmm0 417*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrad $24, %xmm0, %xmm0 418*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxdq %xmm0, %ymm1 419*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa %ymm2, %ymm0 420*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 421*9880d681SAndroid Build Coastguard Worker; 422*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_16i8_to_8i64: 423*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 424*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovzxbq {{.*#+}} zmm0 = 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,xmm0[4],zero,zero,zero,zero,zero,zero,zero,xmm0[5],zero,zero,zero,zero,zero,zero,zero,xmm0[6],zero,zero,zero,zero,zero,zero,zero,xmm0[7],zero,zero,zero,zero,zero,zero,zero 425*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpsllq $56, %zmm0, %zmm0 426*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpsraq $56, %zmm0, %zmm0 427*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 428*9880d681SAndroid Build Coastguard Worker; 429*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_16i8_to_8i64: 430*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 431*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbq %xmm0, %xmm4 432*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movdqa %xmm0, %xmm1 433*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psrld $16, %xmm1 434*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbq %xmm1, %xmm1 435*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3] 436*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbq %xmm2, %xmm2 437*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psrlq $48, %xmm0 438*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbq %xmm0, %xmm3 439*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movdqa %xmm4, %xmm0 440*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 441*9880d681SAndroid Build Coastguard Workerentry: 442*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> 443*9880d681SAndroid Build Coastguard Worker %C = sext <8 x i8> %B to <8 x i64> 444*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %C 445*9880d681SAndroid Build Coastguard Worker} 446*9880d681SAndroid Build Coastguard Worker 447*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sext_8i16_to_4i32(<8 x i16> %A) nounwind uwtable readnone ssp { 448*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_8i16_to_4i32: 449*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 450*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 451*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $16, %xmm0 452*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 453*9880d681SAndroid Build Coastguard Worker; 454*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_8i16_to_4i32: 455*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 456*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 457*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $16, %xmm0 458*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 459*9880d681SAndroid Build Coastguard Worker; 460*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_8i16_to_4i32: 461*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 462*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxwd %xmm0, %xmm0 463*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 464*9880d681SAndroid Build Coastguard Worker; 465*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sext_8i16_to_4i32: 466*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 467*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovsxwd %xmm0, %xmm0 468*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 469*9880d681SAndroid Build Coastguard Worker; 470*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_8i16_to_4i32: 471*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 472*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxwd %xmm0, %xmm0 473*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 474*9880d681SAndroid Build Coastguard Workerentry: 475*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> 476*9880d681SAndroid Build Coastguard Worker %C = sext <4 x i16> %B to <4 x i32> 477*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %C 478*9880d681SAndroid Build Coastguard Worker} 479*9880d681SAndroid Build Coastguard Worker 480*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @sext_8i16_to_8i32(<8 x i16> %A) nounwind uwtable readnone ssp { 481*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_8i16_to_8i32: 482*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 483*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 484*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $16, %xmm2 485*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 486*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $16, %xmm1 487*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm2, %xmm0 488*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 489*9880d681SAndroid Build Coastguard Worker; 490*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_8i16_to_8i32: 491*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 492*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 493*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $16, %xmm2 494*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 495*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $16, %xmm1 496*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm2, %xmm0 497*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 498*9880d681SAndroid Build Coastguard Worker; 499*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_8i16_to_8i32: 500*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 501*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxwd %xmm0, %xmm2 502*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 503*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxwd %xmm0, %xmm1 504*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm0 505*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 506*9880d681SAndroid Build Coastguard Worker; 507*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_8i16_to_8i32: 508*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 509*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxwd %xmm0, %xmm1 510*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 511*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxwd %xmm0, %xmm0 512*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 513*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 514*9880d681SAndroid Build Coastguard Worker; 515*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_8i16_to_8i32: 516*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 517*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxwd %xmm0, %ymm0 518*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 519*9880d681SAndroid Build Coastguard Worker; 520*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_8i16_to_8i32: 521*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 522*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxwd %xmm0, %ymm0 523*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 524*9880d681SAndroid Build Coastguard Worker; 525*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_8i16_to_8i32: 526*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 527*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxwd %xmm0, %xmm2 528*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 529*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxwd %xmm0, %xmm1 530*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movdqa %xmm2, %xmm0 531*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 532*9880d681SAndroid Build Coastguard Workerentry: 533*9880d681SAndroid Build Coastguard Worker %B = sext <8 x i16> %A to <8 x i32> 534*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %B 535*9880d681SAndroid Build Coastguard Worker} 536*9880d681SAndroid Build Coastguard Worker 537*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sext_8i16_to_2i64(<8 x i16> %A) nounwind uwtable readnone ssp { 538*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_8i16_to_2i64: 539*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 540*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 541*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 542*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm1 543*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $16, %xmm0 544*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 545*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 546*9880d681SAndroid Build Coastguard Worker; 547*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_8i16_to_2i64: 548*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 549*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 550*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 551*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm1 552*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $16, %xmm0 553*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 554*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 555*9880d681SAndroid Build Coastguard Worker; 556*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_8i16_to_2i64: 557*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 558*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxwq %xmm0, %xmm0 559*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 560*9880d681SAndroid Build Coastguard Worker; 561*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sext_8i16_to_2i64: 562*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 563*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovsxwq %xmm0, %xmm0 564*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 565*9880d681SAndroid Build Coastguard Worker; 566*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_8i16_to_2i64: 567*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 568*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxwq %xmm0, %xmm0 569*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 570*9880d681SAndroid Build Coastguard Workerentry: 571*9880d681SAndroid Build Coastguard Worker %B = shufflevector <8 x i16> %A, <8 x i16> undef, <2 x i32> <i32 0, i32 1> 572*9880d681SAndroid Build Coastguard Worker %C = sext <2 x i16> %B to <2 x i64> 573*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %C 574*9880d681SAndroid Build Coastguard Worker} 575*9880d681SAndroid Build Coastguard Worker 576*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_8i16_to_4i64(<8 x i16> %A) nounwind uwtable readnone ssp { 577*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_8i16_to_4i64: 578*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 579*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 580*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm2, %xmm1 581*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm1 582*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $16, %xmm2 583*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] 584*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 585*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 586*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 587*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm0 588*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $16, %xmm1 589*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 590*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm2, %xmm0 591*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 592*9880d681SAndroid Build Coastguard Worker; 593*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_8i16_to_4i64: 594*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 595*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 596*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm2, %xmm1 597*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm1 598*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $16, %xmm2 599*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] 600*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 601*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 602*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 603*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm0 604*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $16, %xmm1 605*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 606*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm2, %xmm0 607*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 608*9880d681SAndroid Build Coastguard Worker; 609*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_8i16_to_4i64: 610*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 611*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxwq %xmm0, %xmm2 612*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 613*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxwq %xmm0, %xmm1 614*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm0 615*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 616*9880d681SAndroid Build Coastguard Worker; 617*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_8i16_to_4i64: 618*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 619*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxwq %xmm0, %xmm1 620*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 621*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxwq %xmm0, %xmm0 622*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 623*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 624*9880d681SAndroid Build Coastguard Worker; 625*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_8i16_to_4i64: 626*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 627*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxwq %xmm0, %ymm0 628*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 629*9880d681SAndroid Build Coastguard Worker; 630*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_8i16_to_4i64: 631*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 632*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxwq %xmm0, %ymm0 633*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 634*9880d681SAndroid Build Coastguard Worker; 635*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_8i16_to_4i64: 636*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 637*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxwq %xmm0, %xmm2 638*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 639*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxwq %xmm0, %xmm1 640*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movdqa %xmm2, %xmm0 641*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 642*9880d681SAndroid Build Coastguard Workerentry: 643*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> 644*9880d681SAndroid Build Coastguard Worker %C = sext <4 x i16> %B to <4 x i64> 645*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %C 646*9880d681SAndroid Build Coastguard Worker} 647*9880d681SAndroid Build Coastguard Worker 648*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sext_4i32_to_2i64(<4 x i32> %A) nounwind uwtable readnone ssp { 649*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_4i32_to_2i64: 650*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 651*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 652*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm1 653*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 654*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 655*9880d681SAndroid Build Coastguard Worker; 656*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_4i32_to_2i64: 657*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 658*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 659*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm1 660*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 661*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 662*9880d681SAndroid Build Coastguard Worker; 663*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_4i32_to_2i64: 664*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 665*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxdq %xmm0, %xmm0 666*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 667*9880d681SAndroid Build Coastguard Worker; 668*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sext_4i32_to_2i64: 669*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 670*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovsxdq %xmm0, %xmm0 671*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 672*9880d681SAndroid Build Coastguard Worker; 673*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_4i32_to_2i64: 674*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 675*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm0 676*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 677*9880d681SAndroid Build Coastguard Workerentry: 678*9880d681SAndroid Build Coastguard Worker %B = shufflevector <4 x i32> %A, <4 x i32> undef, <2 x i32> <i32 0, i32 1> 679*9880d681SAndroid Build Coastguard Worker %C = sext <2 x i32> %B to <2 x i64> 680*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %C 681*9880d681SAndroid Build Coastguard Worker} 682*9880d681SAndroid Build Coastguard Worker 683*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_4i32_to_4i64(<4 x i32> %A) nounwind uwtable readnone ssp { 684*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_4i32_to_4i64: 685*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 686*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm2 687*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm2 688*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1] 689*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 690*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm2 691*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm2 692*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 693*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 694*9880d681SAndroid Build Coastguard Worker; 695*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_4i32_to_4i64: 696*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 697*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm2 698*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm2 699*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1] 700*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 701*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm2 702*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm2 703*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 704*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 705*9880d681SAndroid Build Coastguard Worker; 706*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_4i32_to_4i64: 707*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 708*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxdq %xmm0, %xmm2 709*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 710*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxdq %xmm0, %xmm1 711*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm0 712*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 713*9880d681SAndroid Build Coastguard Worker; 714*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_4i32_to_4i64: 715*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 716*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm0, %xmm1 717*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 718*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm0, %xmm0 719*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 720*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 721*9880d681SAndroid Build Coastguard Worker; 722*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_4i32_to_4i64: 723*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 724*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxdq %xmm0, %ymm0 725*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 726*9880d681SAndroid Build Coastguard Worker; 727*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_4i32_to_4i64: 728*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 729*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxdq %xmm0, %ymm0 730*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 731*9880d681SAndroid Build Coastguard Worker; 732*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_4i32_to_4i64: 733*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 734*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm2 735*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 736*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm1 737*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movdqa %xmm2, %xmm0 738*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 739*9880d681SAndroid Build Coastguard Workerentry: 740*9880d681SAndroid Build Coastguard Worker %B = sext <4 x i32> %A to <4 x i64> 741*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %B 742*9880d681SAndroid Build Coastguard Worker} 743*9880d681SAndroid Build Coastguard Worker 744*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @load_sext_2i1_to_2i64(<2 x i1> *%ptr) { 745*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: load_sext_2i1_to_2i64: 746*9880d681SAndroid Build Coastguard Worker; SSE: # BB#0: # %entry 747*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: movzbl (%rdi), %eax 748*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: movq %rax, %rcx 749*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: shlq $62, %rcx 750*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: sarq $63, %rcx 751*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: movd %rcx, %xmm1 752*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: shlq $63, %rax 753*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: sarq $63, %rax 754*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: movd %rax, %xmm0 755*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 756*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retq 757*9880d681SAndroid Build Coastguard Worker; 758*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_2i1_to_2i64: 759*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 760*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movzbl (%rdi), %eax 761*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 762*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $62, %rcx 763*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 764*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovq %rcx, %xmm0 765*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $63, %rax 766*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rax 767*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovq %rax, %xmm1 768*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0] 769*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 770*9880d681SAndroid Build Coastguard Worker; 771*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_2i1_to_2i64: 772*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 773*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movzbl (%rdi), %eax 774*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 775*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $62, %rcx 776*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 777*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovq %rcx, %xmm0 778*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $63, %rax 779*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rax 780*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovq %rax, %xmm1 781*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0] 782*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 783*9880d681SAndroid Build Coastguard Worker; 784*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_2i1_to_2i64: 785*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 786*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: movzbl (%rdi), %eax 787*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: kmovw %eax, %k1 788*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 789*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z} 790*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %ZMM0<kill> 791*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 792*9880d681SAndroid Build Coastguard Worker; 793*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_2i1_to_2i64: 794*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 795*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 796*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movzbl (%eax), %eax 797*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 798*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $31, %ecx 799*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 800*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movd %ecx, %xmm0 801*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrd $1, %ecx, %xmm0 802*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $30, %eax 803*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %eax 804*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrd $2, %eax, %xmm0 805*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrd $3, %eax, %xmm0 806*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 807*9880d681SAndroid Build Coastguard Workerentry: 808*9880d681SAndroid Build Coastguard Worker %X = load <2 x i1>, <2 x i1>* %ptr 809*9880d681SAndroid Build Coastguard Worker %Y = sext <2 x i1> %X to <2 x i64> 810*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Y 811*9880d681SAndroid Build Coastguard Worker} 812*9880d681SAndroid Build Coastguard Worker 813*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @load_sext_2i8_to_2i64(<2 x i8> *%ptr) { 814*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_2i8_to_2i64: 815*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 816*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movzwl (%rdi), %eax 817*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm0 818*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 819*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 820*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 821*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm1 822*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm0 823*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 824*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 825*9880d681SAndroid Build Coastguard Worker; 826*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_2i8_to_2i64: 827*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 828*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movzwl (%rdi), %eax 829*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm0 830*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 831*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 832*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 833*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm1 834*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm0 835*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 836*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 837*9880d681SAndroid Build Coastguard Worker; 838*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_2i8_to_2i64: 839*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 840*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbq (%rdi), %xmm0 841*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 842*9880d681SAndroid Build Coastguard Worker; 843*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_sext_2i8_to_2i64: 844*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 845*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovsxbq (%rdi), %xmm0 846*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 847*9880d681SAndroid Build Coastguard Worker; 848*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_2i8_to_2i64: 849*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 850*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 851*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbq (%eax), %xmm0 852*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 853*9880d681SAndroid Build Coastguard Workerentry: 854*9880d681SAndroid Build Coastguard Worker %X = load <2 x i8>, <2 x i8>* %ptr 855*9880d681SAndroid Build Coastguard Worker %Y = sext <2 x i8> %X to <2 x i64> 856*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Y 857*9880d681SAndroid Build Coastguard Worker} 858*9880d681SAndroid Build Coastguard Worker 859*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @load_sext_4i1_to_4i32(<4 x i1> *%ptr) { 860*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_4i1_to_4i32: 861*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 862*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movzbl (%rdi), %eax 863*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rcx 864*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $60, %rcx 865*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rcx 866*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 867*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rcx 868*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $62, %rcx 869*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rcx 870*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm1 871*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 872*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rcx 873*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $61, %rcx 874*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rcx 875*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm2 876*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $63, %rax 877*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rax 878*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm0 879*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 880*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 881*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 882*9880d681SAndroid Build Coastguard Worker; 883*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_4i1_to_4i32: 884*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 885*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movzbl (%rdi), %eax 886*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rcx 887*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $60, %rcx 888*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rcx 889*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 890*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rcx 891*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $62, %rcx 892*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rcx 893*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm1 894*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 895*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rcx 896*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $61, %rcx 897*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rcx 898*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm2 899*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $63, %rax 900*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rax 901*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm0 902*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 903*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 904*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 905*9880d681SAndroid Build Coastguard Worker; 906*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_4i1_to_4i32: 907*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 908*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movzbl (%rdi), %eax 909*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 910*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $62, %rcx 911*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 912*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rdx 913*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $63, %rdx 914*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rdx 915*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movd %edx, %xmm0 916*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrd $1, %ecx, %xmm0 917*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 918*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $61, %rcx 919*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 920*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrd $2, %ecx, %xmm0 921*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $60, %rax 922*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rax 923*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrd $3, %eax, %xmm0 924*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 925*9880d681SAndroid Build Coastguard Worker; 926*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_4i1_to_4i32: 927*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 928*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movzbl (%rdi), %eax 929*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 930*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $62, %rcx 931*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 932*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rdx 933*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $63, %rdx 934*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rdx 935*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovd %edx, %xmm0 936*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrd $1, %ecx, %xmm0, %xmm0 937*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 938*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $61, %rcx 939*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 940*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrd $2, %ecx, %xmm0, %xmm0 941*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $60, %rax 942*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rax 943*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrd $3, %eax, %xmm0, %xmm0 944*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 945*9880d681SAndroid Build Coastguard Worker; 946*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_4i1_to_4i32: 947*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 948*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movzbl (%rdi), %eax 949*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 950*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $62, %rcx 951*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 952*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rdx 953*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $63, %rdx 954*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rdx 955*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovd %edx, %xmm0 956*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrd $1, %ecx, %xmm0, %xmm0 957*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 958*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $61, %rcx 959*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 960*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrd $2, %ecx, %xmm0, %xmm0 961*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $60, %rax 962*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rax 963*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrd $3, %eax, %xmm0, %xmm0 964*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 965*9880d681SAndroid Build Coastguard Worker; 966*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_4i1_to_4i32: 967*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 968*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: movzbl (%rdi), %eax 969*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: kmovw %eax, %k1 970*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 971*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z} 972*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovqd %zmm0, %ymm0 973*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 974*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 975*9880d681SAndroid Build Coastguard Worker; 976*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_4i1_to_4i32: 977*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 978*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 979*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl (%eax), %eax 980*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 981*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $30, %ecx 982*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 983*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %edx 984*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $31, %edx 985*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 986*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movd %edx, %xmm0 987*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrd $1, %ecx, %xmm0 988*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 989*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $29, %ecx 990*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 991*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrd $2, %ecx, %xmm0 992*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $28, %eax 993*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %eax 994*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrd $3, %eax, %xmm0 995*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 996*9880d681SAndroid Build Coastguard Workerentry: 997*9880d681SAndroid Build Coastguard Worker %X = load <4 x i1>, <4 x i1>* %ptr 998*9880d681SAndroid Build Coastguard Worker %Y = sext <4 x i1> %X to <4 x i32> 999*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %Y 1000*9880d681SAndroid Build Coastguard Worker} 1001*9880d681SAndroid Build Coastguard Worker 1002*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @load_sext_4i8_to_4i32(<4 x i8> *%ptr) { 1003*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_4i8_to_4i32: 1004*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1005*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 1006*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 1007*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 1008*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm0 1009*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1010*9880d681SAndroid Build Coastguard Worker; 1011*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_4i8_to_4i32: 1012*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1013*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 1014*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 1015*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 1016*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm0 1017*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1018*9880d681SAndroid Build Coastguard Worker; 1019*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_4i8_to_4i32: 1020*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1021*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbd (%rdi), %xmm0 1022*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1023*9880d681SAndroid Build Coastguard Worker; 1024*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_sext_4i8_to_4i32: 1025*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 1026*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovsxbd (%rdi), %xmm0 1027*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 1028*9880d681SAndroid Build Coastguard Worker; 1029*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_4i8_to_4i32: 1030*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 1031*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 1032*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbd (%eax), %xmm0 1033*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 1034*9880d681SAndroid Build Coastguard Workerentry: 1035*9880d681SAndroid Build Coastguard Worker %X = load <4 x i8>, <4 x i8>* %ptr 1036*9880d681SAndroid Build Coastguard Worker %Y = sext <4 x i8> %X to <4 x i32> 1037*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %Y 1038*9880d681SAndroid Build Coastguard Worker} 1039*9880d681SAndroid Build Coastguard Worker 1040*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @load_sext_4i1_to_4i64(<4 x i1> *%ptr) { 1041*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_4i1_to_4i64: 1042*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1043*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl (%rdi), %eax 1044*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 1045*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $3, %ecx 1046*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 1047*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 1048*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl %ecx 1049*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm1 1050*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 1051*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm2 1052*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $2, %eax 1053*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm0 1054*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1] 1055*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] 1056*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pand {{.*}}(%rip), %xmm2 1057*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,1,1,3] 1058*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psllq $63, %xmm0 1059*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm0 1060*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3] 1061*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm2[2,1,3,3] 1062*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psllq $63, %xmm1 1063*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm1 1064*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3] 1065*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1066*9880d681SAndroid Build Coastguard Worker; 1067*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_4i1_to_4i64: 1068*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1069*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl (%rdi), %eax 1070*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 1071*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $3, %ecx 1072*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 1073*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 1074*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl %ecx 1075*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm1 1076*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 1077*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm2 1078*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $2, %eax 1079*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm0 1080*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1] 1081*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] 1082*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pand {{.*}}(%rip), %xmm2 1083*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,1,1,3] 1084*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psllq $63, %xmm0 1085*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm0 1086*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3] 1087*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[2,1,3,3] 1088*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psllq $63, %xmm1 1089*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm1 1090*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3] 1091*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1092*9880d681SAndroid Build Coastguard Worker; 1093*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_4i1_to_4i64: 1094*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1095*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl (%rdi), %eax 1096*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 1097*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl %ecx 1098*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movd %eax, %xmm1 1099*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrd $1, %ecx, %xmm1 1100*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 1101*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $2, %ecx 1102*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrd $2, %ecx, %xmm1 1103*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $3, %eax 1104*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrd $3, %eax, %xmm1 1105*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pand {{.*}}(%rip), %xmm1 1106*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero 1107*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psllq $63, %xmm0 1108*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrad $31, %xmm0 1109*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3] 1110*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3] 1111*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psllq $63, %xmm1 1112*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrad $31, %xmm1 1113*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3] 1114*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1115*9880d681SAndroid Build Coastguard Worker; 1116*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_4i1_to_4i64: 1117*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1118*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movzbl (%rdi), %eax 1119*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 1120*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $62, %rcx 1121*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 1122*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rdx 1123*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $63, %rdx 1124*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rdx 1125*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovd %edx, %xmm0 1126*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrd $1, %ecx, %xmm0, %xmm0 1127*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 1128*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $61, %rcx 1129*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 1130*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrd $2, %ecx, %xmm0, %xmm0 1131*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $60, %rax 1132*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rax 1133*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrd $3, %eax, %xmm0, %xmm0 1134*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm0, %xmm1 1135*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 1136*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm0, %xmm0 1137*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1138*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1139*9880d681SAndroid Build Coastguard Worker; 1140*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_4i1_to_4i64: 1141*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1142*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movzbl (%rdi), %eax 1143*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 1144*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $60, %rcx 1145*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 1146*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovq %rcx, %xmm0 1147*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 1148*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $61, %rcx 1149*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 1150*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovq %rcx, %xmm1 1151*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0] 1152*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 1153*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $62, %rcx 1154*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 1155*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovq %rcx, %xmm1 1156*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $63, %rax 1157*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rax 1158*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovq %rax, %xmm2 1159*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0] 1160*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 1161*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1162*9880d681SAndroid Build Coastguard Worker; 1163*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_4i1_to_4i64: 1164*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1165*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: movzbl (%rdi), %eax 1166*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: kmovw %eax, %k1 1167*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 1168*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z} 1169*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: # kill: %YMM0<def> %YMM0<kill> %ZMM0<kill> 1170*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1171*9880d681SAndroid Build Coastguard Worker; 1172*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_4i1_to_4i64: 1173*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 1174*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 1175*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movzbl (%eax), %eax 1176*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 1177*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl %ecx 1178*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movd %eax, %xmm1 1179*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrd $1, %ecx, %xmm1 1180*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 1181*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $2, %ecx 1182*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrd $2, %ecx, %xmm1 1183*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $3, %eax 1184*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrd $3, %eax, %xmm1 1185*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pand {{\.LCPI.*}}, %xmm1 1186*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero 1187*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psllq $63, %xmm0 1188*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psrad $31, %xmm0 1189*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3] 1190*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3] 1191*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psllq $63, %xmm1 1192*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psrad $31, %xmm1 1193*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3] 1194*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 1195*9880d681SAndroid Build Coastguard Workerentry: 1196*9880d681SAndroid Build Coastguard Worker %X = load <4 x i1>, <4 x i1>* %ptr 1197*9880d681SAndroid Build Coastguard Worker %Y = sext <4 x i1> %X to <4 x i64> 1198*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Y 1199*9880d681SAndroid Build Coastguard Worker} 1200*9880d681SAndroid Build Coastguard Worker 1201*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @load_sext_4i8_to_4i64(<4 x i8> *%ptr) { 1202*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_4i8_to_4i64: 1203*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1204*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq 1(%rdi), %rax 1205*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm1 1206*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq (%rdi), %rax 1207*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm0 1208*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 1209*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq 3(%rdi), %rax 1210*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm2 1211*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq 2(%rdi), %rax 1212*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm1 1213*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0] 1214*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1215*9880d681SAndroid Build Coastguard Worker; 1216*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_4i8_to_4i64: 1217*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1218*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq 1(%rdi), %rax 1219*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm1 1220*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq (%rdi), %rax 1221*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm0 1222*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 1223*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq 3(%rdi), %rax 1224*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm2 1225*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq 2(%rdi), %rax 1226*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm1 1227*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0] 1228*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1229*9880d681SAndroid Build Coastguard Worker; 1230*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_4i8_to_4i64: 1231*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1232*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbq (%rdi), %xmm0 1233*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbq 2(%rdi), %xmm1 1234*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1235*9880d681SAndroid Build Coastguard Worker; 1236*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_4i8_to_4i64: 1237*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1238*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbd (%rdi), %xmm0 1239*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm0, %xmm1 1240*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 1241*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm0, %xmm0 1242*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1243*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1244*9880d681SAndroid Build Coastguard Worker; 1245*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_4i8_to_4i64: 1246*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1247*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxbq (%rdi), %ymm0 1248*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1249*9880d681SAndroid Build Coastguard Worker; 1250*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_4i8_to_4i64: 1251*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1252*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxbq (%rdi), %ymm0 1253*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1254*9880d681SAndroid Build Coastguard Worker; 1255*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_4i8_to_4i64: 1256*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 1257*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 1258*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbq (%eax), %xmm0 1259*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbq 2(%eax), %xmm1 1260*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 1261*9880d681SAndroid Build Coastguard Workerentry: 1262*9880d681SAndroid Build Coastguard Worker %X = load <4 x i8>, <4 x i8>* %ptr 1263*9880d681SAndroid Build Coastguard Worker %Y = sext <4 x i8> %X to <4 x i64> 1264*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Y 1265*9880d681SAndroid Build Coastguard Worker} 1266*9880d681SAndroid Build Coastguard Worker 1267*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @load_sext_8i1_to_8i16(<8 x i1> *%ptr) { 1268*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_8i1_to_8i16: 1269*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1270*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq (%rdi), %rax 1271*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rcx 1272*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrq $7, %rcx 1273*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 1274*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rcx 1275*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $60, %rcx 1276*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rcx 1277*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm2 1278*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 1279*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rcx 1280*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $58, %rcx 1281*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rcx 1282*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 1283*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rcx 1284*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $62, %rcx 1285*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rcx 1286*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm1 1287*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 1288*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 1289*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rcx 1290*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $57, %rcx 1291*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rcx 1292*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 1293*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rcx 1294*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $61, %rcx 1295*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rcx 1296*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm2 1297*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 1298*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rcx 1299*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $59, %rcx 1300*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rcx 1301*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm3 1302*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $63, %rax 1303*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rax 1304*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm0 1305*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3] 1306*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1307*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1308*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1309*9880d681SAndroid Build Coastguard Worker; 1310*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_8i1_to_8i16: 1311*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1312*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq (%rdi), %rax 1313*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rcx 1314*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrq $7, %rcx 1315*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 1316*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rcx 1317*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $60, %rcx 1318*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rcx 1319*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm2 1320*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 1321*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rcx 1322*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $58, %rcx 1323*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rcx 1324*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 1325*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rcx 1326*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $62, %rcx 1327*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rcx 1328*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm1 1329*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 1330*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 1331*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rcx 1332*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $57, %rcx 1333*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rcx 1334*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 1335*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rcx 1336*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $61, %rcx 1337*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rcx 1338*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm2 1339*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 1340*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rcx 1341*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $59, %rcx 1342*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rcx 1343*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm3 1344*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $63, %rax 1345*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rax 1346*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm0 1347*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3] 1348*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 1349*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1350*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1351*9880d681SAndroid Build Coastguard Worker; 1352*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_8i1_to_8i16: 1353*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1354*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movsbq (%rdi), %rax 1355*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 1356*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $62, %rcx 1357*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 1358*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rdx 1359*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $63, %rdx 1360*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rdx 1361*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movd %edx, %xmm0 1362*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrw $1, %ecx, %xmm0 1363*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 1364*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $61, %rcx 1365*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 1366*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrw $2, %ecx, %xmm0 1367*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 1368*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $60, %rcx 1369*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 1370*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrw $3, %ecx, %xmm0 1371*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 1372*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $59, %rcx 1373*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 1374*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrw $4, %ecx, %xmm0 1375*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 1376*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $58, %rcx 1377*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 1378*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrw $5, %ecx, %xmm0 1379*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 1380*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $57, %rcx 1381*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 1382*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrw $6, %ecx, %xmm0 1383*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrq $7, %rax 1384*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrw $7, %eax, %xmm0 1385*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1386*9880d681SAndroid Build Coastguard Worker; 1387*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_8i1_to_8i16: 1388*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1389*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movsbq (%rdi), %rax 1390*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 1391*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $62, %rcx 1392*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 1393*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rdx 1394*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $63, %rdx 1395*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rdx 1396*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovd %edx, %xmm0 1397*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $1, %ecx, %xmm0, %xmm0 1398*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 1399*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $61, %rcx 1400*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 1401*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $2, %ecx, %xmm0, %xmm0 1402*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 1403*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $60, %rcx 1404*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 1405*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $3, %ecx, %xmm0, %xmm0 1406*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 1407*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $59, %rcx 1408*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 1409*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $4, %ecx, %xmm0, %xmm0 1410*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 1411*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $58, %rcx 1412*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 1413*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $5, %ecx, %xmm0, %xmm0 1414*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 1415*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $57, %rcx 1416*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 1417*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $6, %ecx, %xmm0, %xmm0 1418*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shrq $7, %rax 1419*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $7, %eax, %xmm0, %xmm0 1420*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1421*9880d681SAndroid Build Coastguard Worker; 1422*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_8i1_to_8i16: 1423*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1424*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movsbq (%rdi), %rax 1425*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 1426*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $62, %rcx 1427*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 1428*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rdx 1429*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $63, %rdx 1430*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rdx 1431*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovd %edx, %xmm0 1432*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $1, %ecx, %xmm0, %xmm0 1433*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 1434*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $61, %rcx 1435*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 1436*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $2, %ecx, %xmm0, %xmm0 1437*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 1438*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $60, %rcx 1439*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 1440*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $3, %ecx, %xmm0, %xmm0 1441*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 1442*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $59, %rcx 1443*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 1444*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $4, %ecx, %xmm0, %xmm0 1445*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 1446*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $58, %rcx 1447*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 1448*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $5, %ecx, %xmm0, %xmm0 1449*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 1450*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $57, %rcx 1451*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 1452*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $6, %ecx, %xmm0, %xmm0 1453*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shrq $7, %rax 1454*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $7, %eax, %xmm0, %xmm0 1455*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1456*9880d681SAndroid Build Coastguard Worker; 1457*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_8i1_to_8i16: 1458*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1459*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: movzbl (%rdi), %eax 1460*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: kmovw %eax, %k1 1461*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 1462*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z} 1463*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovqw %zmm0, %xmm0 1464*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1465*9880d681SAndroid Build Coastguard Worker; 1466*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_8i1_to_8i16: 1467*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 1468*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 1469*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movsbl (%eax), %eax 1470*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 1471*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $30, %ecx 1472*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 1473*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %edx 1474*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $31, %edx 1475*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 1476*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movd %edx, %xmm0 1477*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrw $1, %ecx, %xmm0 1478*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 1479*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $29, %ecx 1480*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 1481*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrw $2, %ecx, %xmm0 1482*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 1483*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $28, %ecx 1484*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 1485*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrw $3, %ecx, %xmm0 1486*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 1487*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $27, %ecx 1488*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 1489*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrw $4, %ecx, %xmm0 1490*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 1491*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $26, %ecx 1492*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 1493*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrw $5, %ecx, %xmm0 1494*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 1495*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $25, %ecx 1496*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 1497*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrw $6, %ecx, %xmm0 1498*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $7, %eax 1499*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrw $7, %eax, %xmm0 1500*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 1501*9880d681SAndroid Build Coastguard Workerentry: 1502*9880d681SAndroid Build Coastguard Worker %X = load <8 x i1>, <8 x i1>* %ptr 1503*9880d681SAndroid Build Coastguard Worker %Y = sext <8 x i1> %X to <8 x i16> 1504*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %Y 1505*9880d681SAndroid Build Coastguard Worker} 1506*9880d681SAndroid Build Coastguard Worker 1507*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @load_sext_8i8_to_8i16(<8 x i8> *%ptr) { 1508*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_8i8_to_8i16: 1509*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1510*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 1511*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 1512*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psraw $8, %xmm0 1513*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1514*9880d681SAndroid Build Coastguard Worker; 1515*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_8i8_to_8i16: 1516*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1517*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 1518*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 1519*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psraw $8, %xmm0 1520*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1521*9880d681SAndroid Build Coastguard Worker; 1522*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_8i8_to_8i16: 1523*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1524*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbw (%rdi), %xmm0 1525*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1526*9880d681SAndroid Build Coastguard Worker; 1527*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_sext_8i8_to_8i16: 1528*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 1529*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovsxbw (%rdi), %xmm0 1530*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 1531*9880d681SAndroid Build Coastguard Worker; 1532*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_8i8_to_8i16: 1533*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 1534*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 1535*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbw (%eax), %xmm0 1536*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 1537*9880d681SAndroid Build Coastguard Workerentry: 1538*9880d681SAndroid Build Coastguard Worker %X = load <8 x i8>, <8 x i8>* %ptr 1539*9880d681SAndroid Build Coastguard Worker %Y = sext <8 x i8> %X to <8 x i16> 1540*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %Y 1541*9880d681SAndroid Build Coastguard Worker} 1542*9880d681SAndroid Build Coastguard Worker 1543*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @load_sext_8i8_to_8i64(<8 x i8> *%ptr) { 1544*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_8i8_to_8i64: 1545*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1546*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq 1(%rdi), %rax 1547*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm1 1548*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq (%rdi), %rax 1549*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm0 1550*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 1551*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq 3(%rdi), %rax 1552*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm2 1553*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq 2(%rdi), %rax 1554*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm1 1555*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0] 1556*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq 5(%rdi), %rax 1557*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm3 1558*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq 4(%rdi), %rax 1559*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm2 1560*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 1561*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq 7(%rdi), %rax 1562*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm4 1563*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq 6(%rdi), %rax 1564*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm3 1565*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm4[0] 1566*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1567*9880d681SAndroid Build Coastguard Worker; 1568*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_8i8_to_8i64: 1569*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1570*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq 1(%rdi), %rax 1571*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm1 1572*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq (%rdi), %rax 1573*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm0 1574*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 1575*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq 3(%rdi), %rax 1576*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm2 1577*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq 2(%rdi), %rax 1578*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm1 1579*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0] 1580*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq 5(%rdi), %rax 1581*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm3 1582*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq 4(%rdi), %rax 1583*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm2 1584*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 1585*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq 7(%rdi), %rax 1586*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm4 1587*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq 6(%rdi), %rax 1588*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm3 1589*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm4[0] 1590*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1591*9880d681SAndroid Build Coastguard Worker; 1592*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_8i8_to_8i64: 1593*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1594*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbq (%rdi), %xmm0 1595*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbq 2(%rdi), %xmm1 1596*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbq 4(%rdi), %xmm2 1597*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbq 6(%rdi), %xmm3 1598*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1599*9880d681SAndroid Build Coastguard Worker; 1600*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_8i8_to_8i64: 1601*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1602*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbd (%rdi), %xmm0 1603*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm0, %xmm1 1604*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 1605*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm0, %xmm0 1606*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1607*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbd 4(%rdi), %xmm1 1608*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm1, %xmm2 1609*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1] 1610*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm1, %xmm1 1611*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm1 1612*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1613*9880d681SAndroid Build Coastguard Worker; 1614*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_8i8_to_8i64: 1615*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1616*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxbq (%rdi), %ymm0 1617*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxbq 4(%rdi), %ymm1 1618*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1619*9880d681SAndroid Build Coastguard Worker; 1620*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_8i8_to_8i64: 1621*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1622*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxbq (%rdi), %zmm0 1623*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1624*9880d681SAndroid Build Coastguard Worker; 1625*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_8i8_to_8i64: 1626*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 1627*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 1628*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbq (%eax), %xmm0 1629*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbq 2(%eax), %xmm1 1630*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbq 4(%eax), %xmm2 1631*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbq 6(%eax), %xmm3 1632*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 1633*9880d681SAndroid Build Coastguard Workerentry: 1634*9880d681SAndroid Build Coastguard Worker %X = load <8 x i8>, <8 x i8>* %ptr 1635*9880d681SAndroid Build Coastguard Worker %Y = sext <8 x i8> %X to <8 x i64> 1636*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %Y 1637*9880d681SAndroid Build Coastguard Worker} 1638*9880d681SAndroid Build Coastguard Worker 1639*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @load_sext_8i1_to_8i32(<8 x i1> *%ptr) { 1640*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_8i1_to_8i32: 1641*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1642*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movzbl (%rdi), %eax 1643*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 1644*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $6, %ecx 1645*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 1646*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 1647*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 1648*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $2, %ecx 1649*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 1650*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm2 1651*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 1652*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 1653*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 1654*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm1 1655*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 1656*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $4, %ecx 1657*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 1658*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 1659*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 1660*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 1661*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 1662*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $5, %ecx 1663*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 1664*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 1665*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 1666*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl %ecx 1667*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 1668*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm2 1669*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 1670*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 1671*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $3, %ecx 1672*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 1673*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 1674*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $7, %eax 1675*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movzwl %ax, %eax 1676*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm3 1677*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3] 1678*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 1679*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 1680*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 1681*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 1682*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pslld $31, %xmm0 1683*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm0 1684*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 1685*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pslld $31, %xmm1 1686*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm1 1687*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1688*9880d681SAndroid Build Coastguard Worker; 1689*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_8i1_to_8i32: 1690*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1691*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movzbl (%rdi), %eax 1692*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 1693*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $6, %ecx 1694*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 1695*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 1696*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 1697*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $2, %ecx 1698*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 1699*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm2 1700*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 1701*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 1702*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 1703*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm1 1704*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 1705*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $4, %ecx 1706*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 1707*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 1708*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 1709*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 1710*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 1711*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $5, %ecx 1712*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 1713*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 1714*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 1715*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl %ecx 1716*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 1717*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm2 1718*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 1719*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 1720*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $3, %ecx 1721*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 1722*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 1723*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $7, %eax 1724*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movzwl %ax, %eax 1725*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm3 1726*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3] 1727*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 1728*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 1729*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 1730*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 1731*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pslld $31, %xmm0 1732*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm0 1733*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 1734*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pslld $31, %xmm1 1735*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm1 1736*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1737*9880d681SAndroid Build Coastguard Worker; 1738*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_8i1_to_8i32: 1739*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1740*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movzbl (%rdi), %eax 1741*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 1742*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl %ecx 1743*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 1744*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %edx 1745*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %edx 1746*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movd %edx, %xmm1 1747*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrw $1, %ecx, %xmm1 1748*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 1749*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $2, %ecx 1750*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 1751*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrw $2, %ecx, %xmm1 1752*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 1753*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $3, %ecx 1754*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 1755*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrw $3, %ecx, %xmm1 1756*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 1757*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $4, %ecx 1758*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 1759*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrw $4, %ecx, %xmm1 1760*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 1761*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $5, %ecx 1762*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 1763*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrw $5, %ecx, %xmm1 1764*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 1765*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $6, %ecx 1766*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 1767*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrw $6, %ecx, %xmm1 1768*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $7, %eax 1769*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movzwl %ax, %eax 1770*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrw $7, %eax, %xmm1 1771*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero 1772*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pslld $31, %xmm0 1773*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrad $31, %xmm0 1774*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 1775*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pslld $31, %xmm1 1776*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrad $31, %xmm1 1777*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1778*9880d681SAndroid Build Coastguard Worker; 1779*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_8i1_to_8i32: 1780*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1781*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movsbq (%rdi), %rax 1782*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 1783*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $58, %rcx 1784*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 1785*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rdx 1786*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $59, %rdx 1787*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rdx 1788*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovd %edx, %xmm0 1789*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrd $1, %ecx, %xmm0, %xmm0 1790*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 1791*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $57, %rcx 1792*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 1793*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrd $2, %ecx, %xmm0, %xmm0 1794*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 1795*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shrq $7, %rcx 1796*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrd $3, %ecx, %xmm0, %xmm0 1797*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 1798*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $62, %rcx 1799*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 1800*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rdx 1801*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $63, %rdx 1802*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rdx 1803*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovd %edx, %xmm1 1804*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrd $1, %ecx, %xmm1, %xmm1 1805*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 1806*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $61, %rcx 1807*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 1808*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrd $2, %ecx, %xmm1, %xmm1 1809*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $60, %rax 1810*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rax 1811*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrd $3, %eax, %xmm1, %xmm1 1812*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1813*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1814*9880d681SAndroid Build Coastguard Worker; 1815*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_8i1_to_8i32: 1816*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1817*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movsbq (%rdi), %rax 1818*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 1819*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $58, %rcx 1820*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 1821*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rdx 1822*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $59, %rdx 1823*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rdx 1824*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovd %edx, %xmm0 1825*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrd $1, %ecx, %xmm0, %xmm0 1826*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 1827*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $57, %rcx 1828*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 1829*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrd $2, %ecx, %xmm0, %xmm0 1830*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 1831*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shrq $7, %rcx 1832*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrd $3, %ecx, %xmm0, %xmm0 1833*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 1834*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $62, %rcx 1835*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 1836*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rdx 1837*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $63, %rdx 1838*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rdx 1839*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovd %edx, %xmm1 1840*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrd $1, %ecx, %xmm1, %xmm1 1841*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 1842*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $61, %rcx 1843*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 1844*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrd $2, %ecx, %xmm1, %xmm1 1845*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $60, %rax 1846*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rax 1847*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrd $3, %eax, %xmm1, %xmm1 1848*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 1849*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1850*9880d681SAndroid Build Coastguard Worker; 1851*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_8i1_to_8i32: 1852*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1853*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: movzbl (%rdi), %eax 1854*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: kmovw %eax, %k1 1855*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 1856*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z} 1857*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovqd %zmm0, %ymm0 1858*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1859*9880d681SAndroid Build Coastguard Worker; 1860*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_8i1_to_8i32: 1861*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 1862*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 1863*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movzbl (%eax), %eax 1864*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 1865*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl %ecx 1866*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 1867*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %edx 1868*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %edx 1869*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movd %edx, %xmm1 1870*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrw $1, %ecx, %xmm1 1871*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 1872*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $2, %ecx 1873*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 1874*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrw $2, %ecx, %xmm1 1875*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 1876*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $3, %ecx 1877*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 1878*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrw $3, %ecx, %xmm1 1879*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 1880*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $4, %ecx 1881*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 1882*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrw $4, %ecx, %xmm1 1883*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 1884*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $5, %ecx 1885*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 1886*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrw $5, %ecx, %xmm1 1887*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 1888*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $6, %ecx 1889*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 1890*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrw $6, %ecx, %xmm1 1891*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $7, %eax 1892*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrw $7, %eax, %xmm1 1893*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero 1894*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pslld $31, %xmm0 1895*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psrad $31, %xmm0 1896*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 1897*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pslld $31, %xmm1 1898*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psrad $31, %xmm1 1899*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 1900*9880d681SAndroid Build Coastguard Workerentry: 1901*9880d681SAndroid Build Coastguard Worker %X = load <8 x i1>, <8 x i1>* %ptr 1902*9880d681SAndroid Build Coastguard Worker %Y = sext <8 x i1> %X to <8 x i32> 1903*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Y 1904*9880d681SAndroid Build Coastguard Worker} 1905*9880d681SAndroid Build Coastguard Worker 1906*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @load_sext_8i8_to_8i32(<8 x i8> *%ptr) { 1907*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_8i8_to_8i32: 1908*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1909*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 1910*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 1911*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 1912*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm0 1913*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero 1914*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 1915*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3] 1916*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm1 1917*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 1918*9880d681SAndroid Build Coastguard Worker; 1919*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_8i8_to_8i32: 1920*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 1921*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 1922*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 1923*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 1924*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm0 1925*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero 1926*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 1927*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3] 1928*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm1 1929*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 1930*9880d681SAndroid Build Coastguard Worker; 1931*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_8i8_to_8i32: 1932*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 1933*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbd (%rdi), %xmm0 1934*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbd 4(%rdi), %xmm1 1935*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 1936*9880d681SAndroid Build Coastguard Worker; 1937*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_8i8_to_8i32: 1938*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 1939*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbw (%rdi), %xmm0 1940*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxwd %xmm0, %xmm1 1941*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 1942*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxwd %xmm0, %xmm0 1943*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1944*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1945*9880d681SAndroid Build Coastguard Worker; 1946*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_8i8_to_8i32: 1947*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 1948*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxbd (%rdi), %ymm0 1949*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1950*9880d681SAndroid Build Coastguard Worker; 1951*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_8i8_to_8i32: 1952*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 1953*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxbd (%rdi), %ymm0 1954*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 1955*9880d681SAndroid Build Coastguard Worker; 1956*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_8i8_to_8i32: 1957*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 1958*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 1959*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbd (%eax), %xmm0 1960*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbd 4(%eax), %xmm1 1961*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 1962*9880d681SAndroid Build Coastguard Workerentry: 1963*9880d681SAndroid Build Coastguard Worker %X = load <8 x i8>, <8 x i8>* %ptr 1964*9880d681SAndroid Build Coastguard Worker %Y = sext <8 x i8> %X to <8 x i32> 1965*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Y 1966*9880d681SAndroid Build Coastguard Worker} 1967*9880d681SAndroid Build Coastguard Worker 1968*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @load_sext_16i1_to_16i8(<16 x i1> *%ptr) nounwind readnone { 1969*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_16i1_to_16i8: 1970*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 1971*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pushq %rbp 1972*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pushq %r15 1973*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pushq %r14 1974*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pushq %r13 1975*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pushq %r12 1976*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pushq %rbx 1977*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movswq (%rdi), %rax 1978*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %r8 1979*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %r9 1980*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %r10 1981*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %r11 1982*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %r14 1983*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %r15 1984*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %r12 1985*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %r13 1986*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rbx 1987*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rcx 1988*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rdx 1989*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rsi 1990*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rdi 1991*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rbp 1992*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $49, %rbp 1993*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rbp 1994*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ebp, %xmm0 1995*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rax, %rbp 1996*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq %al, %rax 1997*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $57, %r8 1998*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r8 1999*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r8d, %xmm1 2000*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $53, %r9 2001*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r9 2002*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r9d, %xmm2 2003*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $61, %r10 2004*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r10 2005*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r10d, %xmm3 2006*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $51, %r11 2007*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r11 2008*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r11d, %xmm4 2009*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2010*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $59, %r14 2011*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r14 2012*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r14d, %xmm5 2013*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 2014*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $55, %r15 2015*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r15 2016*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r15d, %xmm2 2017*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3],xmm3[4],xmm1[4],xmm3[5],xmm1[5],xmm3[6],xmm1[6],xmm3[7],xmm1[7] 2018*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $63, %r12 2019*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r12 2020*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r12d, %xmm0 2021*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3],xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7] 2022*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $50, %r13 2023*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r13 2024*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r13d, %xmm1 2025*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] 2026*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $58, %rbx 2027*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rbx 2028*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ebx, %xmm2 2029*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3],xmm0[4],xmm5[4],xmm0[5],xmm5[5],xmm0[6],xmm5[6],xmm0[7],xmm5[7] 2030*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $54, %rcx 2031*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rcx 2032*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm4 2033*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7] 2034*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $62, %rdx 2035*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rdx 2036*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %edx, %xmm3 2037*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7] 2038*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $52, %rsi 2039*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rsi 2040*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %esi, %xmm1 2041*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] 2042*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $60, %rdi 2043*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rdi 2044*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %edi, %xmm4 2045*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 2046*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3],xmm4[4],xmm1[4],xmm4[5],xmm1[5],xmm4[6],xmm1[6],xmm4[7],xmm1[7] 2047*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrq $15, %rbp 2048*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ebp, %xmm1 2049*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrq $7, %rax 2050*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm2 2051*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7] 2052*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3],xmm4[4],xmm2[4],xmm4[5],xmm2[5],xmm4[6],xmm2[6],xmm4[7],xmm2[7] 2053*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] 2054*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7] 2055*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: popq %rbx 2056*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: popq %r12 2057*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: popq %r13 2058*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: popq %r14 2059*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: popq %r15 2060*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: popq %rbp 2061*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 2062*9880d681SAndroid Build Coastguard Worker; 2063*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_16i1_to_16i8: 2064*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 2065*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pushq %rbp 2066*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pushq %r15 2067*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pushq %r14 2068*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pushq %r13 2069*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pushq %r12 2070*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pushq %rbx 2071*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movswq (%rdi), %rax 2072*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %r8 2073*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %r9 2074*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %r10 2075*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %r11 2076*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %r14 2077*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %r15 2078*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %r12 2079*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %r13 2080*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rbx 2081*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rcx 2082*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rdx 2083*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rsi 2084*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rdi 2085*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rbp 2086*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $49, %rbp 2087*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rbp 2088*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ebp, %xmm0 2089*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rax, %rbp 2090*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq %al, %rax 2091*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $57, %r8 2092*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r8 2093*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r8d, %xmm1 2094*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $53, %r9 2095*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r9 2096*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r9d, %xmm2 2097*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $61, %r10 2098*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r10 2099*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r10d, %xmm3 2100*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $51, %r11 2101*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r11 2102*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r11d, %xmm4 2103*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2104*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $59, %r14 2105*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r14 2106*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r14d, %xmm5 2107*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 2108*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $55, %r15 2109*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r15 2110*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r15d, %xmm2 2111*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3],xmm3[4],xmm1[4],xmm3[5],xmm1[5],xmm3[6],xmm1[6],xmm3[7],xmm1[7] 2112*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $63, %r12 2113*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r12 2114*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r12d, %xmm0 2115*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3],xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7] 2116*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $50, %r13 2117*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r13 2118*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r13d, %xmm1 2119*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] 2120*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $58, %rbx 2121*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rbx 2122*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ebx, %xmm2 2123*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3],xmm0[4],xmm5[4],xmm0[5],xmm5[5],xmm0[6],xmm5[6],xmm0[7],xmm5[7] 2124*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $54, %rcx 2125*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rcx 2126*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm4 2127*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7] 2128*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $62, %rdx 2129*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rdx 2130*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %edx, %xmm3 2131*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7] 2132*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $52, %rsi 2133*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rsi 2134*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %esi, %xmm1 2135*9880d681SAndroid Build Coastguard Worker; SSSE3-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] 2136*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $60, %rdi 2137*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rdi 2138*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %edi, %xmm4 2139*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 2140*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3],xmm4[4],xmm1[4],xmm4[5],xmm1[5],xmm4[6],xmm1[6],xmm4[7],xmm1[7] 2141*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrq $15, %rbp 2142*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ebp, %xmm1 2143*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrq $7, %rax 2144*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm2 2145*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7] 2146*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3],xmm4[4],xmm2[4],xmm4[5],xmm2[5],xmm4[6],xmm2[6],xmm4[7],xmm2[7] 2147*9880d681SAndroid Build Coastguard Worker; SSSE3-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] 2148*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7] 2149*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: popq %rbx 2150*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: popq %r12 2151*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: popq %r13 2152*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: popq %r14 2153*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: popq %r15 2154*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: popq %rbp 2155*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 2156*9880d681SAndroid Build Coastguard Worker; 2157*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_16i1_to_16i8: 2158*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 2159*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movswq (%rdi), %rax 2160*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 2161*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $62, %rcx 2162*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 2163*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rdx 2164*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $63, %rdx 2165*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rdx 2166*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movd %edx, %xmm0 2167*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $1, %ecx, %xmm0 2168*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 2169*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $61, %rcx 2170*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 2171*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $2, %ecx, %xmm0 2172*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 2173*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $60, %rcx 2174*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 2175*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $3, %ecx, %xmm0 2176*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 2177*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $59, %rcx 2178*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 2179*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $4, %ecx, %xmm0 2180*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 2181*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $58, %rcx 2182*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 2183*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $5, %ecx, %xmm0 2184*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 2185*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $57, %rcx 2186*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 2187*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $6, %ecx, %xmm0 2188*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movsbq %al, %rcx 2189*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrq $7, %rcx 2190*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $7, %ecx, %xmm0 2191*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 2192*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $55, %rcx 2193*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 2194*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $8, %ecx, %xmm0 2195*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 2196*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $54, %rcx 2197*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 2198*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $9, %ecx, %xmm0 2199*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 2200*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $53, %rcx 2201*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 2202*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $10, %ecx, %xmm0 2203*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 2204*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $52, %rcx 2205*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 2206*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $11, %ecx, %xmm0 2207*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 2208*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $51, %rcx 2209*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 2210*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $12, %ecx, %xmm0 2211*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 2212*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $50, %rcx 2213*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 2214*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $13, %ecx, %xmm0 2215*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 2216*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $49, %rcx 2217*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 2218*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $14, %ecx, %xmm0 2219*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrq $15, %rax 2220*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $15, %eax, %xmm0 2221*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 2222*9880d681SAndroid Build Coastguard Worker; 2223*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_16i1_to_16i8: 2224*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 2225*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movswq (%rdi), %rax 2226*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2227*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $62, %rcx 2228*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2229*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rdx 2230*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $63, %rdx 2231*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rdx 2232*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovd %edx, %xmm0 2233*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $1, %ecx, %xmm0, %xmm0 2234*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2235*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $61, %rcx 2236*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2237*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $2, %ecx, %xmm0, %xmm0 2238*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2239*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $60, %rcx 2240*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2241*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $3, %ecx, %xmm0, %xmm0 2242*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2243*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $59, %rcx 2244*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2245*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $4, %ecx, %xmm0, %xmm0 2246*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2247*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $58, %rcx 2248*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2249*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $5, %ecx, %xmm0, %xmm0 2250*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2251*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $57, %rcx 2252*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2253*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $6, %ecx, %xmm0, %xmm0 2254*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movsbq %al, %rcx 2255*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shrq $7, %rcx 2256*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $7, %ecx, %xmm0, %xmm0 2257*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2258*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $55, %rcx 2259*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2260*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $8, %ecx, %xmm0, %xmm0 2261*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2262*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $54, %rcx 2263*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2264*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $9, %ecx, %xmm0, %xmm0 2265*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2266*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $53, %rcx 2267*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2268*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $10, %ecx, %xmm0, %xmm0 2269*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2270*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $52, %rcx 2271*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2272*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $11, %ecx, %xmm0, %xmm0 2273*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2274*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $51, %rcx 2275*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2276*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $12, %ecx, %xmm0, %xmm0 2277*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2278*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $50, %rcx 2279*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2280*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $13, %ecx, %xmm0, %xmm0 2281*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2282*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $49, %rcx 2283*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2284*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $14, %ecx, %xmm0, %xmm0 2285*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shrq $15, %rax 2286*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $15, %eax, %xmm0, %xmm0 2287*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2288*9880d681SAndroid Build Coastguard Worker; 2289*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_16i1_to_16i8: 2290*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 2291*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movswq (%rdi), %rax 2292*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2293*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $62, %rcx 2294*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2295*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rdx 2296*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $63, %rdx 2297*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rdx 2298*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovd %edx, %xmm0 2299*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $1, %ecx, %xmm0, %xmm0 2300*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2301*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $61, %rcx 2302*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2303*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $2, %ecx, %xmm0, %xmm0 2304*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2305*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $60, %rcx 2306*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2307*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $3, %ecx, %xmm0, %xmm0 2308*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2309*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $59, %rcx 2310*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2311*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $4, %ecx, %xmm0, %xmm0 2312*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2313*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $58, %rcx 2314*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2315*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $5, %ecx, %xmm0, %xmm0 2316*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2317*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $57, %rcx 2318*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2319*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $6, %ecx, %xmm0, %xmm0 2320*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movsbq %al, %rcx 2321*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shrq $7, %rcx 2322*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $7, %ecx, %xmm0, %xmm0 2323*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2324*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $55, %rcx 2325*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2326*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $8, %ecx, %xmm0, %xmm0 2327*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2328*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $54, %rcx 2329*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2330*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $9, %ecx, %xmm0, %xmm0 2331*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2332*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $53, %rcx 2333*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2334*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $10, %ecx, %xmm0, %xmm0 2335*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2336*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $52, %rcx 2337*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2338*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $11, %ecx, %xmm0, %xmm0 2339*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2340*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $51, %rcx 2341*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2342*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $12, %ecx, %xmm0, %xmm0 2343*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2344*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $50, %rcx 2345*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2346*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $13, %ecx, %xmm0, %xmm0 2347*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2348*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $49, %rcx 2349*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2350*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $14, %ecx, %xmm0, %xmm0 2351*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shrq $15, %rax 2352*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $15, %eax, %xmm0, %xmm0 2353*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2354*9880d681SAndroid Build Coastguard Worker; 2355*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_16i1_to_16i8: 2356*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 2357*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: kmovw (%rdi), %k1 2358*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 2359*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z} 2360*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovdb %zmm0, %xmm0 2361*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 2362*9880d681SAndroid Build Coastguard Worker; 2363*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_16i1_to_16i8: 2364*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 2365*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 2366*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movswl (%eax), %eax 2367*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2368*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $30, %ecx 2369*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 2370*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %edx 2371*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $31, %edx 2372*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 2373*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movd %edx, %xmm0 2374*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $1, %ecx, %xmm0 2375*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2376*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $29, %ecx 2377*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 2378*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $2, %ecx, %xmm0 2379*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2380*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $28, %ecx 2381*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 2382*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $3, %ecx, %xmm0 2383*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2384*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $27, %ecx 2385*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 2386*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $4, %ecx, %xmm0 2387*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2388*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $26, %ecx 2389*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 2390*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $5, %ecx, %xmm0 2391*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2392*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $25, %ecx 2393*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 2394*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $6, %ecx, %xmm0 2395*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movsbl %al, %ecx 2396*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $7, %ecx 2397*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $7, %ecx, %xmm0 2398*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2399*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $23, %ecx 2400*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 2401*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $8, %ecx, %xmm0 2402*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2403*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $22, %ecx 2404*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 2405*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $9, %ecx, %xmm0 2406*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2407*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $21, %ecx 2408*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 2409*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $10, %ecx, %xmm0 2410*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2411*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $20, %ecx 2412*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 2413*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $11, %ecx, %xmm0 2414*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2415*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $19, %ecx 2416*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 2417*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $12, %ecx, %xmm0 2418*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2419*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $18, %ecx 2420*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 2421*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $13, %ecx, %xmm0 2422*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2423*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $17, %ecx 2424*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 2425*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $14, %ecx, %xmm0 2426*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $15, %eax 2427*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $15, %eax, %xmm0 2428*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 2429*9880d681SAndroid Build Coastguard Workerentry: 2430*9880d681SAndroid Build Coastguard Worker %X = load <16 x i1>, <16 x i1>* %ptr 2431*9880d681SAndroid Build Coastguard Worker %Y = sext <16 x i1> %X to <16 x i8> 2432*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %Y 2433*9880d681SAndroid Build Coastguard Worker} 2434*9880d681SAndroid Build Coastguard Worker 2435*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @load_sext_16i1_to_16i16(<16 x i1> *%ptr) { 2436*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_16i1_to_16i16: 2437*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 2438*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movzwl (%rdi), %eax 2439*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2440*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $14, %ecx 2441*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2442*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 2443*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2444*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $6, %ecx 2445*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2446*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm1 2447*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2448*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2449*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $10, %ecx 2450*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2451*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 2452*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2453*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $2, %ecx 2454*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2455*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm2 2456*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2457*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7] 2458*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2459*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $12, %ecx 2460*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2461*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 2462*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2463*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $4, %ecx 2464*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2465*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm3 2466*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7] 2467*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2468*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2469*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm1 2470*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2471*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $8, %ecx 2472*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2473*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 2474*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2475*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7] 2476*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] 2477*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2478*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $13, %ecx 2479*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2480*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 2481*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2482*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $5, %ecx 2483*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2484*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm2 2485*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2486*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2487*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $9, %ecx 2488*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2489*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm3 2490*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2491*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl %ecx 2492*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2493*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm0 2494*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7] 2495*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] 2496*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2497*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $11, %ecx 2498*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2499*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm2 2500*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2501*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $3, %ecx 2502*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2503*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm3 2504*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 2505*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movl %eax, %ecx 2506*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $7, %ecx 2507*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: andl $1, %ecx 2508*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm2 2509*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrl $15, %eax 2510*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movzwl %ax, %eax 2511*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm4 2512*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3],xmm2[4],xmm4[4],xmm2[5],xmm4[5],xmm2[6],xmm4[6],xmm2[7],xmm4[7] 2513*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 2514*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7] 2515*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2516*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm0 2517*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 2518*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psllw $15, %xmm0 2519*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psraw $15, %xmm0 2520*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15] 2521*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psllw $15, %xmm1 2522*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psraw $15, %xmm1 2523*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 2524*9880d681SAndroid Build Coastguard Worker; 2525*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_16i1_to_16i16: 2526*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 2527*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movzwl (%rdi), %eax 2528*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2529*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $14, %ecx 2530*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2531*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 2532*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2533*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $6, %ecx 2534*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2535*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm1 2536*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2537*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2538*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $10, %ecx 2539*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2540*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 2541*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2542*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $2, %ecx 2543*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2544*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm2 2545*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2546*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7] 2547*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2548*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $12, %ecx 2549*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2550*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 2551*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2552*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $4, %ecx 2553*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2554*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm3 2555*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7] 2556*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2557*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2558*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm1 2559*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2560*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $8, %ecx 2561*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2562*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 2563*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2564*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7] 2565*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] 2566*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2567*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $13, %ecx 2568*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2569*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 2570*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2571*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $5, %ecx 2572*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2573*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm2 2574*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2575*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2576*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $9, %ecx 2577*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2578*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm3 2579*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2580*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl %ecx 2581*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2582*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm0 2583*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7] 2584*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] 2585*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2586*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $11, %ecx 2587*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2588*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm2 2589*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2590*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $3, %ecx 2591*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2592*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm3 2593*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 2594*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movl %eax, %ecx 2595*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $7, %ecx 2596*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: andl $1, %ecx 2597*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm2 2598*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrl $15, %eax 2599*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movzwl %ax, %eax 2600*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm4 2601*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3],xmm2[4],xmm4[4],xmm2[5],xmm4[5],xmm2[6],xmm4[6],xmm2[7],xmm4[7] 2602*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 2603*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7] 2604*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2605*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm0 2606*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 2607*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psllw $15, %xmm0 2608*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psraw $15, %xmm0 2609*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15] 2610*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psllw $15, %xmm1 2611*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psraw $15, %xmm1 2612*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 2613*9880d681SAndroid Build Coastguard Worker; 2614*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_16i1_to_16i16: 2615*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 2616*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movzwl (%rdi), %eax 2617*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 2618*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl %ecx 2619*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 2620*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %edx 2621*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %edx 2622*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movd %edx, %xmm1 2623*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $1, %ecx, %xmm1 2624*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 2625*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $2, %ecx 2626*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 2627*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $2, %ecx, %xmm1 2628*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 2629*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $3, %ecx 2630*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 2631*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $3, %ecx, %xmm1 2632*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 2633*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $4, %ecx 2634*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 2635*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $4, %ecx, %xmm1 2636*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 2637*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $5, %ecx 2638*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 2639*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $5, %ecx, %xmm1 2640*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 2641*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $6, %ecx 2642*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 2643*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $6, %ecx, %xmm1 2644*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 2645*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $7, %ecx 2646*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 2647*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $7, %ecx, %xmm1 2648*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 2649*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $8, %ecx 2650*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 2651*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $8, %ecx, %xmm1 2652*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 2653*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $9, %ecx 2654*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 2655*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $9, %ecx, %xmm1 2656*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 2657*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $10, %ecx 2658*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 2659*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $10, %ecx, %xmm1 2660*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 2661*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $11, %ecx 2662*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 2663*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $11, %ecx, %xmm1 2664*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 2665*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $12, %ecx 2666*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 2667*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $12, %ecx, %xmm1 2668*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 2669*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $13, %ecx 2670*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 2671*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $13, %ecx, %xmm1 2672*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movl %eax, %ecx 2673*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $14, %ecx 2674*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: andl $1, %ecx 2675*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $14, %ecx, %xmm1 2676*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrl $15, %eax 2677*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movzwl %ax, %eax 2678*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $15, %eax, %xmm1 2679*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 2680*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psllw $15, %xmm0 2681*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psraw $15, %xmm0 2682*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15] 2683*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psllw $15, %xmm1 2684*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psraw $15, %xmm1 2685*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 2686*9880d681SAndroid Build Coastguard Worker; 2687*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_16i1_to_16i16: 2688*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 2689*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: pushq %rbp 2690*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .Ltmp0: 2691*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .cfi_def_cfa_offset 16 2692*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: pushq %r15 2693*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .Ltmp1: 2694*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .cfi_def_cfa_offset 24 2695*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: pushq %r14 2696*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .Ltmp2: 2697*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .cfi_def_cfa_offset 32 2698*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: pushq %r13 2699*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .Ltmp3: 2700*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .cfi_def_cfa_offset 40 2701*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: pushq %r12 2702*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .Ltmp4: 2703*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .cfi_def_cfa_offset 48 2704*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: pushq %rbx 2705*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .Ltmp5: 2706*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .cfi_def_cfa_offset 56 2707*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .Ltmp6: 2708*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .cfi_offset %rbx, -56 2709*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .Ltmp7: 2710*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .cfi_offset %r12, -48 2711*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .Ltmp8: 2712*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .cfi_offset %r13, -40 2713*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .Ltmp9: 2714*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .cfi_offset %r14, -32 2715*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .Ltmp10: 2716*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .cfi_offset %r15, -24 2717*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .Ltmp11: 2718*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: .cfi_offset %rbp, -16 2719*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movswq (%rdi), %rax 2720*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2721*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $55, %rcx 2722*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2723*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovd %ecx, %xmm0 2724*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r8 2725*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r10 2726*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r11 2727*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r14 2728*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r15 2729*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r9 2730*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r12 2731*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r13 2732*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rbx 2733*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rdi 2734*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 2735*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rdx 2736*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rsi 2737*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movsbq %al, %rbp 2738*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $54, %rax 2739*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rax 2740*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $1, %eax, %xmm0, %xmm0 2741*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $53, %r8 2742*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r8 2743*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $2, %r8d, %xmm0, %xmm0 2744*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $52, %r10 2745*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r10 2746*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $3, %r10d, %xmm0, %xmm0 2747*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $51, %r11 2748*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r11 2749*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $4, %r11d, %xmm0, %xmm0 2750*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $50, %r14 2751*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r14 2752*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $5, %r14d, %xmm0, %xmm0 2753*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $49, %r15 2754*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r15 2755*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $6, %r15d, %xmm0, %xmm0 2756*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shrq $15, %r9 2757*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $7, %r9d, %xmm0, %xmm0 2758*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $63, %r13 2759*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r13 2760*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovd %r13d, %xmm1 2761*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $62, %r12 2762*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r12 2763*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $1, %r12d, %xmm1, %xmm1 2764*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $61, %rbx 2765*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rbx 2766*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $2, %ebx, %xmm1, %xmm1 2767*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $60, %rdi 2768*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rdi 2769*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $3, %edi, %xmm1, %xmm1 2770*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $59, %rcx 2771*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 2772*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $4, %ecx, %xmm1, %xmm1 2773*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $58, %rdx 2774*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rdx 2775*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $5, %edx, %xmm1, %xmm1 2776*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $57, %rsi 2777*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rsi 2778*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $6, %esi, %xmm1, %xmm1 2779*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shrq $7, %rbp 2780*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrw $7, %ebp, %xmm1, %xmm1 2781*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 2782*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: popq %rbx 2783*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: popq %r12 2784*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: popq %r13 2785*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: popq %r14 2786*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: popq %r15 2787*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: popq %rbp 2788*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2789*9880d681SAndroid Build Coastguard Worker; 2790*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_16i1_to_16i16: 2791*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 2792*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: pushq %rbp 2793*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .Ltmp0: 2794*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .cfi_def_cfa_offset 16 2795*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: pushq %r15 2796*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .Ltmp1: 2797*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .cfi_def_cfa_offset 24 2798*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: pushq %r14 2799*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .Ltmp2: 2800*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .cfi_def_cfa_offset 32 2801*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: pushq %r13 2802*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .Ltmp3: 2803*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .cfi_def_cfa_offset 40 2804*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: pushq %r12 2805*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .Ltmp4: 2806*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .cfi_def_cfa_offset 48 2807*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: pushq %rbx 2808*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .Ltmp5: 2809*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .cfi_def_cfa_offset 56 2810*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .Ltmp6: 2811*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .cfi_offset %rbx, -56 2812*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .Ltmp7: 2813*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .cfi_offset %r12, -48 2814*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .Ltmp8: 2815*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .cfi_offset %r13, -40 2816*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .Ltmp9: 2817*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .cfi_offset %r14, -32 2818*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .Ltmp10: 2819*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .cfi_offset %r15, -24 2820*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .Ltmp11: 2821*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: .cfi_offset %rbp, -16 2822*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movswq (%rdi), %rax 2823*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2824*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $55, %rcx 2825*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2826*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovd %ecx, %xmm0 2827*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r8 2828*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r10 2829*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r11 2830*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r14 2831*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r15 2832*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r9 2833*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r12 2834*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r13 2835*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rbx 2836*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rdi 2837*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 2838*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rdx 2839*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rsi 2840*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movsbq %al, %rbp 2841*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $54, %rax 2842*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rax 2843*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $1, %eax, %xmm0, %xmm0 2844*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $53, %r8 2845*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r8 2846*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $2, %r8d, %xmm0, %xmm0 2847*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $52, %r10 2848*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r10 2849*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $3, %r10d, %xmm0, %xmm0 2850*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $51, %r11 2851*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r11 2852*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $4, %r11d, %xmm0, %xmm0 2853*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $50, %r14 2854*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r14 2855*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $5, %r14d, %xmm0, %xmm0 2856*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $49, %r15 2857*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r15 2858*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $6, %r15d, %xmm0, %xmm0 2859*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shrq $15, %r9 2860*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $7, %r9d, %xmm0, %xmm0 2861*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $63, %r13 2862*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r13 2863*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovd %r13d, %xmm1 2864*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $62, %r12 2865*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r12 2866*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $1, %r12d, %xmm1, %xmm1 2867*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $61, %rbx 2868*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rbx 2869*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $2, %ebx, %xmm1, %xmm1 2870*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $60, %rdi 2871*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rdi 2872*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $3, %edi, %xmm1, %xmm1 2873*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $59, %rcx 2874*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 2875*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $4, %ecx, %xmm1, %xmm1 2876*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $58, %rdx 2877*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rdx 2878*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $5, %edx, %xmm1, %xmm1 2879*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $57, %rsi 2880*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rsi 2881*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $6, %esi, %xmm1, %xmm1 2882*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shrq $7, %rbp 2883*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrw $7, %ebp, %xmm1, %xmm1 2884*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 2885*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: popq %rbx 2886*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: popq %r12 2887*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: popq %r13 2888*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: popq %r14 2889*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: popq %r15 2890*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: popq %rbp 2891*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2892*9880d681SAndroid Build Coastguard Worker; 2893*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_16i1_to_16i16: 2894*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 2895*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: kmovw (%rdi), %k1 2896*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 2897*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z} 2898*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovdw %zmm0, %ymm0 2899*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 2900*9880d681SAndroid Build Coastguard Worker; 2901*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_16i1_to_16i16: 2902*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 2903*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 2904*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movzwl (%eax), %eax 2905*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2906*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl %ecx 2907*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 2908*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %edx 2909*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %edx 2910*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movd %edx, %xmm1 2911*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $1, %ecx, %xmm1 2912*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2913*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $2, %ecx 2914*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 2915*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $2, %ecx, %xmm1 2916*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2917*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $3, %ecx 2918*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 2919*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $3, %ecx, %xmm1 2920*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2921*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $4, %ecx 2922*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 2923*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $4, %ecx, %xmm1 2924*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2925*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $5, %ecx 2926*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 2927*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $5, %ecx, %xmm1 2928*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2929*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $6, %ecx 2930*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 2931*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $6, %ecx, %xmm1 2932*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2933*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $7, %ecx 2934*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 2935*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $7, %ecx, %xmm1 2936*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2937*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $8, %ecx 2938*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 2939*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $8, %ecx, %xmm1 2940*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2941*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $9, %ecx 2942*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 2943*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $9, %ecx, %xmm1 2944*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2945*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $10, %ecx 2946*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 2947*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $10, %ecx, %xmm1 2948*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2949*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $11, %ecx 2950*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 2951*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $11, %ecx, %xmm1 2952*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2953*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $12, %ecx 2954*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 2955*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $12, %ecx, %xmm1 2956*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2957*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $13, %ecx 2958*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 2959*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $13, %ecx, %xmm1 2960*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 2961*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $14, %ecx 2962*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: andl $1, %ecx 2963*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $14, %ecx, %xmm1 2964*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $15, %eax 2965*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $15, %eax, %xmm1 2966*9880d681SAndroid Build Coastguard Worker; X32-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 2967*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psllw $15, %xmm0 2968*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psraw $15, %xmm0 2969*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15] 2970*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psllw $15, %xmm1 2971*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psraw $15, %xmm1 2972*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 2973*9880d681SAndroid Build Coastguard Workerentry: 2974*9880d681SAndroid Build Coastguard Worker %X = load <16 x i1>, <16 x i1>* %ptr 2975*9880d681SAndroid Build Coastguard Worker %Y = sext <16 x i1> %X to <16 x i16> 2976*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %Y 2977*9880d681SAndroid Build Coastguard Worker} 2978*9880d681SAndroid Build Coastguard Worker 2979*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @load_sext_32i1_to_32i8(<32 x i1> *%ptr) nounwind readnone { 2980*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_32i1_to_32i8: 2981*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 2982*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pushq %rbp 2983*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pushq %r15 2984*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pushq %r14 2985*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pushq %r13 2986*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pushq %r12 2987*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pushq %rbx 2988*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movswq (%rdi), %rbx 2989*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %r10 2990*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %r8 2991*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %r9 2992*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %r11 2993*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %r14 2994*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %r15 2995*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %r12 2996*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %r13 2997*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %rdx 2998*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %rsi 2999*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %rcx 3000*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %rbp 3001*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %rax 3002*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $49, %rax 3003*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rax 3004*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm0 3005*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %rax 3006*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $57, %r10 3007*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r10 3008*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r10d, %xmm15 3009*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rbx, %r10 3010*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq %bl, %rbx 3011*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm15 = xmm15[0],xmm0[0],xmm15[1],xmm0[1],xmm15[2],xmm0[2],xmm15[3],xmm0[3],xmm15[4],xmm0[4],xmm15[5],xmm0[5],xmm15[6],xmm0[6],xmm15[7],xmm0[7] 3012*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $53, %r8 3013*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r8 3014*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r8d, %xmm8 3015*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $61, %r9 3016*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r9 3017*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r9d, %xmm2 3018*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $51, %r11 3019*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r11 3020*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r11d, %xmm9 3021*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $59, %r14 3022*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r14 3023*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r14d, %xmm5 3024*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $55, %r15 3025*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r15 3026*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r15d, %xmm10 3027*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $63, %r12 3028*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r12 3029*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r12d, %xmm0 3030*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $50, %r13 3031*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r13 3032*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r13d, %xmm11 3033*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $58, %rdx 3034*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rdx 3035*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %edx, %xmm4 3036*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $54, %rsi 3037*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rsi 3038*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %esi, %xmm12 3039*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $62, %rcx 3040*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rcx 3041*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm6 3042*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $52, %rbp 3043*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rbp 3044*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ebp, %xmm13 3045*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $60, %rax 3046*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rax 3047*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm7 3048*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrq $15, %r10 3049*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r10d, %xmm14 3050*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrq $7, %rbx 3051*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ebx, %xmm3 3052*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movswq 2(%rdi), %rdx 3053*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %r8 3054*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %r9 3055*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %r10 3056*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %r11 3057*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %r14 3058*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %r15 3059*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %r12 3060*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %r13 3061*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %rbx 3062*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %rax 3063*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %rcx 3064*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %rsi 3065*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %rdi 3066*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %rbp 3067*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $49, %rbp 3068*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rbp 3069*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ebp, %xmm1 3070*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq %rdx, %rbp 3071*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsbq %dl, %rdx 3072*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3],xmm2[4],xmm8[4],xmm2[5],xmm8[5],xmm2[6],xmm8[6],xmm2[7],xmm8[7] 3073*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm15[0],xmm2[1],xmm15[1],xmm2[2],xmm15[2],xmm2[3],xmm15[3],xmm2[4],xmm15[4],xmm2[5],xmm15[5],xmm2[6],xmm15[6],xmm2[7],xmm15[7] 3074*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm9[0],xmm5[1],xmm9[1],xmm5[2],xmm9[2],xmm5[3],xmm9[3],xmm5[4],xmm9[4],xmm5[5],xmm9[5],xmm5[6],xmm9[6],xmm5[7],xmm9[7] 3075*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm10[0],xmm0[1],xmm10[1],xmm0[2],xmm10[2],xmm0[3],xmm10[3],xmm0[4],xmm10[4],xmm0[5],xmm10[5],xmm0[6],xmm10[6],xmm0[7],xmm10[7] 3076*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3],xmm0[4],xmm5[4],xmm0[5],xmm5[5],xmm0[6],xmm5[6],xmm0[7],xmm5[7] 3077*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] 3078*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm11[0],xmm4[1],xmm11[1],xmm4[2],xmm11[2],xmm4[3],xmm11[3],xmm4[4],xmm11[4],xmm4[5],xmm11[5],xmm4[6],xmm11[6],xmm4[7],xmm11[7] 3079*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm12[0],xmm6[1],xmm12[1],xmm6[2],xmm12[2],xmm6[3],xmm12[3],xmm6[4],xmm12[4],xmm6[5],xmm12[5],xmm6[6],xmm12[6],xmm6[7],xmm12[7] 3080*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm4[0],xmm6[1],xmm4[1],xmm6[2],xmm4[2],xmm6[3],xmm4[3],xmm6[4],xmm4[4],xmm6[5],xmm4[5],xmm6[6],xmm4[6],xmm6[7],xmm4[7] 3081*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm13[0],xmm7[1],xmm13[1],xmm7[2],xmm13[2],xmm7[3],xmm13[3],xmm7[4],xmm13[4],xmm7[5],xmm13[5],xmm7[6],xmm13[6],xmm7[7],xmm13[7] 3082*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm14[0],xmm3[1],xmm14[1],xmm3[2],xmm14[2],xmm3[3],xmm14[3],xmm3[4],xmm14[4],xmm3[5],xmm14[5],xmm3[6],xmm14[6],xmm3[7],xmm14[7] 3083*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $57, %r8 3084*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r8 3085*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r8d, %xmm2 3086*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm3[0],xmm7[1],xmm3[1],xmm7[2],xmm3[2],xmm7[3],xmm3[3],xmm7[4],xmm3[4],xmm7[5],xmm3[5],xmm7[6],xmm3[6],xmm7[7],xmm3[7] 3087*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $53, %r9 3088*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r9 3089*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r9d, %xmm3 3090*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1],xmm6[2],xmm7[2],xmm6[3],xmm7[3],xmm6[4],xmm7[4],xmm6[5],xmm7[5],xmm6[6],xmm7[6],xmm6[7],xmm7[7] 3091*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $61, %r10 3092*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r10 3093*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r10d, %xmm4 3094*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3],xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7] 3095*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $51, %r11 3096*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r11 3097*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r11d, %xmm5 3098*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7] 3099*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $59, %r14 3100*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r14 3101*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r14d, %xmm6 3102*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7] 3103*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $55, %r15 3104*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r15 3105*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r15d, %xmm3 3106*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3],xmm4[4],xmm2[4],xmm4[5],xmm2[5],xmm4[6],xmm2[6],xmm4[7],xmm2[7] 3107*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $63, %r12 3108*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r12 3109*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r12d, %xmm1 3110*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm5[0],xmm6[1],xmm5[1],xmm6[2],xmm5[2],xmm6[3],xmm5[3],xmm6[4],xmm5[4],xmm6[5],xmm5[5],xmm6[6],xmm5[6],xmm6[7],xmm5[7] 3111*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $50, %r13 3112*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %r13 3113*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %r13d, %xmm2 3114*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7] 3115*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $58, %rbx 3116*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rbx 3117*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ebx, %xmm3 3118*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3],xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7] 3119*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $54, %rax 3120*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rax 3121*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm5 3122*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] 3123*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $62, %rcx 3124*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rcx 3125*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ecx, %xmm4 3126*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 3127*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $52, %rsi 3128*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rsi 3129*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %esi, %xmm2 3130*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3],xmm4[4],xmm5[4],xmm4[5],xmm5[5],xmm4[6],xmm5[6],xmm4[7],xmm5[7] 3131*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7] 3132*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shlq $60, %rdi 3133*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: sarq $63, %rdi 3134*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %edi, %xmm3 3135*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 3136*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrq $15, %rbp 3137*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %ebp, %xmm2 3138*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shrq $7, %rdx 3139*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %edx, %xmm5 3140*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3],xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7] 3141*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3],xmm3[4],xmm5[4],xmm3[5],xmm5[5],xmm3[6],xmm5[6],xmm3[7],xmm5[7] 3142*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7] 3143*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] 3144*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: popq %rbx 3145*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: popq %r12 3146*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: popq %r13 3147*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: popq %r14 3148*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: popq %r15 3149*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: popq %rbp 3150*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 3151*9880d681SAndroid Build Coastguard Worker; 3152*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_32i1_to_32i8: 3153*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 3154*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pushq %rbp 3155*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pushq %r15 3156*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pushq %r14 3157*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pushq %r13 3158*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pushq %r12 3159*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pushq %rbx 3160*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movswq (%rdi), %rbx 3161*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %r10 3162*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %r8 3163*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %r9 3164*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %r11 3165*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %r14 3166*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %r15 3167*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %r12 3168*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %r13 3169*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %rdx 3170*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %rsi 3171*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %rcx 3172*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %rbp 3173*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %rax 3174*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $49, %rax 3175*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rax 3176*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm0 3177*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %rax 3178*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $57, %r10 3179*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r10 3180*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r10d, %xmm15 3181*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rbx, %r10 3182*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq %bl, %rbx 3183*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm15 = xmm15[0],xmm0[0],xmm15[1],xmm0[1],xmm15[2],xmm0[2],xmm15[3],xmm0[3],xmm15[4],xmm0[4],xmm15[5],xmm0[5],xmm15[6],xmm0[6],xmm15[7],xmm0[7] 3184*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $53, %r8 3185*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r8 3186*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r8d, %xmm8 3187*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $61, %r9 3188*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r9 3189*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r9d, %xmm2 3190*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $51, %r11 3191*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r11 3192*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r11d, %xmm9 3193*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $59, %r14 3194*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r14 3195*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r14d, %xmm5 3196*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $55, %r15 3197*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r15 3198*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r15d, %xmm10 3199*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $63, %r12 3200*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r12 3201*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r12d, %xmm0 3202*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $50, %r13 3203*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r13 3204*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r13d, %xmm11 3205*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $58, %rdx 3206*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rdx 3207*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %edx, %xmm4 3208*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $54, %rsi 3209*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rsi 3210*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %esi, %xmm12 3211*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $62, %rcx 3212*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rcx 3213*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm6 3214*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $52, %rbp 3215*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rbp 3216*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ebp, %xmm13 3217*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $60, %rax 3218*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rax 3219*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm7 3220*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrq $15, %r10 3221*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r10d, %xmm14 3222*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrq $7, %rbx 3223*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ebx, %xmm3 3224*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movswq 2(%rdi), %rdx 3225*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %r8 3226*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %r9 3227*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %r10 3228*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %r11 3229*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %r14 3230*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %r15 3231*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %r12 3232*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %r13 3233*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %rbx 3234*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %rax 3235*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %rcx 3236*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %rsi 3237*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %rdi 3238*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %rbp 3239*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $49, %rbp 3240*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rbp 3241*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ebp, %xmm1 3242*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq %rdx, %rbp 3243*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsbq %dl, %rdx 3244*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3],xmm2[4],xmm8[4],xmm2[5],xmm8[5],xmm2[6],xmm8[6],xmm2[7],xmm8[7] 3245*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm15[0],xmm2[1],xmm15[1],xmm2[2],xmm15[2],xmm2[3],xmm15[3],xmm2[4],xmm15[4],xmm2[5],xmm15[5],xmm2[6],xmm15[6],xmm2[7],xmm15[7] 3246*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm9[0],xmm5[1],xmm9[1],xmm5[2],xmm9[2],xmm5[3],xmm9[3],xmm5[4],xmm9[4],xmm5[5],xmm9[5],xmm5[6],xmm9[6],xmm5[7],xmm9[7] 3247*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm10[0],xmm0[1],xmm10[1],xmm0[2],xmm10[2],xmm0[3],xmm10[3],xmm0[4],xmm10[4],xmm0[5],xmm10[5],xmm0[6],xmm10[6],xmm0[7],xmm10[7] 3248*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3],xmm0[4],xmm5[4],xmm0[5],xmm5[5],xmm0[6],xmm5[6],xmm0[7],xmm5[7] 3249*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] 3250*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm11[0],xmm4[1],xmm11[1],xmm4[2],xmm11[2],xmm4[3],xmm11[3],xmm4[4],xmm11[4],xmm4[5],xmm11[5],xmm4[6],xmm11[6],xmm4[7],xmm11[7] 3251*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm12[0],xmm6[1],xmm12[1],xmm6[2],xmm12[2],xmm6[3],xmm12[3],xmm6[4],xmm12[4],xmm6[5],xmm12[5],xmm6[6],xmm12[6],xmm6[7],xmm12[7] 3252*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm4[0],xmm6[1],xmm4[1],xmm6[2],xmm4[2],xmm6[3],xmm4[3],xmm6[4],xmm4[4],xmm6[5],xmm4[5],xmm6[6],xmm4[6],xmm6[7],xmm4[7] 3253*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm13[0],xmm7[1],xmm13[1],xmm7[2],xmm13[2],xmm7[3],xmm13[3],xmm7[4],xmm13[4],xmm7[5],xmm13[5],xmm7[6],xmm13[6],xmm7[7],xmm13[7] 3254*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm14[0],xmm3[1],xmm14[1],xmm3[2],xmm14[2],xmm3[3],xmm14[3],xmm3[4],xmm14[4],xmm3[5],xmm14[5],xmm3[6],xmm14[6],xmm3[7],xmm14[7] 3255*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $57, %r8 3256*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r8 3257*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r8d, %xmm2 3258*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm3[0],xmm7[1],xmm3[1],xmm7[2],xmm3[2],xmm7[3],xmm3[3],xmm7[4],xmm3[4],xmm7[5],xmm3[5],xmm7[6],xmm3[6],xmm7[7],xmm3[7] 3259*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $53, %r9 3260*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r9 3261*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r9d, %xmm3 3262*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1],xmm6[2],xmm7[2],xmm6[3],xmm7[3],xmm6[4],xmm7[4],xmm6[5],xmm7[5],xmm6[6],xmm7[6],xmm6[7],xmm7[7] 3263*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $61, %r10 3264*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r10 3265*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r10d, %xmm4 3266*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3],xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7] 3267*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $51, %r11 3268*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r11 3269*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r11d, %xmm5 3270*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7] 3271*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $59, %r14 3272*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r14 3273*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r14d, %xmm6 3274*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7] 3275*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $55, %r15 3276*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r15 3277*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r15d, %xmm3 3278*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3],xmm4[4],xmm2[4],xmm4[5],xmm2[5],xmm4[6],xmm2[6],xmm4[7],xmm2[7] 3279*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $63, %r12 3280*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r12 3281*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r12d, %xmm1 3282*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm5[0],xmm6[1],xmm5[1],xmm6[2],xmm5[2],xmm6[3],xmm5[3],xmm6[4],xmm5[4],xmm6[5],xmm5[5],xmm6[6],xmm5[6],xmm6[7],xmm5[7] 3283*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $50, %r13 3284*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %r13 3285*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %r13d, %xmm2 3286*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7] 3287*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $58, %rbx 3288*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rbx 3289*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ebx, %xmm3 3290*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3],xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7] 3291*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $54, %rax 3292*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rax 3293*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm5 3294*9880d681SAndroid Build Coastguard Worker; SSSE3-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] 3295*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $62, %rcx 3296*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rcx 3297*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ecx, %xmm4 3298*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 3299*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $52, %rsi 3300*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rsi 3301*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %esi, %xmm2 3302*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3],xmm4[4],xmm5[4],xmm4[5],xmm5[5],xmm4[6],xmm5[6],xmm4[7],xmm5[7] 3303*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7] 3304*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shlq $60, %rdi 3305*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: sarq $63, %rdi 3306*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %edi, %xmm3 3307*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 3308*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrq $15, %rbp 3309*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %ebp, %xmm2 3310*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shrq $7, %rdx 3311*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %edx, %xmm5 3312*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3],xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7] 3313*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3],xmm3[4],xmm5[4],xmm3[5],xmm5[5],xmm3[6],xmm5[6],xmm3[7],xmm5[7] 3314*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7] 3315*9880d681SAndroid Build Coastguard Worker; SSSE3-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] 3316*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: popq %rbx 3317*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: popq %r12 3318*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: popq %r13 3319*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: popq %r14 3320*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: popq %r15 3321*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: popq %rbp 3322*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 3323*9880d681SAndroid Build Coastguard Worker; 3324*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_32i1_to_32i8: 3325*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 3326*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movswq (%rdi), %rax 3327*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3328*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $62, %rcx 3329*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3330*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rdx 3331*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $63, %rdx 3332*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rdx 3333*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movd %edx, %xmm0 3334*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $1, %ecx, %xmm0 3335*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3336*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $61, %rcx 3337*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3338*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $2, %ecx, %xmm0 3339*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3340*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $60, %rcx 3341*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3342*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $3, %ecx, %xmm0 3343*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3344*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $59, %rcx 3345*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3346*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $4, %ecx, %xmm0 3347*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3348*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $58, %rcx 3349*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3350*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $5, %ecx, %xmm0 3351*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3352*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $57, %rcx 3353*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3354*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $6, %ecx, %xmm0 3355*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movsbq %al, %rcx 3356*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrq $7, %rcx 3357*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $7, %ecx, %xmm0 3358*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3359*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $55, %rcx 3360*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3361*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $8, %ecx, %xmm0 3362*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3363*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $54, %rcx 3364*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3365*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $9, %ecx, %xmm0 3366*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3367*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $53, %rcx 3368*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3369*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $10, %ecx, %xmm0 3370*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3371*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $52, %rcx 3372*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3373*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $11, %ecx, %xmm0 3374*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3375*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $51, %rcx 3376*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3377*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $12, %ecx, %xmm0 3378*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3379*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $50, %rcx 3380*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3381*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $13, %ecx, %xmm0 3382*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3383*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $49, %rcx 3384*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3385*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $14, %ecx, %xmm0 3386*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrq $15, %rax 3387*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $15, %eax, %xmm0 3388*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movswq 2(%rdi), %rax 3389*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3390*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $62, %rcx 3391*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3392*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rdx 3393*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $63, %rdx 3394*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rdx 3395*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movd %edx, %xmm1 3396*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $1, %ecx, %xmm1 3397*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3398*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $61, %rcx 3399*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3400*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $2, %ecx, %xmm1 3401*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3402*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $60, %rcx 3403*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3404*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $3, %ecx, %xmm1 3405*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3406*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $59, %rcx 3407*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3408*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $4, %ecx, %xmm1 3409*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3410*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $58, %rcx 3411*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3412*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $5, %ecx, %xmm1 3413*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3414*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $57, %rcx 3415*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3416*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $6, %ecx, %xmm1 3417*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movsbq %al, %rcx 3418*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrq $7, %rcx 3419*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $7, %ecx, %xmm1 3420*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3421*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $55, %rcx 3422*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3423*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $8, %ecx, %xmm1 3424*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3425*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $54, %rcx 3426*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3427*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $9, %ecx, %xmm1 3428*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3429*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $53, %rcx 3430*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3431*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $10, %ecx, %xmm1 3432*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3433*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $52, %rcx 3434*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3435*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $11, %ecx, %xmm1 3436*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3437*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $51, %rcx 3438*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3439*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $12, %ecx, %xmm1 3440*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3441*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $50, %rcx 3442*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3443*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $13, %ecx, %xmm1 3444*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq %rax, %rcx 3445*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shlq $49, %rcx 3446*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: sarq $63, %rcx 3447*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $14, %ecx, %xmm1 3448*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: shrq $15, %rax 3449*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $15, %eax, %xmm1 3450*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 3451*9880d681SAndroid Build Coastguard Worker; 3452*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_32i1_to_32i8: 3453*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 3454*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: pushq %rbp 3455*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: pushq %r15 3456*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: pushq %r14 3457*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: pushq %r13 3458*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: pushq %r12 3459*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: pushq %rbx 3460*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movslq (%rdi), %rax 3461*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 3462*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $47, %rcx 3463*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 3464*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovd %ecx, %xmm0 3465*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r8 3466*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rdx 3467*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 3468*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rdi 3469*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r13 3470*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rsi 3471*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r10 3472*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r11 3473*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r9 3474*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rbx 3475*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r14 3476*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r15 3477*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r12 3478*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rbp 3479*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $46, %rbp 3480*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rbp 3481*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $1, %ebp, %xmm0, %xmm0 3482*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rbp 3483*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $45, %r8 3484*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r8 3485*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $2, %r8d, %xmm0, %xmm0 3486*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r8 3487*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $44, %rdx 3488*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rdx 3489*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $3, %edx, %xmm0, %xmm0 3490*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rdx 3491*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $43, %rcx 3492*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 3493*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $4, %ecx, %xmm0, %xmm0 3494*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rcx 3495*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $42, %rdi 3496*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rdi 3497*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $5, %edi, %xmm0, %xmm0 3498*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rdi 3499*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $41, %r13 3500*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r13 3501*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $6, %r13d, %xmm0, %xmm0 3502*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r13 3503*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $40, %rsi 3504*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rsi 3505*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $7, %esi, %xmm0, %xmm0 3506*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rsi 3507*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $39, %r10 3508*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r10 3509*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $8, %r10d, %xmm0, %xmm0 3510*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r10 3511*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $38, %r11 3512*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r11 3513*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $9, %r11d, %xmm0, %xmm0 3514*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movsbq %al, %r11 3515*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $37, %r9 3516*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r9 3517*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $10, %r9d, %xmm0, %xmm0 3518*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r9 3519*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $36, %rbx 3520*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rbx 3521*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $11, %ebx, %xmm0, %xmm0 3522*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rbx 3523*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $35, %r14 3524*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r14 3525*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $12, %r14d, %xmm0, %xmm0 3526*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r14 3527*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $34, %r15 3528*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r15 3529*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $13, %r15d, %xmm0, %xmm0 3530*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r15 3531*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $33, %r12 3532*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r12 3533*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $14, %r12d, %xmm0, %xmm0 3534*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %r12 3535*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shrq $31, %rbp 3536*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $15, %ebp, %xmm0, %xmm0 3537*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rbp 3538*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $63, %rdx 3539*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rdx 3540*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovd %edx, %xmm1 3541*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movq %rax, %rdx 3542*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movswq %ax, %rax 3543*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $62, %r8 3544*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r8 3545*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $1, %r8d, %xmm1, %xmm1 3546*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $61, %rcx 3547*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rcx 3548*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $2, %ecx, %xmm1, %xmm1 3549*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $60, %rdi 3550*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rdi 3551*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $3, %edi, %xmm1, %xmm1 3552*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $59, %r13 3553*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r13 3554*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $4, %r13d, %xmm1, %xmm1 3555*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $58, %rsi 3556*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rsi 3557*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $5, %esi, %xmm1, %xmm1 3558*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $57, %r10 3559*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r10 3560*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $6, %r10d, %xmm1, %xmm1 3561*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shrq $7, %r11 3562*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $7, %r11d, %xmm1, %xmm1 3563*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $55, %r9 3564*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r9 3565*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $8, %r9d, %xmm1, %xmm1 3566*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $54, %rbx 3567*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rbx 3568*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $9, %ebx, %xmm1, %xmm1 3569*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $53, %r14 3570*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r14 3571*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $10, %r14d, %xmm1, %xmm1 3572*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $52, %r15 3573*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r15 3574*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $11, %r15d, %xmm1, %xmm1 3575*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $51, %r12 3576*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %r12 3577*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $12, %r12d, %xmm1, %xmm1 3578*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $50, %rbp 3579*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rbp 3580*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $13, %ebp, %xmm1, %xmm1 3581*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shlq $49, %rdx 3582*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: sarq $63, %rdx 3583*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $14, %edx, %xmm1, %xmm1 3584*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: shrq $15, %rax 3585*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $15, %eax, %xmm1, %xmm1 3586*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 3587*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: popq %rbx 3588*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: popq %r12 3589*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: popq %r13 3590*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: popq %r14 3591*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: popq %r15 3592*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: popq %rbp 3593*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3594*9880d681SAndroid Build Coastguard Worker; 3595*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_32i1_to_32i8: 3596*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 3597*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: pushq %rbp 3598*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: pushq %r15 3599*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: pushq %r14 3600*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: pushq %r13 3601*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: pushq %r12 3602*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: pushq %rbx 3603*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movslq (%rdi), %rax 3604*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 3605*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $47, %rcx 3606*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 3607*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovd %ecx, %xmm0 3608*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r8 3609*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rdx 3610*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 3611*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rdi 3612*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r13 3613*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rsi 3614*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r10 3615*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r11 3616*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r9 3617*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rbx 3618*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r14 3619*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r15 3620*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r12 3621*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rbp 3622*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $46, %rbp 3623*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rbp 3624*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $1, %ebp, %xmm0, %xmm0 3625*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rbp 3626*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $45, %r8 3627*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r8 3628*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $2, %r8d, %xmm0, %xmm0 3629*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r8 3630*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $44, %rdx 3631*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rdx 3632*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $3, %edx, %xmm0, %xmm0 3633*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rdx 3634*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $43, %rcx 3635*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 3636*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $4, %ecx, %xmm0, %xmm0 3637*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rcx 3638*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $42, %rdi 3639*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rdi 3640*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $5, %edi, %xmm0, %xmm0 3641*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rdi 3642*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $41, %r13 3643*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r13 3644*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $6, %r13d, %xmm0, %xmm0 3645*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r13 3646*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $40, %rsi 3647*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rsi 3648*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $7, %esi, %xmm0, %xmm0 3649*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rsi 3650*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $39, %r10 3651*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r10 3652*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $8, %r10d, %xmm0, %xmm0 3653*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r10 3654*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $38, %r11 3655*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r11 3656*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $9, %r11d, %xmm0, %xmm0 3657*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movsbq %al, %r11 3658*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $37, %r9 3659*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r9 3660*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $10, %r9d, %xmm0, %xmm0 3661*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r9 3662*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $36, %rbx 3663*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rbx 3664*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $11, %ebx, %xmm0, %xmm0 3665*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rbx 3666*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $35, %r14 3667*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r14 3668*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $12, %r14d, %xmm0, %xmm0 3669*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r14 3670*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $34, %r15 3671*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r15 3672*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $13, %r15d, %xmm0, %xmm0 3673*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r15 3674*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $33, %r12 3675*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r12 3676*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $14, %r12d, %xmm0, %xmm0 3677*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %r12 3678*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shrq $31, %rbp 3679*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $15, %ebp, %xmm0, %xmm0 3680*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rbp 3681*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $63, %rdx 3682*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rdx 3683*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovd %edx, %xmm1 3684*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movq %rax, %rdx 3685*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movswq %ax, %rax 3686*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $62, %r8 3687*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r8 3688*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $1, %r8d, %xmm1, %xmm1 3689*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $61, %rcx 3690*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rcx 3691*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $2, %ecx, %xmm1, %xmm1 3692*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $60, %rdi 3693*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rdi 3694*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $3, %edi, %xmm1, %xmm1 3695*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $59, %r13 3696*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r13 3697*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $4, %r13d, %xmm1, %xmm1 3698*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $58, %rsi 3699*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rsi 3700*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $5, %esi, %xmm1, %xmm1 3701*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $57, %r10 3702*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r10 3703*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $6, %r10d, %xmm1, %xmm1 3704*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shrq $7, %r11 3705*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $7, %r11d, %xmm1, %xmm1 3706*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $55, %r9 3707*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r9 3708*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $8, %r9d, %xmm1, %xmm1 3709*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $54, %rbx 3710*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rbx 3711*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $9, %ebx, %xmm1, %xmm1 3712*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $53, %r14 3713*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r14 3714*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $10, %r14d, %xmm1, %xmm1 3715*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $52, %r15 3716*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r15 3717*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $11, %r15d, %xmm1, %xmm1 3718*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $51, %r12 3719*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %r12 3720*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $12, %r12d, %xmm1, %xmm1 3721*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $50, %rbp 3722*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rbp 3723*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $13, %ebp, %xmm1, %xmm1 3724*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shlq $49, %rdx 3725*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: sarq $63, %rdx 3726*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $14, %edx, %xmm1, %xmm1 3727*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: shrq $15, %rax 3728*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $15, %eax, %xmm1, %xmm1 3729*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 3730*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: popq %rbx 3731*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: popq %r12 3732*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: popq %r13 3733*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: popq %r14 3734*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: popq %r15 3735*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: popq %rbp 3736*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3737*9880d681SAndroid Build Coastguard Worker; 3738*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_32i1_to_32i8: 3739*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 3740*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: kmovw (%rdi), %k1 3741*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 3742*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vmovdqa32 %zmm0, %zmm1 {%k1} {z} 3743*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovdb %zmm1, %xmm1 3744*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: kmovw 2(%rdi), %k1 3745*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z} 3746*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovdb %zmm0, %xmm0 3747*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 3748*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 3749*9880d681SAndroid Build Coastguard Worker; 3750*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_32i1_to_32i8: 3751*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 3752*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pushl %esi 3753*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 3754*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movswl (%eax), %ecx 3755*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %ecx, %edx 3756*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $30, %edx 3757*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 3758*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %ecx, %esi 3759*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $31, %esi 3760*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %esi 3761*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movd %esi, %xmm0 3762*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $1, %edx, %xmm0 3763*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %ecx, %edx 3764*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $29, %edx 3765*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 3766*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $2, %edx, %xmm0 3767*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %ecx, %edx 3768*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $28, %edx 3769*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 3770*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $3, %edx, %xmm0 3771*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %ecx, %edx 3772*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $27, %edx 3773*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 3774*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $4, %edx, %xmm0 3775*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %ecx, %edx 3776*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $26, %edx 3777*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 3778*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $5, %edx, %xmm0 3779*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %ecx, %edx 3780*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $25, %edx 3781*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 3782*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $6, %edx, %xmm0 3783*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movsbl %cl, %edx 3784*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $7, %edx 3785*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $7, %edx, %xmm0 3786*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %ecx, %edx 3787*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $23, %edx 3788*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 3789*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $8, %edx, %xmm0 3790*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %ecx, %edx 3791*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $22, %edx 3792*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 3793*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $9, %edx, %xmm0 3794*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %ecx, %edx 3795*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $21, %edx 3796*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 3797*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $10, %edx, %xmm0 3798*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %ecx, %edx 3799*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $20, %edx 3800*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 3801*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $11, %edx, %xmm0 3802*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %ecx, %edx 3803*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $19, %edx 3804*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 3805*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $12, %edx, %xmm0 3806*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %ecx, %edx 3807*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $18, %edx 3808*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 3809*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $13, %edx, %xmm0 3810*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %ecx, %edx 3811*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $17, %edx 3812*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 3813*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $14, %edx, %xmm0 3814*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $15, %ecx 3815*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $15, %ecx, %xmm0 3816*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movswl 2(%eax), %eax 3817*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 3818*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $30, %ecx 3819*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 3820*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %edx 3821*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $31, %edx 3822*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %edx 3823*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movd %edx, %xmm1 3824*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $1, %ecx, %xmm1 3825*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 3826*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $29, %ecx 3827*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 3828*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $2, %ecx, %xmm1 3829*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 3830*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $28, %ecx 3831*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 3832*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $3, %ecx, %xmm1 3833*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 3834*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $27, %ecx 3835*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 3836*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $4, %ecx, %xmm1 3837*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 3838*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $26, %ecx 3839*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 3840*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $5, %ecx, %xmm1 3841*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 3842*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $25, %ecx 3843*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 3844*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $6, %ecx, %xmm1 3845*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movsbl %al, %ecx 3846*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $7, %ecx 3847*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $7, %ecx, %xmm1 3848*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 3849*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $23, %ecx 3850*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 3851*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $8, %ecx, %xmm1 3852*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 3853*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $22, %ecx 3854*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 3855*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $9, %ecx, %xmm1 3856*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 3857*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $21, %ecx 3858*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 3859*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $10, %ecx, %xmm1 3860*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 3861*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $20, %ecx 3862*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 3863*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $11, %ecx, %xmm1 3864*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 3865*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $19, %ecx 3866*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 3867*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $12, %ecx, %xmm1 3868*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 3869*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $18, %ecx 3870*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 3871*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $13, %ecx, %xmm1 3872*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl %eax, %ecx 3873*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shll $17, %ecx 3874*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: sarl $31, %ecx 3875*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $14, %ecx, %xmm1 3876*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: shrl $15, %eax 3877*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pinsrb $15, %eax, %xmm1 3878*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: popl %esi 3879*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 3880*9880d681SAndroid Build Coastguard Workerentry: 3881*9880d681SAndroid Build Coastguard Worker %X = load <32 x i1>, <32 x i1>* %ptr 3882*9880d681SAndroid Build Coastguard Worker %Y = sext <32 x i1> %X to <32 x i8> 3883*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %Y 3884*9880d681SAndroid Build Coastguard Worker} 3885*9880d681SAndroid Build Coastguard Worker 3886*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @load_sext_16i8_to_16i16(<16 x i8> *%ptr) { 3887*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_16i8_to_16i16: 3888*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 3889*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 3890*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 3891*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psraw $8, %xmm0 3892*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq {{.*#+}} xmm1 = mem[0],zero 3893*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 3894*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psraw $8, %xmm1 3895*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 3896*9880d681SAndroid Build Coastguard Worker; 3897*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_16i8_to_16i16: 3898*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 3899*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 3900*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 3901*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psraw $8, %xmm0 3902*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq {{.*#+}} xmm1 = mem[0],zero 3903*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 3904*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psraw $8, %xmm1 3905*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 3906*9880d681SAndroid Build Coastguard Worker; 3907*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_16i8_to_16i16: 3908*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 3909*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbw (%rdi), %xmm0 3910*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbw 8(%rdi), %xmm1 3911*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 3912*9880d681SAndroid Build Coastguard Worker; 3913*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_16i8_to_16i16: 3914*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 3915*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbw (%rdi), %xmm0 3916*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxbw 8(%rdi), %xmm1 3917*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 3918*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3919*9880d681SAndroid Build Coastguard Worker; 3920*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_16i8_to_16i16: 3921*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 3922*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxbw (%rdi), %ymm0 3923*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3924*9880d681SAndroid Build Coastguard Worker; 3925*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_16i8_to_16i16: 3926*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 3927*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxbw (%rdi), %ymm0 3928*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 3929*9880d681SAndroid Build Coastguard Worker; 3930*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_16i8_to_16i16: 3931*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 3932*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 3933*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbw (%eax), %xmm0 3934*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbw 8(%eax), %xmm1 3935*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 3936*9880d681SAndroid Build Coastguard Workerentry: 3937*9880d681SAndroid Build Coastguard Worker %X = load <16 x i8>, <16 x i8>* %ptr 3938*9880d681SAndroid Build Coastguard Worker %Y = sext <16 x i8> %X to <16 x i16> 3939*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %Y 3940*9880d681SAndroid Build Coastguard Worker} 3941*9880d681SAndroid Build Coastguard Worker 3942*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @load_sext_2i16_to_2i64(<2 x i16> *%ptr) { 3943*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_2i16_to_2i64: 3944*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 3945*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 3946*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 3947*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 3948*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm1 3949*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $16, %xmm0 3950*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 3951*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 3952*9880d681SAndroid Build Coastguard Worker; 3953*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_2i16_to_2i64: 3954*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 3955*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 3956*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 3957*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 3958*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm1 3959*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $16, %xmm0 3960*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 3961*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 3962*9880d681SAndroid Build Coastguard Worker; 3963*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_2i16_to_2i64: 3964*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 3965*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxwq (%rdi), %xmm0 3966*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 3967*9880d681SAndroid Build Coastguard Worker; 3968*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_sext_2i16_to_2i64: 3969*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 3970*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovsxwq (%rdi), %xmm0 3971*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 3972*9880d681SAndroid Build Coastguard Worker; 3973*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_2i16_to_2i64: 3974*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 3975*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 3976*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxwq (%eax), %xmm0 3977*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 3978*9880d681SAndroid Build Coastguard Workerentry: 3979*9880d681SAndroid Build Coastguard Worker %X = load <2 x i16>, <2 x i16>* %ptr 3980*9880d681SAndroid Build Coastguard Worker %Y = sext <2 x i16> %X to <2 x i64> 3981*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Y 3982*9880d681SAndroid Build Coastguard Worker} 3983*9880d681SAndroid Build Coastguard Worker 3984*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @load_sext_4i16_to_4i32(<4 x i16> *%ptr) { 3985*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_4i16_to_4i32: 3986*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 3987*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 3988*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 3989*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $16, %xmm0 3990*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 3991*9880d681SAndroid Build Coastguard Worker; 3992*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_4i16_to_4i32: 3993*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 3994*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 3995*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 3996*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $16, %xmm0 3997*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 3998*9880d681SAndroid Build Coastguard Worker; 3999*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_4i16_to_4i32: 4000*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 4001*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxwd (%rdi), %xmm0 4002*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 4003*9880d681SAndroid Build Coastguard Worker; 4004*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_sext_4i16_to_4i32: 4005*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 4006*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovsxwd (%rdi), %xmm0 4007*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 4008*9880d681SAndroid Build Coastguard Worker; 4009*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_4i16_to_4i32: 4010*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 4011*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 4012*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxwd (%eax), %xmm0 4013*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 4014*9880d681SAndroid Build Coastguard Workerentry: 4015*9880d681SAndroid Build Coastguard Worker %X = load <4 x i16>, <4 x i16>* %ptr 4016*9880d681SAndroid Build Coastguard Worker %Y = sext <4 x i16> %X to <4 x i32> 4017*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %Y 4018*9880d681SAndroid Build Coastguard Worker} 4019*9880d681SAndroid Build Coastguard Worker 4020*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @load_sext_4i16_to_4i64(<4 x i16> *%ptr) { 4021*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_4i16_to_4i64: 4022*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 4023*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movswq 2(%rdi), %rax 4024*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm1 4025*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movswq (%rdi), %rax 4026*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm0 4027*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 4028*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movswq 6(%rdi), %rax 4029*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm2 4030*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movswq 4(%rdi), %rax 4031*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %rax, %xmm1 4032*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0] 4033*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 4034*9880d681SAndroid Build Coastguard Worker; 4035*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_4i16_to_4i64: 4036*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 4037*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movswq 2(%rdi), %rax 4038*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm1 4039*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movswq (%rdi), %rax 4040*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm0 4041*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 4042*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movswq 6(%rdi), %rax 4043*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm2 4044*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movswq 4(%rdi), %rax 4045*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %rax, %xmm1 4046*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0] 4047*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 4048*9880d681SAndroid Build Coastguard Worker; 4049*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_4i16_to_4i64: 4050*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 4051*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxwq (%rdi), %xmm0 4052*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxwq 4(%rdi), %xmm1 4053*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 4054*9880d681SAndroid Build Coastguard Worker; 4055*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_4i16_to_4i64: 4056*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 4057*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxwd (%rdi), %xmm0 4058*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm0, %xmm1 4059*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 4060*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm0, %xmm0 4061*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 4062*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 4063*9880d681SAndroid Build Coastguard Worker; 4064*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_4i16_to_4i64: 4065*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 4066*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxwq (%rdi), %ymm0 4067*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 4068*9880d681SAndroid Build Coastguard Worker; 4069*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_4i16_to_4i64: 4070*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 4071*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxwq (%rdi), %ymm0 4072*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 4073*9880d681SAndroid Build Coastguard Worker; 4074*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_4i16_to_4i64: 4075*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 4076*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 4077*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxwq (%eax), %xmm0 4078*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxwq 4(%eax), %xmm1 4079*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 4080*9880d681SAndroid Build Coastguard Workerentry: 4081*9880d681SAndroid Build Coastguard Worker %X = load <4 x i16>, <4 x i16>* %ptr 4082*9880d681SAndroid Build Coastguard Worker %Y = sext <4 x i16> %X to <4 x i64> 4083*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Y 4084*9880d681SAndroid Build Coastguard Worker} 4085*9880d681SAndroid Build Coastguard Worker 4086*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @load_sext_8i16_to_8i32(<8 x i16> *%ptr) { 4087*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_8i16_to_8i32: 4088*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 4089*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 4090*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 4091*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $16, %xmm0 4092*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq {{.*#+}} xmm1 = mem[0],zero 4093*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3] 4094*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $16, %xmm1 4095*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 4096*9880d681SAndroid Build Coastguard Worker; 4097*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_8i16_to_8i32: 4098*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 4099*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 4100*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3] 4101*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $16, %xmm0 4102*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq {{.*#+}} xmm1 = mem[0],zero 4103*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3] 4104*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $16, %xmm1 4105*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 4106*9880d681SAndroid Build Coastguard Worker; 4107*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_8i16_to_8i32: 4108*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 4109*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxwd (%rdi), %xmm0 4110*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxwd 8(%rdi), %xmm1 4111*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 4112*9880d681SAndroid Build Coastguard Worker; 4113*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_8i16_to_8i32: 4114*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 4115*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxwd (%rdi), %xmm0 4116*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxwd 8(%rdi), %xmm1 4117*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 4118*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 4119*9880d681SAndroid Build Coastguard Worker; 4120*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_8i16_to_8i32: 4121*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 4122*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxwd (%rdi), %ymm0 4123*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 4124*9880d681SAndroid Build Coastguard Worker; 4125*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_8i16_to_8i32: 4126*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 4127*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxwd (%rdi), %ymm0 4128*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 4129*9880d681SAndroid Build Coastguard Worker; 4130*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_8i16_to_8i32: 4131*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 4132*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 4133*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxwd (%eax), %xmm0 4134*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxwd 8(%eax), %xmm1 4135*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 4136*9880d681SAndroid Build Coastguard Workerentry: 4137*9880d681SAndroid Build Coastguard Worker %X = load <8 x i16>, <8 x i16>* %ptr 4138*9880d681SAndroid Build Coastguard Worker %Y = sext <8 x i16> %X to <8 x i32> 4139*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Y 4140*9880d681SAndroid Build Coastguard Worker} 4141*9880d681SAndroid Build Coastguard Worker 4142*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @load_sext_2i32_to_2i64(<2 x i32> *%ptr) { 4143*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_2i32_to_2i64: 4144*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 4145*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 4146*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm1 4147*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm1 4148*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 4149*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 4150*9880d681SAndroid Build Coastguard Worker; 4151*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_2i32_to_2i64: 4152*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 4153*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 4154*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm1 4155*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm1 4156*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 4157*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 4158*9880d681SAndroid Build Coastguard Worker; 4159*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_2i32_to_2i64: 4160*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 4161*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxdq (%rdi), %xmm0 4162*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 4163*9880d681SAndroid Build Coastguard Worker; 4164*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_sext_2i32_to_2i64: 4165*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 4166*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovsxdq (%rdi), %xmm0 4167*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 4168*9880d681SAndroid Build Coastguard Worker; 4169*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_2i32_to_2i64: 4170*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 4171*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 4172*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxdq (%eax), %xmm0 4173*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 4174*9880d681SAndroid Build Coastguard Workerentry: 4175*9880d681SAndroid Build Coastguard Worker %X = load <2 x i32>, <2 x i32>* %ptr 4176*9880d681SAndroid Build Coastguard Worker %Y = sext <2 x i32> %X to <2 x i64> 4177*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Y 4178*9880d681SAndroid Build Coastguard Worker} 4179*9880d681SAndroid Build Coastguard Worker 4180*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @load_sext_4i32_to_4i64(<4 x i32> *%ptr) { 4181*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_4i32_to_4i64: 4182*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 4183*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa (%rdi), %xmm0 4184*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm2 4185*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm2 4186*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1] 4187*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 4188*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm2 4189*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm2 4190*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 4191*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 4192*9880d681SAndroid Build Coastguard Worker; 4193*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_4i32_to_4i64: 4194*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 4195*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa (%rdi), %xmm0 4196*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm2 4197*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm2 4198*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1] 4199*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 4200*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm2 4201*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm2 4202*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 4203*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 4204*9880d681SAndroid Build Coastguard Worker; 4205*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_4i32_to_4i64: 4206*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 4207*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxdq (%rdi), %xmm0 4208*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxdq 8(%rdi), %xmm1 4209*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 4210*9880d681SAndroid Build Coastguard Worker; 4211*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_4i32_to_4i64: 4212*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: # %entry 4213*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq (%rdi), %xmm0 4214*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq 8(%rdi), %xmm1 4215*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 4216*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 4217*9880d681SAndroid Build Coastguard Worker; 4218*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_4i32_to_4i64: 4219*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: # %entry 4220*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxdq (%rdi), %ymm0 4221*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 4222*9880d681SAndroid Build Coastguard Worker; 4223*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_4i32_to_4i64: 4224*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: # %entry 4225*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxdq (%rdi), %ymm0 4226*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 4227*9880d681SAndroid Build Coastguard Worker; 4228*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_4i32_to_4i64: 4229*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 4230*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax 4231*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxdq (%eax), %xmm0 4232*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxdq 8(%eax), %xmm1 4233*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 4234*9880d681SAndroid Build Coastguard Workerentry: 4235*9880d681SAndroid Build Coastguard Worker %X = load <4 x i32>, <4 x i32>* %ptr 4236*9880d681SAndroid Build Coastguard Worker %Y = sext <4 x i32> %X to <4 x i64> 4237*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Y 4238*9880d681SAndroid Build Coastguard Worker} 4239*9880d681SAndroid Build Coastguard Worker 4240*9880d681SAndroid Build Coastguard Workerdefine i32 @sext_2i8_to_i32(<16 x i8> %A) nounwind uwtable readnone ssp { 4241*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_2i8_to_i32: 4242*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: # %entry 4243*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 4244*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psraw $8, %xmm0 4245*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %xmm0, %eax 4246*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 4247*9880d681SAndroid Build Coastguard Worker; 4248*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_2i8_to_i32: 4249*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: # %entry 4250*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 4251*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psraw $8, %xmm0 4252*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %xmm0, %eax 4253*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 4254*9880d681SAndroid Build Coastguard Worker; 4255*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_2i8_to_i32: 4256*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: # %entry 4257*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxbw %xmm0, %xmm0 4258*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movd %xmm0, %eax 4259*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 4260*9880d681SAndroid Build Coastguard Worker; 4261*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sext_2i8_to_i32: 4262*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: # %entry 4263*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovsxbw %xmm0, %xmm0 4264*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmovd %xmm0, %eax 4265*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 4266*9880d681SAndroid Build Coastguard Worker; 4267*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_2i8_to_i32: 4268*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: # %entry 4269*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pushl %eax 4270*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: .Ltmp0: 4271*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: .cfi_def_cfa_offset 8 4272*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxbw %xmm0, %xmm0 4273*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movd %xmm0, %eax 4274*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: popl %ecx 4275*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 4276*9880d681SAndroid Build Coastguard Workerentry: 4277*9880d681SAndroid Build Coastguard Worker %Shuf = shufflevector <16 x i8> %A, <16 x i8> undef, <2 x i32> <i32 0, i32 1> 4278*9880d681SAndroid Build Coastguard Worker %Ex = sext <2 x i8> %Shuf to <2 x i16> 4279*9880d681SAndroid Build Coastguard Worker %Bc = bitcast <2 x i16> %Ex to i32 4280*9880d681SAndroid Build Coastguard Worker ret i32 %Bc 4281*9880d681SAndroid Build Coastguard Worker} 4282*9880d681SAndroid Build Coastguard Worker 4283*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_4i1_to_4i64(<4 x i1> %mask) { 4284*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_4i1_to_4i64: 4285*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: 4286*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pslld $31, %xmm0 4287*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm0 4288*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm2 4289*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm2 4290*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1] 4291*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 4292*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm2 4293*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm2 4294*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 4295*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 4296*9880d681SAndroid Build Coastguard Worker; 4297*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_4i1_to_4i64: 4298*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: 4299*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pslld $31, %xmm0 4300*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm0 4301*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm2 4302*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm2 4303*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1] 4304*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 4305*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm2 4306*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm2 4307*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 4308*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 4309*9880d681SAndroid Build Coastguard Worker; 4310*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_4i1_to_4i64: 4311*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: 4312*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pslld $31, %xmm0 4313*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrad $31, %xmm0 4314*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxdq %xmm0, %xmm2 4315*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 4316*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxdq %xmm0, %xmm1 4317*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm0 4318*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 4319*9880d681SAndroid Build Coastguard Worker; 4320*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_4i1_to_4i64: 4321*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 4322*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslld $31, %xmm0, %xmm0 4323*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrad $31, %xmm0, %xmm0 4324*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm0, %xmm1 4325*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 4326*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm0, %xmm0 4327*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 4328*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 4329*9880d681SAndroid Build Coastguard Worker; 4330*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_4i1_to_4i64: 4331*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 4332*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpslld $31, %xmm0, %xmm0 4333*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrad $31, %xmm0, %xmm0 4334*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxdq %xmm0, %ymm0 4335*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 4336*9880d681SAndroid Build Coastguard Worker; 4337*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_4i1_to_4i64: 4338*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: 4339*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpslld $31, %xmm0, %xmm0 4340*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpsrad $31, %xmm0, %xmm0 4341*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxdq %xmm0, %ymm0 4342*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 4343*9880d681SAndroid Build Coastguard Worker; 4344*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_4i1_to_4i64: 4345*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: 4346*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pslld $31, %xmm0 4347*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psrad $31, %xmm0 4348*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm2 4349*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 4350*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm1 4351*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movdqa %xmm2, %xmm0 4352*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 4353*9880d681SAndroid Build Coastguard Worker %extmask = sext <4 x i1> %mask to <4 x i64> 4354*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %extmask 4355*9880d681SAndroid Build Coastguard Worker} 4356*9880d681SAndroid Build Coastguard Worker 4357*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_4i8_to_4i64(<4 x i8> %mask) { 4358*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_4i8_to_4i64: 4359*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: 4360*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pslld $24, %xmm0 4361*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $24, %xmm0 4362*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm0, %xmm2 4363*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm2 4364*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1] 4365*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 4366*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm1, %xmm2 4367*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: psrad $31, %xmm2 4368*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 4369*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 4370*9880d681SAndroid Build Coastguard Worker; 4371*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_4i8_to_4i64: 4372*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: 4373*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pslld $24, %xmm0 4374*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $24, %xmm0 4375*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm0, %xmm2 4376*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm2 4377*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1] 4378*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 4379*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm2 4380*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: psrad $31, %xmm2 4381*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 4382*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 4383*9880d681SAndroid Build Coastguard Worker; 4384*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_4i8_to_4i64: 4385*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: 4386*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pslld $24, %xmm0 4387*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: psrad $24, %xmm0 4388*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxdq %xmm0, %xmm2 4389*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 4390*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pmovsxdq %xmm0, %xmm1 4391*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movdqa %xmm2, %xmm0 4392*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 4393*9880d681SAndroid Build Coastguard Worker; 4394*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_4i8_to_4i64: 4395*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 4396*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslld $24, %xmm0, %xmm0 4397*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrad $24, %xmm0, %xmm0 4398*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm0, %xmm1 4399*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 4400*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovsxdq %xmm0, %xmm0 4401*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 4402*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 4403*9880d681SAndroid Build Coastguard Worker; 4404*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_4i8_to_4i64: 4405*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 4406*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpslld $24, %xmm0, %xmm0 4407*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrad $24, %xmm0, %xmm0 4408*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovsxdq %xmm0, %ymm0 4409*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 4410*9880d681SAndroid Build Coastguard Worker; 4411*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_4i8_to_4i64: 4412*9880d681SAndroid Build Coastguard Worker; AVX512: # BB#0: 4413*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpslld $24, %xmm0, %xmm0 4414*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpsrad $24, %xmm0, %xmm0 4415*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: vpmovsxdq %xmm0, %ymm0 4416*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT: retq 4417*9880d681SAndroid Build Coastguard Worker; 4418*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_4i8_to_4i64: 4419*9880d681SAndroid Build Coastguard Worker; X32-SSE41: # BB#0: 4420*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pslld $24, %xmm0 4421*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: psrad $24, %xmm0 4422*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm2 4423*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 4424*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm1 4425*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: movdqa %xmm2, %xmm0 4426*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT: retl 4427*9880d681SAndroid Build Coastguard Worker %extmask = sext <4 x i8> %mask to <4 x i64> 4428*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %extmask 4429*9880d681SAndroid Build Coastguard Worker} 4430