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=+avx | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker;;; Shift left 5*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @vshift00(<8 x i32> %a) { 6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vshift00: 7*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpslld $2, %xmm0, %xmm1 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm0 10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpslld $2, %xmm0, %xmm0 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 13*9880d681SAndroid Build Coastguard Worker %s = shl <8 x i32> %a, <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2> 14*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %s 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @vshift01(<16 x i16> %a) { 18*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vshift01: 19*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllw $2, %xmm0, %xmm1 21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm0 22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllw $2, %xmm0, %xmm0 23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 25*9880d681SAndroid Build Coastguard Worker %s = shl <16 x i16> %a, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2> 26*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %s 27*9880d681SAndroid Build Coastguard Worker} 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @vshift02(<4 x i64> %a) { 30*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vshift02: 31*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 32*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllq $2, %xmm0, %xmm1 33*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm0 34*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllq $2, %xmm0, %xmm0 35*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 37*9880d681SAndroid Build Coastguard Worker %s = shl <4 x i64> %a, <i64 2, i64 2, i64 2, i64 2> 38*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %s 39*9880d681SAndroid Build Coastguard Worker} 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker;;; Logical Shift right 42*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @vshift03(<8 x i32> %a) { 43*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vshift03: 44*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrld $2, %xmm0, %xmm1 46*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm0 47*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrld $2, %xmm0, %xmm0 48*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 49*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 50*9880d681SAndroid Build Coastguard Worker %s = lshr <8 x i32> %a, <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2> 51*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %s 52*9880d681SAndroid Build Coastguard Worker} 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @vshift04(<16 x i16> %a) { 55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vshift04: 56*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlw $2, %xmm0, %xmm1 58*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm0 59*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlw $2, %xmm0, %xmm0 60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 62*9880d681SAndroid Build Coastguard Worker %s = lshr <16 x i16> %a, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2> 63*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %s 64*9880d681SAndroid Build Coastguard Worker} 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @vshift05(<4 x i64> %a) { 67*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vshift05: 68*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 69*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlq $2, %xmm0, %xmm1 70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm0 71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlq $2, %xmm0, %xmm0 72*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 73*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 74*9880d681SAndroid Build Coastguard Worker %s = lshr <4 x i64> %a, <i64 2, i64 2, i64 2, i64 2> 75*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %s 76*9880d681SAndroid Build Coastguard Worker} 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Worker;;; Arithmetic Shift right 79*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @vshift06(<8 x i32> %a) { 80*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vshift06: 81*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 82*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrad $2, %xmm0, %xmm1 83*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm0 84*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrad $2, %xmm0, %xmm0 85*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 86*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 87*9880d681SAndroid Build Coastguard Worker %s = ashr <8 x i32> %a, <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2> 88*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %s 89*9880d681SAndroid Build Coastguard Worker} 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @vshift07(<16 x i16> %a) { 92*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vshift07: 93*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsraw $2, %xmm0, %xmm1 95*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm0 96*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsraw $2, %xmm0, %xmm0 97*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 98*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 99*9880d681SAndroid Build Coastguard Worker %s = ashr <16 x i16> %a, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2> 100*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %s 101*9880d681SAndroid Build Coastguard Worker} 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @vshift09(<32 x i8> %a) { 104*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vshift09: 105*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm1 107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlw $2, %xmm1, %xmm1 108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa {{.*#+}} xmm2 = [63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63] 109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpand %xmm2, %xmm1, %xmm1 110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa {{.*#+}} xmm3 = [32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32] 111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxor %xmm3, %xmm1, %xmm1 112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubb %xmm3, %xmm1, %xmm1 113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlw $2, %xmm0, %xmm0 114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpand %xmm2, %xmm0, %xmm0 115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxor %xmm3, %xmm0, %xmm0 116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubb %xmm3, %xmm0, %xmm0 117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 119*9880d681SAndroid Build Coastguard Worker %s = ashr <32 x i8> %a, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2> 120*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %s 121*9880d681SAndroid Build Coastguard Worker} 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @vshift10(<32 x i8> %a) { 124*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vshift10: 125*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm1 127*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxor %xmm2, %xmm2, %xmm2 128*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpgtb %xmm1, %xmm2, %xmm1 129*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpgtb %xmm0, %xmm2, %xmm0 130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 132*9880d681SAndroid Build Coastguard Worker %s = ashr <32 x i8> %a, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> 133*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %s 134*9880d681SAndroid Build Coastguard Worker} 135*9880d681SAndroid Build Coastguard Worker 136*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @vshift11(<32 x i8> %a) { 137*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vshift11: 138*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm1 140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlw $2, %xmm1, %xmm1 141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa {{.*#+}} xmm2 = [63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63] 142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpand %xmm2, %xmm1, %xmm1 143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlw $2, %xmm0, %xmm0 144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpand %xmm2, %xmm0, %xmm0 145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 147*9880d681SAndroid Build Coastguard Worker %s = lshr <32 x i8> %a, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2> 148*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %s 149*9880d681SAndroid Build Coastguard Worker} 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @vshift12(<32 x i8> %a) { 152*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vshift12: 153*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm1 155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllw $2, %xmm1, %xmm1 156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa {{.*#+}} xmm2 = [252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252] 157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpand %xmm2, %xmm1, %xmm1 158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllw $2, %xmm0, %xmm0 159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpand %xmm2, %xmm0, %xmm0 160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 162*9880d681SAndroid Build Coastguard Worker %s = shl <32 x i8> %a, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2> 163*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %s 164*9880d681SAndroid Build Coastguard Worker} 165*9880d681SAndroid Build Coastguard Worker 166*9880d681SAndroid Build Coastguard Worker;;; Support variable shifts 167*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @vshift08(<8 x i32> %a) { 168*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vshift08: 169*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpslld $23, %xmm0, %xmm1 171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa {{.*#+}} xmm2 = [1065353216,1065353216,1065353216,1065353216] 172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %xmm2, %xmm1, %xmm1 173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttps2dq %xmm1, %xmm1 174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm0 175*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpslld $23, %xmm0, %xmm0 176*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %xmm2, %xmm0, %xmm0 177*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttps2dq %xmm0, %xmm0 178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 179*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 180*9880d681SAndroid Build Coastguard Worker %bitop = shl <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>, %a 181*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %bitop 182*9880d681SAndroid Build Coastguard Worker} 183*9880d681SAndroid Build Coastguard Worker 184*9880d681SAndroid Build Coastguard Worker; PR15141 185*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @vshift13(<4 x i32> %in) { 186*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vshift13: 187*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmulld {{.*}}(%rip), %xmm0, %xmm0 189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 190*9880d681SAndroid Build Coastguard Worker %T = shl <4 x i32> %in, <i32 0, i32 1, i32 2, i32 4> 191*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %T 192*9880d681SAndroid Build Coastguard Worker} 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Worker;;; Uses shifts for sign extension 195*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @sext_v16i16(<16 x i16> %a) { 196*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sext_v16i16: 197*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllw $8, %xmm0, %xmm1 199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsraw $8, %xmm1, %xmm1 200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm0 201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllw $8, %xmm0, %xmm0 202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsraw $8, %xmm0, %xmm0 203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 205*9880d681SAndroid Build Coastguard Worker %b = trunc <16 x i16> %a to <16 x i8> 206*9880d681SAndroid Build Coastguard Worker %c = sext <16 x i8> %b to <16 x i16> 207*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %c 208*9880d681SAndroid Build Coastguard Worker} 209*9880d681SAndroid Build Coastguard Worker 210*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @sext_v8i32(<8 x i32> %a) { 211*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sext_v8i32: 212*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 213*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpslld $16, %xmm0, %xmm1 214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrad $16, %xmm1, %xmm1 215*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm0 216*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpslld $16, %xmm0, %xmm0 217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrad $16, %xmm0, %xmm0 218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 220*9880d681SAndroid Build Coastguard Worker %b = trunc <8 x i32> %a to <8 x i16> 221*9880d681SAndroid Build Coastguard Worker %c = sext <8 x i16> %b to <8 x i32> 222*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %c 223*9880d681SAndroid Build Coastguard Worker} 224