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 -mcpu=x86-64 -mattr=+avx | FileCheck %s --check-prefix=ALL --check-prefix=AVX1 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=x86-64 -mattr=+avx2 | FileCheck %s --check-prefix=ALL --check-prefix=AVX2 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-unknown-unknown" 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 8*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00: 9*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 10*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 11*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 12*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 13*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 14*9880d681SAndroid Build Coastguard Worker; 15*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00: 16*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 17*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm0, %ymm0 18*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 19*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 20*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00(<16 x i16> %a, <16 x i16> %b) { 24*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00: 25*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 26*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7] 27*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1] 28*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1] 29*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 30*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 31*9880d681SAndroid Build Coastguard Worker; 32*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00: 33*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 34*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm0, %xmm1 35*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1] 36*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 37*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 38*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0> 39*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 40*9880d681SAndroid Build Coastguard Worker} 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00(<16 x i16> %a, <16 x i16> %b) { 43*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00: 44*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 45*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7] 46*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1] 47*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1] 48*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 49*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 50*9880d681SAndroid Build Coastguard Worker; 51*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00: 52*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 53*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm0, %xmm1 54*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1] 55*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 56*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 57*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0> 58*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 59*9880d681SAndroid Build Coastguard Worker} 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_03_00_00_00(<16 x i16> %a, <16 x i16> %b) { 62*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_03_00_00_00: 63*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 64*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7] 65*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1] 66*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1] 67*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 68*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 69*9880d681SAndroid Build Coastguard Worker; 70*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_03_00_00_00: 71*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 72*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm0, %xmm1 73*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1] 74*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 75*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 76*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0> 77*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 78*9880d681SAndroid Build Coastguard Worker} 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_04_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 81*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_04_00_00_00_00: 82*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 83*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7] 84*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1] 85*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1] 86*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 87*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 88*9880d681SAndroid Build Coastguard Worker; 89*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_04_00_00_00_00: 90*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 91*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm0, %xmm1 92*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1] 93*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 94*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 95*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0> 96*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 97*9880d681SAndroid Build Coastguard Worker} 98*9880d681SAndroid Build Coastguard Worker 99*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_05_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 100*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_05_00_00_00_00_00: 101*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 102*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7] 103*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1] 104*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1] 105*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 106*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 107*9880d681SAndroid Build Coastguard Worker; 108*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_05_00_00_00_00_00: 109*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 110*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm0, %xmm1 111*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1] 112*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 113*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 114*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0> 115*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 116*9880d681SAndroid Build Coastguard Worker} 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_00_06_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 119*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_06_00_00_00_00_00_00: 120*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 121*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7] 122*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1] 123*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1] 124*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 125*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 126*9880d681SAndroid Build Coastguard Worker; 127*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_06_00_00_00_00_00_00: 128*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 129*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm0, %xmm1 130*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1] 131*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 132*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 133*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 134*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 135*9880d681SAndroid Build Coastguard Worker} 136*9880d681SAndroid Build Coastguard Worker 137*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 138*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00: 139*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 140*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7] 141*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1] 142*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1] 143*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 144*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 145*9880d681SAndroid Build Coastguard Worker; 146*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00: 147*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 148*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm0, %xmm1 149*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1] 150*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 151*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 152*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 153*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 154*9880d681SAndroid Build Coastguard Worker} 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 157*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00: 158*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 159*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 160*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 161*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3] 162*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 163*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 164*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 165*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 166*9880d681SAndroid Build Coastguard Worker; 167*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00: 168*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 169*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm0, %xmm1 170*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3,0,1] 171*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15] 172*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,0,1,1,4,4,5,5] 173*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255] 174*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm0 175*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 176*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 177*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 178*9880d681SAndroid Build Coastguard Worker} 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_09_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 181*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_09_00_00_00_00_00_00_00_00_00: 182*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 183*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 184*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 185*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,0,1,0,1,0,1,0,1,6,7,0,1] 186*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 187*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 188*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 189*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 190*9880d681SAndroid Build Coastguard Worker; 191*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_09_00_00_00_00_00_00_00_00_00: 192*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 193*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1] 194*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = <0,0,255,255,u,u,u,u,u,u,u,u,u,u,u,u,255,255,u,u,u,u,u,u,u,u,u,u,u,u,u,u> 195*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm0 196*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17] 197*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 198*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 9, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 199*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 200*9880d681SAndroid Build Coastguard Worker} 201*9880d681SAndroid Build Coastguard Worker 202*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_10_00_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 203*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_10_00_00_00_00_00_00_00_00_00_00: 204*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 205*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 206*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 207*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,0,1,0,1,0,1,10,11,0,1,0,1] 208*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 209*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 210*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 211*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 212*9880d681SAndroid Build Coastguard Worker; 213*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_10_00_00_00_00_00_00_00_00_00_00: 214*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 215*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1] 216*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0],ymm1[1,2,3,4,5,6,7] 217*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17] 218*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 219*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 10, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 220*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 221*9880d681SAndroid Build Coastguard Worker} 222*9880d681SAndroid Build Coastguard Worker 223*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_11_00_00_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 224*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_11_00_00_00_00_00_00_00_00_00_00_00: 225*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 226*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 227*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 228*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,0,1,0,1,14,15,0,1,0,1,0,1] 229*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 230*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 231*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 232*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 233*9880d681SAndroid Build Coastguard Worker; 234*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_11_00_00_00_00_00_00_00_00_00_00_00: 235*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 236*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1] 237*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0],ymm1[1,2,3,4,5,6,7] 238*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17] 239*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 240*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 11, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 241*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 242*9880d681SAndroid Build Coastguard Worker} 243*9880d681SAndroid Build Coastguard Worker 244*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_12_00_00_00_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 245*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_12_00_00_00_00_00_00_00_00_00_00_00_00: 246*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 247*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 248*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm1[4,5,6,7] 249*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1] 250*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 251*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 252*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 253*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 254*9880d681SAndroid Build Coastguard Worker; 255*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_12_00_00_00_00_00_00_00_00_00_00_00_00: 256*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 257*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1] 258*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3,4,5,6,7] 259*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17] 260*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 261*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 12, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 262*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 263*9880d681SAndroid Build Coastguard Worker} 264*9880d681SAndroid Build Coastguard Worker 265*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_13_00_00_00_00_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 266*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_13_00_00_00_00_00_00_00_00_00_00_00_00_00: 267*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 268*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 269*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm1[4,5,6,7] 270*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1] 271*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 272*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 273*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 274*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 275*9880d681SAndroid Build Coastguard Worker; 276*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_13_00_00_00_00_00_00_00_00_00_00_00_00_00: 277*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 278*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1] 279*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3,4,5,6,7] 280*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17] 281*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 282*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 13, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 283*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 284*9880d681SAndroid Build Coastguard Worker} 285*9880d681SAndroid Build Coastguard Worker 286*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 287*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00: 288*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 289*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 290*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm1[4,5,6,7] 291*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1] 292*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 293*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 294*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 295*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 296*9880d681SAndroid Build Coastguard Worker; 297*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00: 298*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 299*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1] 300*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3,4,5,6,7] 301*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17] 302*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 303*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 14, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 304*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 305*9880d681SAndroid Build Coastguard Worker} 306*9880d681SAndroid Build Coastguard Worker 307*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 308*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00: 309*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 310*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 311*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm1[4,5,6,7] 312*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1] 313*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 314*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 315*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 316*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 317*9880d681SAndroid Build Coastguard Worker; 318*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00: 319*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 320*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1] 321*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3,4,5,6,7] 322*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17] 323*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 324*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 325*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 326*9880d681SAndroid Build Coastguard Worker} 327*9880d681SAndroid Build Coastguard Worker 328*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) { 329*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08: 330*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 331*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7] 332*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1] 333*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 334*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 335*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 336*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 337*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 338*9880d681SAndroid Build Coastguard Worker; 339*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08: 340*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 341*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15] 342*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,0,1,1,4,4,5,5] 343*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 344*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8> 345*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 346*9880d681SAndroid Build Coastguard Worker} 347*9880d681SAndroid Build Coastguard Worker 348*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_07_07_07_07_07_07_07_15_15_15_15_15_15_15_15(<16 x i16> %a, <16 x i16> %b) { 349*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_07_07_07_07_07_07_07_15_15_15_15_15_15_15_15: 350*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 351*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm0[0,1,2,3,7,7,7,7] 352*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[2,2,3,3] 353*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 354*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,7,7,7] 355*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,2,3,3] 356*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 357*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 358*9880d681SAndroid Build Coastguard Worker; 359*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_07_07_07_07_07_07_07_15_15_15_15_15_15_15_15: 360*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 361*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,7,7,7,7,8,9,10,11,15,15,15,15] 362*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,2,3,3,6,6,7,7] 363*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 364*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15> 365*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 366*9880d681SAndroid Build Coastguard Worker} 367*9880d681SAndroid Build Coastguard Worker 368*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12(<16 x i16> %a, <16 x i16> %b) { 369*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12: 370*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 371*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7] 372*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4] 373*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 374*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 375*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4] 376*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 377*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 378*9880d681SAndroid Build Coastguard Worker; 379*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12: 380*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 381*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15] 382*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12] 383*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 384*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4, i32 8, i32 8, i32 8, i32 8, i32 12, i32 12, i32 12, i32 12> 385*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 386*9880d681SAndroid Build Coastguard Worker} 387*9880d681SAndroid Build Coastguard Worker 388*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_03_03_03_03_07_07_07_07_11_11_11_11_15_15_15_15(<16 x i16> %a, <16 x i16> %b) { 389*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_03_03_03_03_07_07_07_07_11_11_11_11_15_15_15_15: 390*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 391*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[3,3,3,3,4,5,6,7] 392*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,7,7,7] 393*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 394*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7] 395*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,7,7,7] 396*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 397*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 398*9880d681SAndroid Build Coastguard Worker; 399*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_03_03_03_03_07_07_07_07_11_11_11_11_15_15_15_15: 400*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 401*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[3,3,3,3,4,5,6,7,11,11,11,11,12,13,14,15] 402*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,7,7,7,7,8,9,10,11,15,15,15,15] 403*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 404*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 3, i32 3, i32 3, i32 3, i32 7, i32 7, i32 7, i32 7, i32 11, i32 11, i32 11, i32 11, i32 15, i32 15, i32 15, i32 15> 405*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 406*9880d681SAndroid Build Coastguard Worker} 407*9880d681SAndroid Build Coastguard Worker 408*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_02_02_04_04_06_06_08_08_10_10_12_12_14_14(<16 x i16> %a, <16 x i16> %b) { 409*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_02_02_04_04_06_06_08_08_10_10_12_12_14_14: 410*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 411*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,2,2,4,5,6,7] 412*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,6,6] 413*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 414*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7] 415*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,6,6] 416*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 417*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 418*9880d681SAndroid Build Coastguard Worker; 419*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_02_02_04_04_06_06_08_08_10_10_12_12_14_14: 420*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 421*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[0,0,2,2,4,5,6,7,8,8,10,10,12,13,14,15] 422*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,4,6,6,8,9,10,11,12,12,14,14] 423*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 424*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14> 425*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 426*9880d681SAndroid Build Coastguard Worker} 427*9880d681SAndroid Build Coastguard Worker 428*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_01_01_03_03_05_05_07_07_09_09_11_11_13_13_15_15(<16 x i16> %a, <16 x i16> %b) { 429*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_01_01_03_03_05_05_07_07_09_09_11_11_13_13_15_15: 430*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 431*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[1,1,3,3,4,5,6,7] 432*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,7,7] 433*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 434*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[1,1,3,3,4,5,6,7] 435*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,7,7] 436*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 437*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 438*9880d681SAndroid Build Coastguard Worker; 439*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_01_01_03_03_05_05_07_07_09_09_11_11_13_13_15_15: 440*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 441*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[1,1,3,3,4,5,6,7,9,9,11,11,12,13,14,15] 442*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,5,5,7,7,8,9,10,11,13,13,15,15] 443*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 444*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15> 445*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 446*9880d681SAndroid Build Coastguard Worker} 447*9880d681SAndroid Build Coastguard Worker 448*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_01_00_00_00_00_00_00_00_01_00(<16 x i16> %a, <16 x i16> %b) { 449*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_01_00_00_00_00_00_00_00_01_00: 450*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 451*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1] 452*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 453*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 454*9880d681SAndroid Build Coastguard Worker; 455*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_01_00_00_00_00_00_00_00_01_00: 456*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 457*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1] 458*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1] 459*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 460*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0> 461*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 462*9880d681SAndroid Build Coastguard Worker} 463*9880d681SAndroid Build Coastguard Worker 464*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_02_00_00_00_00_00_00_00_02_00_00(<16 x i16> %a, <16 x i16> %b) { 465*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_02_00_00_00_00_00_00_00_02_00_00: 466*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 467*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1] 468*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 469*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 470*9880d681SAndroid Build Coastguard Worker; 471*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_02_00_00_00_00_00_00_00_02_00_00: 472*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 473*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1] 474*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1] 475*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 476*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0> 477*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 478*9880d681SAndroid Build Coastguard Worker} 479*9880d681SAndroid Build Coastguard Worker 480*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_03_00_00_00_00_00_00_00_03_00_00_00(<16 x i16> %a, <16 x i16> %b) { 481*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_03_00_00_00_00_00_00_00_03_00_00_00: 482*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 483*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1] 484*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 485*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 486*9880d681SAndroid Build Coastguard Worker; 487*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_03_00_00_00_00_00_00_00_03_00_00_00: 488*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 489*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1] 490*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1] 491*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 492*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0> 493*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 494*9880d681SAndroid Build Coastguard Worker} 495*9880d681SAndroid Build Coastguard Worker 496*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_04_00_00_00_00_00_00_00_04_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 497*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_04_00_00_00_00_00_00_00_04_00_00_00_00: 498*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 499*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1] 500*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 501*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 502*9880d681SAndroid Build Coastguard Worker; 503*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_04_00_00_00_00_00_00_00_04_00_00_00_00: 504*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 505*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1] 506*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1] 507*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 508*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0> 509*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 510*9880d681SAndroid Build Coastguard Worker} 511*9880d681SAndroid Build Coastguard Worker 512*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_05_00_00_00_00_00_00_00_05_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 513*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_05_00_00_00_00_00_00_00_05_00_00_00_00_00: 514*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 515*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1] 516*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 517*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 518*9880d681SAndroid Build Coastguard Worker; 519*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_05_00_00_00_00_00_00_00_05_00_00_00_00_00: 520*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 521*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1] 522*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1] 523*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 524*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0> 525*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 526*9880d681SAndroid Build Coastguard Worker} 527*9880d681SAndroid Build Coastguard Worker 528*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_06_00_00_00_00_00_00_00_06_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 529*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_06_00_00_00_00_00_00_00_06_00_00_00_00_00_00: 530*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 531*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1] 532*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 533*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 534*9880d681SAndroid Build Coastguard Worker; 535*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_06_00_00_00_00_00_00_00_06_00_00_00_00_00_00: 536*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 537*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1] 538*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1] 539*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 540*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 541*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 542*9880d681SAndroid Build Coastguard Worker} 543*9880d681SAndroid Build Coastguard Worker 544*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) { 545*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00: 546*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 547*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1] 548*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 549*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 550*9880d681SAndroid Build Coastguard Worker; 551*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00: 552*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 553*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1] 554*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1] 555*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 556*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 557*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 558*9880d681SAndroid Build Coastguard Worker} 559*9880d681SAndroid Build Coastguard Worker 560*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_17_02_19_04_21_06_23_08_25_10_27_12_29_14_31(<16 x i16> %a, <16 x i16> %b) { 561*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_17_02_19_04_21_06_23_08_25_10_27_12_29_14_31: 562*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 563*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovaps {{.*#+}} ymm2 = [65535,0,65535,0,65535,0,65535,0,65535,0,65535,0,65535,0,65535,0] 564*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vandnps %ymm1, %ymm2, %ymm1 565*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vandps %ymm2, %ymm0, %ymm0 566*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0 567*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 568*9880d681SAndroid Build Coastguard Worker; 569*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_17_02_19_04_21_06_23_08_25_10_27_12_29_14_31: 570*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 571*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15] 572*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 573*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31> 574*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 575*9880d681SAndroid Build Coastguard Worker} 576*9880d681SAndroid Build Coastguard Worker 577*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_01_18_03_20_05_22_07_24_09_26_11_28_13_30_15(<16 x i16> %a, <16 x i16> %b) { 578*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_01_18_03_20_05_22_07_24_09_26_11_28_13_30_15: 579*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 580*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovaps {{.*#+}} ymm2 = [65535,0,65535,0,65535,0,65535,0,65535,0,65535,0,65535,0,65535,0] 581*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vandnps %ymm0, %ymm2, %ymm0 582*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vandps %ymm2, %ymm1, %ymm1 583*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vorps %ymm0, %ymm1, %ymm0 584*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 585*9880d681SAndroid Build Coastguard Worker; 586*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_01_18_03_20_05_22_07_24_09_26_11_28_13_30_15: 587*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 588*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4],ymm0[5],ymm1[6],ymm0[7],ymm1[8],ymm0[9],ymm1[10],ymm0[11],ymm1[12],ymm0[13],ymm1[14],ymm0[15] 589*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 590*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 16, i32 1, i32 18, i32 3, i32 20, i32 5, i32 22, i32 7, i32 24, i32 9, i32 26, i32 11, i32 28, i32 13, i32 30, i32 15> 591*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 592*9880d681SAndroid Build Coastguard Worker} 593*9880d681SAndroid Build Coastguard Worker 594*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_18_19_04_05_22_23_08_09_26_27_12_13_30_31(<16 x i16> %a, <16 x i16> %b) { 595*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_18_19_04_05_22_23_08_09_26_27_12_13_30_31: 596*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 597*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7] 598*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 599*9880d681SAndroid Build Coastguard Worker; 600*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_18_19_04_05_22_23_08_09_26_27_12_13_30_31: 601*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 602*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7] 603*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 604*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 18, i32 19, i32 4, i32 5, i32 22, i32 23, i32 8, i32 9, i32 26, i32 27, i32 12, i32 13, i32 30, i32 31> 605*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 606*9880d681SAndroid Build Coastguard Worker} 607*9880d681SAndroid Build Coastguard Worker 608*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_17_18_19_04_05_06_07_24_25_26_27_12_13_14_15(<16 x i16> %a, <16 x i16> %b) { 609*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_17_18_19_04_05_06_07_24_25_26_27_12_13_14_15: 610*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 611*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3] 612*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 613*9880d681SAndroid Build Coastguard Worker; 614*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_17_18_19_04_05_06_07_24_25_26_27_12_13_14_15: 615*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 616*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7] 617*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 618*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 4, i32 5, i32 6, i32 7, i32 24, i32 25, i32 26, i32 27, i32 12, i32 13, i32 14, i32 15> 619*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 620*9880d681SAndroid Build Coastguard Worker} 621*9880d681SAndroid Build Coastguard Worker 622*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_31(<16 x i16> %a, <16 x i16> %b) { 623*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_31: 624*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 625*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovaps {{.*#+}} ymm2 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0] 626*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vandnps %ymm1, %ymm2, %ymm1 627*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vandps %ymm2, %ymm0, %ymm0 628*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0 629*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 630*9880d681SAndroid Build Coastguard Worker; 631*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_31: 632*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 633*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0] 634*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm0 635*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 636*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 31> 637*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 638*9880d681SAndroid Build Coastguard Worker} 639*9880d681SAndroid Build Coastguard Worker 640*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15(<16 x i16> %a, <16 x i16> %b) { 641*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15: 642*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 643*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovaps {{.*#+}} ymm2 = [0,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535] 644*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vandnps %ymm1, %ymm2, %ymm1 645*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vandps %ymm2, %ymm0, %ymm0 646*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0 647*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 648*9880d681SAndroid Build Coastguard Worker; 649*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15: 650*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 651*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255] 652*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm0 653*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 654*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 16, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 655*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 656*9880d681SAndroid Build Coastguard Worker} 657*9880d681SAndroid Build Coastguard Worker 658*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_17_02_19_04_21_06_23_24_09_26_11_28_13_30_15(<16 x i16> %a, <16 x i16> %b) { 659*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_17_02_19_04_21_06_23_24_09_26_11_28_13_30_15: 660*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 661*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovaps {{.*#+}} ymm2 = [65535,0,65535,0,65535,0,65535,0,0,65535,0,65535,0,65535,0,65535] 662*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vandnps %ymm1, %ymm2, %ymm1 663*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vandps %ymm2, %ymm0, %ymm0 664*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0 665*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 666*9880d681SAndroid Build Coastguard Worker; 667*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_17_02_19_04_21_06_23_24_09_26_11_28_13_30_15: 668*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 669*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255] 670*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm0 671*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 672*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 24, i32 9, i32 26, i32 11, i32 28, i32 13, i32 30, i32 15> 673*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 674*9880d681SAndroid Build Coastguard Worker} 675*9880d681SAndroid Build Coastguard Worker 676*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_01_18_03_20_05_22_07_08_25_10_27_12_29_14_31(<16 x i16> %a, <16 x i16> %b) { 677*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_01_18_03_20_05_22_07_08_25_10_27_12_29_14_31: 678*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 679*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovaps {{.*#+}} ymm2 = [0,65535,0,65535,0,65535,0,65535,65535,0,65535,0,65535,0,65535,0] 680*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vandnps %ymm1, %ymm2, %ymm1 681*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vandps %ymm2, %ymm0, %ymm0 682*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0 683*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 684*9880d681SAndroid Build Coastguard Worker; 685*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_01_18_03_20_05_22_07_08_25_10_27_12_29_14_31: 686*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 687*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0] 688*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm0 689*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 690*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 16, i32 1, i32 18, i32 3, i32 20, i32 5, i32 22, i32 7, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31> 691*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 692*9880d681SAndroid Build Coastguard Worker} 693*9880d681SAndroid Build Coastguard Worker 694*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_18_19_20_21_06_07_08_09_26_27_12_13_30_31(<16 x i16> %a, <16 x i16> %b) { 695*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_18_19_20_21_06_07_08_09_26_27_12_13_30_31: 696*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 697*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0],ymm1[1,2],ymm0[3,4],ymm1[5],ymm0[6],ymm1[7] 698*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 699*9880d681SAndroid Build Coastguard Worker; 700*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_18_19_20_21_06_07_08_09_26_27_12_13_30_31: 701*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 702*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0],ymm1[1,2],ymm0[3,4],ymm1[5],ymm0[6],ymm1[7] 703*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 704*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 18, i32 19, i32 20, i32 21, i32 6, i32 7, i32 8, i32 9, i32 26, i32 27, i32 12, i32 13, i32 30, i32 31> 705*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 706*9880d681SAndroid Build Coastguard Worker} 707*9880d681SAndroid Build Coastguard Worker 708*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_16_00_16_00_16_00_16_00_16_00_16_00_16_00_16(<16 x i16> %a, <16 x i16> %b) { 709*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_16_00_16_00_16_00_16_00_16_00_16_00_16_00_16: 710*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 711*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 712*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0] 713*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 714*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 715*9880d681SAndroid Build Coastguard Worker; 716*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_16_00_16_00_16_00_16_00_16_00_16_00_16_00_16: 717*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 718*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 719*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastd %xmm0, %ymm0 720*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 721*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 16, i32 0, i32 16, i32 0, i32 16, i32 0, i32 16, i32 0, i32 16, i32 0, i32 16, i32 0, i32 16, i32 0, i32 16> 722*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 723*9880d681SAndroid Build Coastguard Worker} 724*9880d681SAndroid Build Coastguard Worker 725*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_16_00_16_00_16_00_16_08_24_08_24_08_24_08_24(<16 x i16> %a, <16 x i16> %b) { 726*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_16_00_16_00_16_00_16_08_24_08_24_08_24_08_24: 727*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 728*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 729*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,0,0,0] 730*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1 731*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 732*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 733*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0] 734*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm2, %ymm0 735*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 736*9880d681SAndroid Build Coastguard Worker; 737*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_16_00_16_00_16_00_16_08_24_08_24_08_24_08_24: 738*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 739*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4] 740*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm1 = ymm1[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15] 741*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,0,1,1,4,4,5,5] 742*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15] 743*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 744*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 16, i32 0, i32 16, i32 0, i32 16, i32 0, i32 16, i32 8, i32 24, i32 8, i32 24, i32 8, i32 24, i32 8, i32 24> 745*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 746*9880d681SAndroid Build Coastguard Worker} 747*9880d681SAndroid Build Coastguard Worker 748*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_16_16_16_04_05_06_07_24_24_24_24_12_13_14_15(<16 x i16> %a, <16 x i16> %b) { 749*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_16_16_16_04_05_06_07_24_24_24_24_12_13_14_15: 750*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 751*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 752*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[2,3,0,1] 753*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 754*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,0,0,0,4,5,6,7] 755*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0] 756*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 757*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7] 758*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0] 759*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 760*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 761*9880d681SAndroid Build Coastguard Worker; 762*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_16_16_16_04_05_06_07_24_24_24_24_12_13_14_15: 763*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 764*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm1 = ymm1[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15] 765*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7] 766*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 767*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 16, i32 16, i32 16, i32 16, i32 4, i32 5, i32 6, i32 7, i32 24, i32 24, i32 24, i32 24, i32 12, i32 13, i32 14, i32 15> 768*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 769*9880d681SAndroid Build Coastguard Worker} 770*9880d681SAndroid Build Coastguard Worker 771*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_19_18_17_16_07_06_05_04_27_26_25_24_15_14_13_12(<16 x i16> %a, <16 x i16> %b) { 772*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_19_18_17_16_07_06_05_04_27_26_25_24_15_14_13_12: 773*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 774*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 775*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[3,2,1,0,4,5,6,7] 776*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 777*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[2,3,2,3] 778*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[3,2,1,0,4,5,6,7] 779*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 780*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[3,2,1,0,4,5,6,7] 781*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,2,3] 782*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[3,2,1,0,4,5,6,7] 783*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0] 784*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 785*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 786*9880d681SAndroid Build Coastguard Worker; 787*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_19_18_17_16_07_06_05_04_27_26_25_24_15_14_13_12: 788*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 789*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7] 790*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[3,2,1,0,4,5,6,7,11,10,9,8,12,13,14,15] 791*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,7,6,5,4,8,9,10,11,15,14,13,12] 792*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 793*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 19, i32 18, i32 17, i32 16, i32 7, i32 6, i32 5, i32 4, i32 27, i32 26, i32 25, i32 24, i32 15, i32 14, i32 13, i32 12> 794*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 795*9880d681SAndroid Build Coastguard Worker} 796*9880d681SAndroid Build Coastguard Worker 797*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_19_18_17_16_03_02_01_00_27_26_25_24_11_10_09_08(<16 x i16> %a, <16 x i16> %b) { 798*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_19_18_17_16_03_02_01_00_27_26_25_24_11_10_09_08: 799*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 800*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 801*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 802*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3] 803*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [12,13,8,9,4,5,0,1,14,15,10,11,6,7,2,3] 804*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm3, %xmm2, %xmm2 805*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 806*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm3, %xmm0, %xmm0 807*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 808*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 809*9880d681SAndroid Build Coastguard Worker; 810*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_19_18_17_16_03_02_01_00_27_26_25_24_11_10_09_08: 811*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 812*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm1 = ymm1[3,2,1,0,4,5,6,7,11,10,9,8,12,13,14,15] 813*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,1,0,1,4,5,4,5] 814*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,7,6,5,4,8,9,10,11,15,14,13,12] 815*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7] 816*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 817*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 19, i32 18, i32 17, i32 16, i32 3, i32 2, i32 1, i32 0, i32 27, i32 26, i32 25, i32 24, i32 11, i32 10, i32 9, i32 8> 818*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 819*9880d681SAndroid Build Coastguard Worker} 820*9880d681SAndroid Build Coastguard Worker 821*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_01_00_08_08_08_08_08_08_09_08(<16 x i16> %a, <16 x i16> %b) { 822*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_01_00_08_08_08_08_08_08_09_08: 823*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 824*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 825*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1] 826*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm1 827*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 828*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 829*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 830*9880d681SAndroid Build Coastguard Worker; 831*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_01_00_08_08_08_08_08_08_09_08: 832*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 833*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1,16,17,16,17,16,17,16,17,16,17,16,17,18,19,16,17] 834*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 835*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 9, i32 8> 836*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 837*9880d681SAndroid Build Coastguard Worker} 838*9880d681SAndroid Build Coastguard Worker 839*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_02_00_00_08_08_08_08_08_10_08_08(<16 x i16> %a, <16 x i16> %b) { 840*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_02_00_00_08_08_08_08_08_10_08_08: 841*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 842*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 843*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1] 844*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm1 845*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 846*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 847*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 848*9880d681SAndroid Build Coastguard Worker; 849*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_02_00_00_08_08_08_08_08_10_08_08: 850*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 851*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1,16,17,16,17,16,17,16,17,16,17,20,21,16,17,16,17] 852*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 853*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 10, i32 8, i32 8> 854*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 855*9880d681SAndroid Build Coastguard Worker} 856*9880d681SAndroid Build Coastguard Worker 857*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_03_00_00_00_08_08_08_08_11_08_08_08(<16 x i16> %a, <16 x i16> %b) { 858*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_03_00_00_00_08_08_08_08_11_08_08_08: 859*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 860*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 861*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1] 862*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm1 863*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 864*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 865*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 866*9880d681SAndroid Build Coastguard Worker; 867*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_03_00_00_00_08_08_08_08_11_08_08_08: 868*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 869*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1,16,17,16,17,16,17,16,17,22,23,16,17,16,17,16,17] 870*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 871*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 11, i32 8, i32 8, i32 8> 872*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 873*9880d681SAndroid Build Coastguard Worker} 874*9880d681SAndroid Build Coastguard Worker 875*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_04_00_00_00_00_08_08_08_12_08_08_08_08(<16 x i16> %a, <16 x i16> %b) { 876*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_04_00_00_00_00_08_08_08_12_08_08_08_08: 877*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 878*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 879*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1] 880*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm1 881*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 882*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 883*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 884*9880d681SAndroid Build Coastguard Worker; 885*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_04_00_00_00_00_08_08_08_12_08_08_08_08: 886*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 887*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1,16,17,16,17,16,17,24,25,16,17,16,17,16,17,16,17] 888*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 889*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 12, i32 8, i32 8, i32 8, i32 8> 890*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 891*9880d681SAndroid Build Coastguard Worker} 892*9880d681SAndroid Build Coastguard Worker 893*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_05_00_00_00_00_00_08_08_13_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) { 894*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_05_00_00_00_00_00_08_08_13_08_08_08_08_08: 895*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 896*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 897*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1] 898*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm1 899*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 900*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 901*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 902*9880d681SAndroid Build Coastguard Worker; 903*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_05_00_00_00_00_00_08_08_13_08_08_08_08_08: 904*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 905*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1,16,17,16,17,26,27,16,17,16,17,16,17,16,17,16,17] 906*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 907*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 13, i32 8, i32 8, i32 8, i32 8, i32 8> 908*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 909*9880d681SAndroid Build Coastguard Worker} 910*9880d681SAndroid Build Coastguard Worker 911*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_06_00_00_00_00_00_00_08_14_08_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) { 912*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_06_00_00_00_00_00_00_08_14_08_08_08_08_08_08: 913*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 914*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 915*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1] 916*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm1 917*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 918*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 919*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 920*9880d681SAndroid Build Coastguard Worker; 921*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_06_00_00_00_00_00_00_08_14_08_08_08_08_08_08: 922*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 923*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1,16,17,28,29,16,17,16,17,16,17,16,17,16,17,16,17] 924*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 925*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 14, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8> 926*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 927*9880d681SAndroid Build Coastguard Worker} 928*9880d681SAndroid Build Coastguard Worker 929*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_00_00_00_00_00_00_00_15_08_08_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) { 930*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_00_00_00_00_00_00_00_15_08_08_08_08_08_08_08: 931*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 932*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 933*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1] 934*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm1 935*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 936*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 937*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 938*9880d681SAndroid Build Coastguard Worker; 939*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_00_00_00_00_00_00_00_15_08_08_08_08_08_08_08: 940*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 941*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1,30,31,16,17,16,17,16,17,16,17,16,17,16,17,16,17] 942*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 943*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 15, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8> 944*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 945*9880d681SAndroid Build Coastguard Worker} 946*9880d681SAndroid Build Coastguard Worker 947*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_16_01_17_02_18_03_19_08_24_09_25_10_26_11_27(<16 x i16> %a, <16 x i16> %b) { 948*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_19_08_24_09_25_10_26_11_27: 949*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 950*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 951*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 952*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3] 953*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 954*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 955*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 956*9880d681SAndroid Build Coastguard Worker; 957*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_19_08_24_09_25_10_26_11_27: 958*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 959*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11] 960*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 961*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27> 962*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 963*9880d681SAndroid Build Coastguard Worker} 964*9880d681SAndroid Build Coastguard Worker 965*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_20_05_21_06_22_07_23_12_28_13_29_14_30_15_31(<16 x i16> %a, <16 x i16> %b) { 966*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_20_05_21_06_22_07_23_12_28_13_29_14_30_15_31: 967*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 968*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 969*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 970*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 971*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 972*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 973*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 974*9880d681SAndroid Build Coastguard Worker; 975*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_20_05_21_06_22_07_23_12_28_13_29_14_30_15_31: 976*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 977*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpckhwd {{.*#+}} ymm0 = ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15] 978*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 979*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 980*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 981*9880d681SAndroid Build Coastguard Worker} 982*9880d681SAndroid Build Coastguard Worker 983*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_16_01_17_02_18_03_19_12_28_13_29_14_30_15_31(<16 x i16> %a, <16 x i16> %b) { 984*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_19_12_28_13_29_14_30_15_31: 985*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 986*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 987*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 988*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 989*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 990*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 991*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 992*9880d681SAndroid Build Coastguard Worker; 993*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_19_12_28_13_29_14_30_15_31: 994*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 995*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,0,1,u,u,2,3,u,u,4,5,u,u,6,7,u,u,24,25,u,u,26,27,u,u,28,29,u,u,30,31] 996*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,u,u,2,3,u,u,4,5,u,u,6,7,u,u,24,25,u,u,26,27,u,u,28,29,u,u,30,31,u,u] 997*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15] 998*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 999*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 1000*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1001*9880d681SAndroid Build Coastguard Worker} 1002*9880d681SAndroid Build Coastguard Worker 1003*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_20_05_21_06_22_07_23_08_24_09_25_10_26_11_27(<16 x i16> %a, <16 x i16> %b) { 1004*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_20_05_21_06_22_07_23_08_24_09_25_10_26_11_27: 1005*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1006*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 1007*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 1008*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3] 1009*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 1010*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 1011*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1012*9880d681SAndroid Build Coastguard Worker; 1013*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_20_05_21_06_22_07_23_08_24_09_25_10_26_11_27: 1014*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1015*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,8,9,u,u,10,11,u,u,12,13,u,u,14,15,u,u,16,17,u,u,18,19,u,u,20,21,u,u,22,23] 1016*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[8,9,u,u,10,11,u,u,12,13,u,u,14,15,u,u,16,17,u,u,18,19,u,u,20,21,u,u,22,23,u,u] 1017*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15] 1018*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1019*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27> 1020*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1021*9880d681SAndroid Build Coastguard Worker} 1022*9880d681SAndroid Build Coastguard Worker 1023*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_01_00_08_09_08_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) { 1024*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_01_00_08_09_08_08_08_08_08_08: 1025*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1026*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1] 1027*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1028*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,0,1,0,1,0,1,0,1,0,1,0,1] 1029*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1030*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1031*9880d681SAndroid Build Coastguard Worker; 1032*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_01_00_08_09_08_08_08_08_08_08: 1033*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1034*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1,16,17,18,19,16,17,16,17,16,17,16,17,16,17,16,17] 1035*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1036*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 8, i32 9, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8> 1037*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1038*9880d681SAndroid Build Coastguard Worker} 1039*9880d681SAndroid Build Coastguard Worker 1040*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_02_00_00_08_08_10_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) { 1041*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_02_00_00_08_08_10_08_08_08_08_08: 1042*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1043*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1] 1044*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1045*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,4,5,0,1,0,1,0,1,0,1,0,1] 1046*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1047*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1048*9880d681SAndroid Build Coastguard Worker; 1049*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_02_00_00_08_08_10_08_08_08_08_08: 1050*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1051*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1,16,17,16,17,20,21,16,17,16,17,16,17,16,17,16,17] 1052*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1053*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0, i32 8, i32 8, i32 10, i32 8, i32 8, i32 8, i32 8, i32 8> 1054*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1055*9880d681SAndroid Build Coastguard Worker} 1056*9880d681SAndroid Build Coastguard Worker 1057*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_03_00_00_00_08_08_08_11_08_08_08_08(<16 x i16> %a, <16 x i16> %b) { 1058*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_03_00_00_00_08_08_08_11_08_08_08_08: 1059*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1060*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1] 1061*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1062*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,6,7,0,1,0,1,0,1,0,1] 1063*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1064*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1065*9880d681SAndroid Build Coastguard Worker; 1066*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_03_00_00_00_08_08_08_11_08_08_08_08: 1067*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1068*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1,16,17,16,17,16,17,22,23,16,17,16,17,16,17,16,17] 1069*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1070*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 11, i32 8, i32 8, i32 8, i32 8> 1071*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1072*9880d681SAndroid Build Coastguard Worker} 1073*9880d681SAndroid Build Coastguard Worker 1074*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_04_00_00_00_00_08_08_08_08_12_08_08_08(<16 x i16> %a, <16 x i16> %b) { 1075*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_04_00_00_00_00_08_08_08_08_12_08_08_08: 1076*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1077*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1] 1078*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1079*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,8,9,0,1,0,1,0,1] 1080*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1081*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1082*9880d681SAndroid Build Coastguard Worker; 1083*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_04_00_00_00_00_08_08_08_08_12_08_08_08: 1084*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1085*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,24,25,16,17,16,17,16,17] 1086*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1087*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 12, i32 8, i32 8, i32 8> 1088*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1089*9880d681SAndroid Build Coastguard Worker} 1090*9880d681SAndroid Build Coastguard Worker 1091*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_05_00_00_00_00_00_08_08_08_08_08_13_08_08(<16 x i16> %a, <16 x i16> %b) { 1092*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_05_00_00_00_00_00_08_08_08_08_08_13_08_08: 1093*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1094*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1] 1095*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1096*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,10,11,0,1,0,1] 1097*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1098*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1099*9880d681SAndroid Build Coastguard Worker; 1100*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_05_00_00_00_00_00_08_08_08_08_08_13_08_08: 1101*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1102*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,26,27,16,17,16,17] 1103*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1104*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 13, i32 8, i32 8> 1105*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1106*9880d681SAndroid Build Coastguard Worker} 1107*9880d681SAndroid Build Coastguard Worker 1108*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_06_00_00_00_00_00_00_08_08_08_08_08_08_14_08(<16 x i16> %a, <16 x i16> %b) { 1109*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_06_00_00_00_00_00_00_08_08_08_08_08_08_14_08: 1110*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1111*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1] 1112*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1113*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,12,13,0,1] 1114*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1115*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1116*9880d681SAndroid Build Coastguard Worker; 1117*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_06_00_00_00_00_00_00_08_08_08_08_08_08_14_08: 1118*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1119*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,28,29,16,17] 1120*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1121*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 14, i32 8> 1122*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1123*9880d681SAndroid Build Coastguard Worker} 1124*9880d681SAndroid Build Coastguard Worker 1125*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_00_00_00_00_00_00_00_08_08_08_08_08_08_08_15(<16 x i16> %a, <16 x i16> %b) { 1126*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_00_00_00_00_00_00_00_08_08_08_08_08_08_08_15: 1127*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1128*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1] 1129*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1130*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,14,15] 1131*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1132*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1133*9880d681SAndroid Build Coastguard Worker; 1134*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_00_00_00_00_00_00_00_08_08_08_08_08_08_08_15: 1135*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1136*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,30,31] 1137*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1138*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 15> 1139*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1140*9880d681SAndroid Build Coastguard Worker} 1141*9880d681SAndroid Build Coastguard Worker 1142*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_02_02_04_04_06_06_14_14_12_12_10_10_08_08(<16 x i16> %a, <16 x i16> %b) { 1143*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_02_02_04_04_06_06_14_14_12_12_10_10_08_08: 1144*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1145*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,2,2,4,5,6,7] 1146*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,6,6] 1147*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1148*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[12,13,12,13,8,9,8,9,4,5,4,5,0,1,0,1] 1149*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1150*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1151*9880d681SAndroid Build Coastguard Worker; 1152*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_02_02_04_04_06_06_14_14_12_12_10_10_08_08: 1153*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1154*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,4,5,4,5,8,9,8,9,12,13,12,13,28,29,28,29,24,25,24,25,20,21,20,21,16,17,16,17] 1155*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1156*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 14, i32 14, i32 12, i32 12, i32 10, i32 10, i32 8, i32 8> 1157*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1158*9880d681SAndroid Build Coastguard Worker} 1159*9880d681SAndroid Build Coastguard Worker 1160*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_04_04_04_00_00_00_00_08_08_08_08_12_12_12_12(<16 x i16> %a, <16 x i16> %b) { 1161*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_04_04_04_00_00_00_00_08_08_08_08_12_12_12_12: 1162*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1163*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm0[8,9,8,9,8,9,8,9,0,1,0,1,0,1,0,1] 1164*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1165*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 1166*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4] 1167*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1168*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1169*9880d681SAndroid Build Coastguard Worker; 1170*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_04_04_04_00_00_00_00_08_08_08_08_12_12_12_12: 1171*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1172*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[8,9,8,9,8,9,8,9,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,24,25,24,25,24,25,24,25] 1173*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1174*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 4, i32 4, i32 4, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 12, i32 12, i32 12, i32 12> 1175*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1176*9880d681SAndroid Build Coastguard Worker} 1177*9880d681SAndroid Build Coastguard Worker 1178*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_uu_uu_00_00_00_00_00_08_08_uu_uu_08_08_14_08(<16 x i16> %a, <16 x i16> %b) { 1179*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_uu_uu_00_00_00_00_00_08_08_uu_uu_08_08_14_08: 1180*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1181*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7] 1182*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1] 1183*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1184*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,4,5,6,7,0,1,0,1,12,13,0,1] 1185*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1186*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1187*9880d681SAndroid Build Coastguard Worker; 1188*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_uu_uu_00_00_00_00_00_08_08_uu_uu_08_08_14_08: 1189*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1190*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,u,u,u,u,0,1,0,1,0,1,0,1,0,1,16,17,16,17,u,u,u,u,16,17,16,17,28,29,16,17] 1191*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1192*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 undef, i32 undef, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 undef, i32 undef, i32 8, i32 8, i32 14, i32 8> 1193*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1194*9880d681SAndroid Build Coastguard Worker} 1195*9880d681SAndroid Build Coastguard Worker 1196*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_uu_00_00_00_00_00_00_08_08_uu_uu_08_08_08_15(<16 x i16> %a, <16 x i16> %b) { 1197*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_uu_00_00_00_00_00_00_08_08_uu_uu_08_08_08_15: 1198*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1199*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm0[14,15,2,3,0,1,0,1,0,1,0,1,0,1,0,1] 1200*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1201*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,4,5,6,7,0,1,0,1,0,1,14,15] 1202*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1203*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1204*9880d681SAndroid Build Coastguard Worker; 1205*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_uu_00_00_00_00_00_00_08_08_uu_uu_08_08_08_15: 1206*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1207*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[14,15,u,u,0,1,0,1,0,1,0,1,0,1,0,1,16,17,16,17,u,u,u,u,16,17,16,17,16,17,30,31] 1208*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1209*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 undef, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 undef, i32 undef, i32 8, i32 8, i32 8, i32 15> 1210*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1211*9880d681SAndroid Build Coastguard Worker} 1212*9880d681SAndroid Build Coastguard Worker 1213*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_uu_uu_02_04_04_uu_06_14_14_uu_12_10_10_08_08(<16 x i16> %a, <16 x i16> %b) { 1214*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_uu_uu_02_04_04_uu_06_14_14_uu_12_10_10_08_08: 1215*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1216*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,1,2,2,4,5,6,7] 1217*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,6,6] 1218*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1219*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[12,13,12,13,12,13,8,9,4,5,4,5,0,1,0,1] 1220*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1221*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1222*9880d681SAndroid Build Coastguard Worker; 1223*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_uu_uu_02_04_04_uu_06_14_14_uu_12_10_10_08_08: 1224*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1225*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,u,u,u,u,4,5,8,9,8,9,u,u,12,13,28,29,28,29,u,u,24,25,20,21,20,21,16,17,16,17] 1226*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1227*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 undef, i32 undef, i32 2, i32 4, i32 4, i32 undef, i32 6, i32 14, i32 14, i32 undef, i32 12, i32 10, i32 10, i32 8, i32 8> 1228*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1229*9880d681SAndroid Build Coastguard Worker} 1230*9880d681SAndroid Build Coastguard Worker 1231*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_04_04_04_uu_uu_uu_uu_08_08_08_uu_uu_12_12_12(<16 x i16> %a, <16 x i16> %b) { 1232*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_04_04_04_uu_uu_uu_uu_08_08_08_uu_uu_12_12_12: 1233*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1234*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,1,2,3] 1235*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7] 1236*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1237*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,3,4,5,6,7] 1238*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4] 1239*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1240*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1241*9880d681SAndroid Build Coastguard Worker; 1242*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_04_04_04_uu_uu_uu_uu_08_08_08_uu_uu_12_12_12: 1243*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1244*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[8,9,8,9,8,9,8,9,u,u,u,u,u,u,u,u,16,17,16,17,16,17,u,u,u,u,24,25,24,25,24,25] 1245*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1246*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 4, i32 4, i32 4, i32 undef, i32 undef, i32 undef, i32 undef, i32 8, i32 8, i32 8, i32 undef, i32 undef, i32 12, i32 12, i32 12> 1247*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1248*9880d681SAndroid Build Coastguard Worker} 1249*9880d681SAndroid Build Coastguard Worker 1250*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_04_04_04_04_16_16_16_16_20_20_20_20(<16 x i16> %a, <16 x i16> %b) { 1251*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_04_16_16_16_16_20_20_20_20: 1252*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1253*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 1254*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4] 1255*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7] 1256*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4] 1257*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1258*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1259*9880d681SAndroid Build Coastguard Worker; 1260*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_04_16_16_16_16_20_20_20_20: 1261*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1262*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1263*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15] 1264*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12] 1265*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1266*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4, i32 16, i32 16, i32 16, i32 16, i32 20, i32 20, i32 20, i32 20> 1267*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1268*9880d681SAndroid Build Coastguard Worker} 1269*9880d681SAndroid Build Coastguard Worker 1270*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_08_08_08_08_12_12_12_12_16_16_16_16_20_20_20_20(<16 x i16> %a, <16 x i16> %b) { 1271*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_08_08_08_08_12_12_12_12_16_16_16_16_20_20_20_20: 1272*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1273*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1274*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 1275*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4] 1276*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7] 1277*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4] 1278*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1279*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1280*9880d681SAndroid Build Coastguard Worker; 1281*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_08_08_08_08_12_12_12_12_16_16_16_16_20_20_20_20: 1282*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1283*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[0,1] 1284*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15] 1285*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12] 1286*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1287*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 8, i32 8, i32 8, i32 8, i32 12, i32 12, i32 12, i32 12, i32 16, i32 16, i32 16, i32 16, i32 20, i32 20, i32 20, i32 20> 1288*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1289*9880d681SAndroid Build Coastguard Worker} 1290*9880d681SAndroid Build Coastguard Worker 1291*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_08_08_08_08_12_12_12_12_24_24_24_24_28_28_28_28(<16 x i16> %a, <16 x i16> %b) { 1292*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_08_08_08_08_12_12_12_12_24_24_24_24_28_28_28_28: 1293*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1294*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1295*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 1296*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4] 1297*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1 1298*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7] 1299*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4] 1300*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1301*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1302*9880d681SAndroid Build Coastguard Worker; 1303*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_08_08_08_08_12_12_12_12_24_24_24_24_28_28_28_28: 1304*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1305*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[2,3] 1306*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15] 1307*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12] 1308*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1309*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 8, i32 8, i32 8, i32 8, i32 12, i32 12, i32 12, i32 12, i32 24, i32 24, i32 24, i32 24, i32 28, i32 28, i32 28, i32 28> 1310*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1311*9880d681SAndroid Build Coastguard Worker} 1312*9880d681SAndroid Build Coastguard Worker 1313*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_04_04_04_04_24_24_24_24_28_28_28_28(<16 x i16> %a, <16 x i16> %b) { 1314*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_04_24_24_24_24_28_28_28_28: 1315*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1316*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 1317*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4] 1318*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1 1319*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7] 1320*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4] 1321*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1322*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1323*9880d681SAndroid Build Coastguard Worker; 1324*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_04_24_24_24_24_28_28_28_28: 1325*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1326*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7] 1327*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15] 1328*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12] 1329*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1330*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4, i32 24, i32 24, i32 24, i32 24, i32 28, i32 28, i32 28, i32 28> 1331*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1332*9880d681SAndroid Build Coastguard Worker} 1333*9880d681SAndroid Build Coastguard Worker 1334*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_16_01_17_02_18_03_19_04_20_05_21_06_22_07_23(<16 x i16> %a, <16 x i16> %b) { 1335*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_19_04_20_05_21_06_22_07_23: 1336*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1337*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 1338*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1339*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 1340*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1341*9880d681SAndroid Build Coastguard Worker; 1342*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_19_04_20_05_21_06_22_07_23: 1343*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1344*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 1345*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1346*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0 1347*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1348*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23> 1349*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1350*9880d681SAndroid Build Coastguard Worker} 1351*9880d681SAndroid Build Coastguard Worker 1352*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_zz_zz_zz_zz_zz_zz_zz_16_zz_zz_zz_zz_zz_zz_zz_24(<16 x i16> %a) { 1353*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_zz_zz_zz_zz_zz_zz_zz_16_zz_zz_zz_zz_zz_zz_zz_24: 1354*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1355*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1] 1356*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1357*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1] 1358*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1359*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1360*9880d681SAndroid Build Coastguard Worker; 1361*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_zz_zz_zz_zz_zz_zz_zz_16_zz_zz_zz_zz_zz_zz_zz_24: 1362*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1363*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpslldq {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[16,17] 1364*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1365*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> zeroinitializer, <16 x i16> %a, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 16, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 24> 1366*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1367*9880d681SAndroid Build Coastguard Worker} 1368*9880d681SAndroid Build Coastguard Worker 1369*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_17_18_19_20_21_22_23_zz_25_26_27_28_29_30_31_zz(<16 x i16> %a) { 1370*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_17_18_19_20_21_22_23_zz_25_26_27_28_29_30_31_zz: 1371*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1372*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrldq {{.*#+}} xmm1 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero 1373*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1374*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero 1375*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1376*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1377*9880d681SAndroid Build Coastguard Worker; 1378*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_17_18_19_20_21_22_23_zz_25_26_27_28_29_30_31_zz: 1379*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1380*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrldq {{.*#+}} ymm0 = ymm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero,ymm0[18,19,20,21,22,23,24,25,26,27,28,29,30,31],zero,zero 1381*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1382*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> zeroinitializer, <16 x i16> %a, <16 x i32> <i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 0, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 0> 1383*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1384*9880d681SAndroid Build Coastguard Worker} 1385*9880d681SAndroid Build Coastguard Worker 1386*9880d681SAndroid Build Coastguard Worker; 1387*9880d681SAndroid Build Coastguard Worker; Shuffle to logical bit shifts 1388*9880d681SAndroid Build Coastguard Worker; 1389*9880d681SAndroid Build Coastguard Worker 1390*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_zz_00_zz_02_zz_04_zz_06_zz_08_zz_10_zz_12_zz_14(<16 x i16> %a) { 1391*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_zz_00_zz_02_zz_04_zz_06_zz_08_zz_10_zz_12_zz_14: 1392*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1393*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslld $16, %xmm0, %xmm1 1394*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1395*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslld $16, %xmm0, %xmm0 1396*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1397*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1398*9880d681SAndroid Build Coastguard Worker; 1399*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_zz_00_zz_02_zz_04_zz_06_zz_08_zz_10_zz_12_zz_14: 1400*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1401*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpslld $16, %ymm0, %ymm0 1402*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1403*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> zeroinitializer, <16 x i32> <i32 16, i32 0, i32 16, i32 2, i32 16, i32 4, i32 16, i32 6, i32 16, i32 8, i32 16, i32 10, i32 16, i32 12, i32 16, i32 14> 1404*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1405*9880d681SAndroid Build Coastguard Worker} 1406*9880d681SAndroid Build Coastguard Worker 1407*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_zz_zz_zz_00_zz_zz_zz_04_zz_zz_zz_08_zz_zz_zz_12(<16 x i16> %a) { 1408*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_zz_zz_zz_00_zz_zz_zz_04_zz_zz_zz_08_zz_zz_zz_12: 1409*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1410*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsllq $48, %xmm0, %xmm1 1411*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1412*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsllq $48, %xmm0, %xmm0 1413*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1414*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1415*9880d681SAndroid Build Coastguard Worker; 1416*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_zz_zz_zz_00_zz_zz_zz_04_zz_zz_zz_08_zz_zz_zz_12: 1417*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1418*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllq $48, %ymm0, %ymm0 1419*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1420*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> zeroinitializer, <16 x i32> <i32 16, i32 16, i32 16, i32 0, i32 16, i32 16, i32 16, i32 4, i32 16, i32 16, i32 16, i32 8, i32 16, i32 16, i32 16, i32 12> 1421*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1422*9880d681SAndroid Build Coastguard Worker} 1423*9880d681SAndroid Build Coastguard Worker 1424*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz(<16 x i16> %a) { 1425*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz: 1426*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1427*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrld $16, %xmm0, %xmm1 1428*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1429*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrld $16, %xmm0, %xmm0 1430*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1431*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1432*9880d681SAndroid Build Coastguard Worker; 1433*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz: 1434*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1435*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrld $16, %ymm0, %ymm0 1436*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1437*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> zeroinitializer, <16 x i32> <i32 1, i32 16, i32 3, i32 16, i32 5, i32 16, i32 7, i32 16, i32 9, i32 16, i32 11, i32 16, i32 13, i32 16, i32 15, i32 16> 1438*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1439*9880d681SAndroid Build Coastguard Worker} 1440*9880d681SAndroid Build Coastguard Worker 1441*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_02_03_zz_zz_06_07_zz_zz_10_11_zz_zz_14_15_zz_zz(<16 x i16> %a) { 1442*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_02_03_zz_zz_06_07_zz_zz_10_11_zz_zz_14_15_zz_zz: 1443*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1444*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vxorps %ymm1, %ymm1, %ymm1 1445*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7] 1446*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[0,2,1,3,4,6,5,7] 1447*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1448*9880d681SAndroid Build Coastguard Worker; 1449*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_02_03_zz_zz_06_07_zz_zz_10_11_zz_zz_14_15_zz_zz: 1450*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1451*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrlq $32, %ymm0, %ymm0 1452*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1453*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> zeroinitializer, <16 x i32> <i32 2, i32 3, i32 16, i32 16, i32 6, i32 7, i32 16, i32 16, i32 10, i32 11, i32 16, i32 16, i32 14, i32 15, i32 16, i32 16> 1454*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1455*9880d681SAndroid Build Coastguard Worker} 1456*9880d681SAndroid Build Coastguard Worker 1457*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_zz_zz_zz_17_zz_zz_zz_18_zz_zz_zz_19_zz_zz_zz(<16 x i16> %a) { 1458*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_zz_zz_zz_17_zz_zz_zz_18_zz_zz_zz_19_zz_zz_zz: 1459*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1460*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero 1461*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3] 1462*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero 1463*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 1464*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1465*9880d681SAndroid Build Coastguard Worker; 1466*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_zz_zz_zz_17_zz_zz_zz_18_zz_zz_zz_19_zz_zz_zz: 1467*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1468*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovzxwq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero 1469*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1470*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> zeroinitializer, <16 x i16> %a, <16 x i32> <i32 16, i32 0, i32 0, i32 0, i32 17, i32 0, i32 0, i32 0, i32 18, i32 0, i32 0, i32 0, i32 19, i32 0, i32 0, i32 0> 1471*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1472*9880d681SAndroid Build Coastguard Worker} 1473*9880d681SAndroid Build Coastguard Worker 1474*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_zz_17_zz_18_zz_19_zz_20_zz_21_zz_22_zz_22_zz(<16 x i16> %a) { 1475*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_zz_17_zz_18_zz_19_zz_20_zz_21_zz_22_zz_22_zz: 1476*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1477*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpxor %xmm1, %xmm1, %xmm1 1478*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 1479*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero 1480*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1481*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1482*9880d681SAndroid Build Coastguard Worker; 1483*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_zz_17_zz_18_zz_19_zz_20_zz_21_zz_22_zz_22_zz: 1484*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1485*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero 1486*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1487*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> zeroinitializer, <16 x i16> %a, <16 x i32> <i32 16, i32 0, i32 17, i32 0, i32 18, i32 0, i32 19, i32 0, i32 20, i32 0, i32 21, i32 0, i32 22, i32 0, i32 23, i32 0> 1488*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1489*9880d681SAndroid Build Coastguard Worker} 1490*9880d681SAndroid Build Coastguard Worker 1491*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_23_00_01_02_03_04_05_06_31_08_09_10_11_12_13_14(<16 x i16> %a, <16 x i16> %b) { 1492*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_23_00_01_02_03_04_05_06_31_08_09_10_11_12_13_14: 1493*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1494*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 1495*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 1496*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[14,15],xmm3[0,1,2,3,4,5,6,7,8,9,10,11,12,13] 1497*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm0 = xmm1[14,15],xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13] 1498*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 1499*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1500*9880d681SAndroid Build Coastguard Worker; 1501*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_23_00_01_02_03_04_05_06_31_08_09_10_11_12_13_14: 1502*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1503*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm1[14,15],ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13],ymm1[30,31],ymm0[16,17,18,19,20,21,22,23,24,25,26,27,28,29] 1504*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1505*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 23, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 31, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14> 1506*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1507*9880d681SAndroid Build Coastguard Worker} 1508*9880d681SAndroid Build Coastguard Worker 1509*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_01_02_03_04_05_06_07_16_09_10_11_12_13_14_15_24(<16 x i16> %a, <16 x i16> %b) { 1510*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_01_02_03_04_05_06_07_16_09_10_11_12_13_14_15_24: 1511*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1512*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 1513*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 1514*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1] 1515*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1] 1516*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 1517*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1518*9880d681SAndroid Build Coastguard Worker; 1519*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_01_02_03_04_05_06_07_16_09_10_11_12_13_14_15_24: 1520*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1521*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1],ymm0[18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17] 1522*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1523*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 24> 1524*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1525*9880d681SAndroid Build Coastguard Worker} 1526*9880d681SAndroid Build Coastguard Worker 1527*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_17_18_19_20_21_22_23_00_25_26_27_28_29_30_31_8(<16 x i16> %a, <16 x i16> %b) { 1528*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_17_18_19_20_21_22_23_00_25_26_27_28_29_30_31_8: 1529*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1530*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 1531*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 1532*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1] 1533*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm0 = xmm1[2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1] 1534*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 1535*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1536*9880d681SAndroid Build Coastguard Worker; 1537*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_17_18_19_20_21_22_23_00_25_26_27_28_29_30_31_8: 1538*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1539*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm1[2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1],ymm1[18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17] 1540*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1541*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 00, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 8> 1542*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1543*9880d681SAndroid Build Coastguard Worker} 1544*9880d681SAndroid Build Coastguard Worker 1545*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_16_17_18_19_20_21_22_15_24_25_26_27_28_29_30(<16 x i16> %a, <16 x i16> %b) { 1546*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_16_17_18_19_20_21_22_15_24_25_26_27_28_29_30: 1547*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1548*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 1549*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 1550*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[14,15],xmm3[0,1,2,3,4,5,6,7,8,9,10,11,12,13] 1551*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[14,15],xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13] 1552*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 1553*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1554*9880d681SAndroid Build Coastguard Worker; 1555*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_16_17_18_19_20_21_22_15_24_25_26_27_28_29_30: 1556*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1557*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[14,15],ymm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13],ymm0[30,31],ymm1[16,17,18,19,20,21,22,23,24,25,26,27,28,29] 1558*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1559*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 15, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30> 1560*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1561*9880d681SAndroid Build Coastguard Worker} 1562*9880d681SAndroid Build Coastguard Worker 1563*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_01_02_03_04_05_06_07_00_17_18_19_20_21_22_23_16(<16 x i16> %a, <16 x i16> %b) { 1564*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_01_02_03_04_05_06_07_00_17_18_19_20_21_22_23_16: 1565*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1566*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1] 1567*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm1 = xmm1[2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1] 1568*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1569*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1570*9880d681SAndroid Build Coastguard Worker; 1571*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_01_02_03_04_05_06_07_00_17_18_19_20_21_22_23_16: 1572*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1573*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1574*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,18,19,20,21,22,23,24,25,26,27,28,29,30,31,16,17] 1575*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1576*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 16> 1577*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1578*9880d681SAndroid Build Coastguard Worker} 1579*9880d681SAndroid Build Coastguard Worker 1580*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_00_01_02_03_04_05_06_23_16_17_18_19_20_21_22(<16 x i16> %a, <16 x i16> %b) { 1581*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_00_01_02_03_04_05_06_23_16_17_18_19_20_21_22: 1582*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1583*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13] 1584*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm1 = xmm1[14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13] 1585*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1586*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1587*9880d681SAndroid Build Coastguard Worker; 1588*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_00_01_02_03_04_05_06_23_16_17_18_19_20_21_22: 1589*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1590*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1591*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,30,31,16,17,18,19,20,21,22,23,24,25,26,27,28,29] 1592*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1593*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 23, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22> 1594*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1595*9880d681SAndroid Build Coastguard Worker} 1596*9880d681SAndroid Build Coastguard Worker 1597*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_00_01_02_03_02_11_08_09_08_09_10_11_10_11(<16 x i16> %a, <16 x i16> %b) { 1598*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_00_01_02_03_02_11_08_09_08_09_10_11_10_11: 1599*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1600*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1601*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1602*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,0,2,4,5,6,7] 1603*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,4,7] 1604*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1] 1605*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1606*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1607*9880d681SAndroid Build Coastguard Worker; 1608*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_00_01_02_03_02_11_08_09_08_09_10_11_10_11: 1609*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1610*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1611*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1612*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,0,2,4,5,6,7] 1613*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,4,7] 1614*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1] 1615*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1616*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1617*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 2, i32 3, i32 2, i32 11, i32 8, i32 9, i32 8, i32 9, i32 10, i32 11, i32 10, i32 11> 1618*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1619*9880d681SAndroid Build Coastguard Worker} 1620*9880d681SAndroid Build Coastguard Worker 1621*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_06_07_04_05_02_03_00_09_14_15_12_13_10_11_08_09(<16 x i16> %a, <16 x i16> %b) { 1622*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_06_07_04_05_02_03_00_09_14_15_12_13_10_11_08_09: 1623*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1624*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1625*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6,7] 1626*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[3,2,1,0] 1627*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[3,2,1,0] 1628*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1629*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1630*9880d681SAndroid Build Coastguard Worker; 1631*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_06_07_04_05_02_03_00_09_14_15_12_13_10_11_08_09: 1632*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1633*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1634*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6,7] 1635*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[3,2,1,0] 1636*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[3,2,1,0] 1637*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1638*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1639*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 6, i32 7, i32 4, i32 5, i32 2, i32 3, i32 0, i32 9, i32 14, i32 15, i32 12, i32 13, i32 10, i32 11, i32 8, i32 9> 1640*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1641*9880d681SAndroid Build Coastguard Worker} 1642*9880d681SAndroid Build Coastguard Worker 1643*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_05_06_07_16_17_18_27_12_13_14_15_24_25_26_27(<16 x i16> %a, <16 x i16> %b) { 1644*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_05_06_07_16_17_18_27_12_13_14_15_24_25_26_27: 1645*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1646*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 1647*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 1648*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4,5,6,7] 1649*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3] 1650*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,4,5,4,5,6,7,0,1,4,5,8,9,14,15] 1651*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1] 1652*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 1653*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1654*9880d681SAndroid Build Coastguard Worker; 1655*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_05_06_07_16_17_18_27_12_13_14_15_24_25_26_27: 1656*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1657*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7] 1658*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1659*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7] 1660*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] 1661*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1] 1662*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1663*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1664*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 27, i32 12, i32 13, i32 14, i32 15, i32 24, i32 25, i32 26, i32 27> 1665*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1666*9880d681SAndroid Build Coastguard Worker} 1667*9880d681SAndroid Build Coastguard Worker 1668*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) { 1669*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_08: 1670*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1671*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1672*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1673*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3] 1674*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7] 1675*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1] 1676*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1677*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1678*9880d681SAndroid Build Coastguard Worker; 1679*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_08: 1680*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1681*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1682*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1683*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3] 1684*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm1, %xmm1 1685*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1686*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1687*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8> 1688*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1689*9880d681SAndroid Build Coastguard Worker} 1690*9880d681SAndroid Build Coastguard Worker 1691*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_04_04_04_12_08_08_08_08_12_12_12_12(<16 x i16> %a, <16 x i16> %b) { 1692*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_12_08_08_08_08_12_12_12_12: 1693*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1694*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1695*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsllq $48, %xmm1, %xmm2 1696*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 1697*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,7] 1698*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 1699*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7] 1700*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4] 1701*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1702*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1703*9880d681SAndroid Build Coastguard Worker; 1704*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_12_08_08_08_08_12_12_12_12: 1705*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1706*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1707*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllq $48, %xmm1, %xmm2 1708*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 1709*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,7] 1710*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 1711*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7] 1712*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4] 1713*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1714*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1715*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 12, i32 8, i32 8, i32 8, i32 8, i32 12, i32 12, i32 12, i32 12> 1716*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1717*9880d681SAndroid Build Coastguard Worker} 1718*9880d681SAndroid Build Coastguard Worker 1719*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_00_uu_01_uu_02_uu_11_uu_08_uu_09_uu_10_uu_11(<16 x i16> %a, <16 x i16> %b) { 1720*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_00_uu_01_uu_02_uu_11_uu_08_uu_09_uu_10_uu_11: 1721*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1722*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1723*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1724*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1725*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7] 1726*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,6,7] 1727*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 1728*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1729*9880d681SAndroid Build Coastguard Worker; 1730*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_00_uu_01_uu_02_uu_11_uu_08_uu_09_uu_10_uu_11: 1731*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1732*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1733*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1734*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 1735*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7] 1736*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,6,7] 1737*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0 1738*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1739*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 0, i32 undef, i32 1, i32 undef, i32 2, i32 undef, i32 11, i32 undef, i32 8, i32 undef, i32 9, i32 undef, i32 10, i32 undef, i32 11> 1740*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1741*9880d681SAndroid Build Coastguard Worker} 1742*9880d681SAndroid Build Coastguard Worker 1743*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_04_uu_05_uu_06_uu_15_uu_12_uu_13_uu_14_uu_15(<16 x i16> %a, <16 x i16> %b) { 1744*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_04_uu_05_uu_06_uu_15_uu_12_uu_13_uu_14_uu_15: 1745*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1746*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1747*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 1748*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 1749*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7] 1750*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,6,7] 1751*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 1752*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1753*9880d681SAndroid Build Coastguard Worker; 1754*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_04_uu_05_uu_06_uu_15_uu_12_uu_13_uu_14_uu_15: 1755*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1756*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1757*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 1758*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 1759*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7] 1760*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,6,7] 1761*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0 1762*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1763*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 4, i32 undef, i32 5, i32 undef, i32 6, i32 undef, i32 15, i32 undef, i32 12, i32 undef, i32 13, i32 undef, i32 14, i32 undef, i32 15> 1764*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1765*9880d681SAndroid Build Coastguard Worker} 1766*9880d681SAndroid Build Coastguard Worker 1767*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_03_01_02_00_06_07_04_13_11_09_10_08_14_15_12_13(<16 x i16> %a, <16 x i16> %b) { 1768*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_03_01_02_00_06_07_04_13_11_09_10_08_14_15_12_13: 1769*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1770*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1771*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7] 1772*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[3,1,2,0,4,5,6,7] 1773*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,3,2] 1774*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[3,1,2,0,4,5,6,7] 1775*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,1,3,2] 1776*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1777*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1778*9880d681SAndroid Build Coastguard Worker; 1779*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_03_01_02_00_06_07_04_13_11_09_10_08_14_15_12_13: 1780*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1781*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1782*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7] 1783*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[3,1,2,0,4,5,6,7] 1784*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,3,2] 1785*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[3,1,2,0,4,5,6,7] 1786*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,1,3,2] 1787*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1788*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1789*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 3, i32 1, i32 2, i32 0, i32 6, i32 7, i32 4, i32 13, i32 11, i32 9, i32 10, i32 8, i32 14, i32 15, i32 12, i32 13> 1790*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1791*9880d681SAndroid Build Coastguard Worker} 1792*9880d681SAndroid Build Coastguard Worker 1793*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_04_04_04_00_00_00_08_12_12_12_12_08_08_08_08(<16 x i16> %a, <16 x i16> %b) { 1794*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_04_04_04_00_00_00_08_12_12_12_12_08_08_08_08: 1795*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1796*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1797*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1] 1798*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,8,9,8,9,0,1,0,1,0,1,14,15] 1799*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 1800*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[8,9,8,9,8,9,8,9,0,1,0,1,0,1,0,1] 1801*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1802*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1803*9880d681SAndroid Build Coastguard Worker; 1804*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_04_04_04_00_00_00_08_12_12_12_12_08_08_08_08: 1805*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1806*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1807*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm1, %xmm2 1808*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,8,9,8,9,0,1,0,1,0,1,14,15] 1809*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 1810*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[8,9,8,9,8,9,8,9,0,1,0,1,0,1,0,1] 1811*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1812*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1813*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 4, i32 4, i32 4, i32 0, i32 0, i32 0, i32 8, i32 12, i32 12, i32 12, i32 12, i32 8, i32 8, i32 8, i32 8> 1814*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1815*9880d681SAndroid Build Coastguard Worker} 1816*9880d681SAndroid Build Coastguard Worker 1817*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_02_03_00_01_06_07_04_13_10_11_08_09_14_15_12_13(<16 x i16> %a, <16 x i16> %b) { 1818*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_02_03_00_01_06_07_04_13_10_11_08_09_14_15_12_13: 1819*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1820*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1821*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7] 1822*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,0,3,2] 1823*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[1,0,3,2] 1824*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1825*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1826*9880d681SAndroid Build Coastguard Worker; 1827*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_02_03_00_01_06_07_04_13_10_11_08_09_14_15_12_13: 1828*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1829*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1830*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7] 1831*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,0,3,2] 1832*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[1,0,3,2] 1833*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1834*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1835*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 2, i32 3, i32 0, i32 1, i32 6, i32 7, i32 4, i32 13, i32 10, i32 11, i32 8, i32 9, i32 14, i32 15, i32 12, i32 13> 1836*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1837*9880d681SAndroid Build Coastguard Worker} 1838*9880d681SAndroid Build Coastguard Worker 1839*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_02_03_00_02_06_07_04_13_10_11_08_10_14_15_12_13(<16 x i16> %a, <16 x i16> %b) { 1840*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_02_03_00_02_06_07_04_13_10_11_08_10_14_15_12_13: 1841*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1842*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1843*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7] 1844*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[2,3,0,2,4,5,6,7] 1845*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,3,2] 1846*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[2,3,0,2,4,5,6,7] 1847*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,1,3,2] 1848*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1849*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1850*9880d681SAndroid Build Coastguard Worker; 1851*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_02_03_00_02_06_07_04_13_10_11_08_10_14_15_12_13: 1852*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1853*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1854*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7] 1855*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[2,3,0,2,4,5,6,7] 1856*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,3,2] 1857*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[2,3,0,2,4,5,6,7] 1858*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,1,3,2] 1859*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1860*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1861*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 2, i32 3, i32 0, i32 2, i32 6, i32 7, i32 4, i32 13, i32 10, i32 11, i32 8, i32 10, i32 14, i32 15, i32 12, i32 13> 1862*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1863*9880d681SAndroid Build Coastguard Worker} 1864*9880d681SAndroid Build Coastguard Worker 1865*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_02_03_00_01_06_07_04_15_10_11_08_09_14_15_12_15(<16 x i16> %a, <16 x i16> %b) { 1866*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_02_03_00_01_06_07_04_15_10_11_08_09_14_15_12_15: 1867*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1868*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1869*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,0,3,2] 1870*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7] 1871*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[1,0,2,3] 1872*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,7,4,7] 1873*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1874*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1875*9880d681SAndroid Build Coastguard Worker; 1876*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_02_03_00_01_06_07_04_15_10_11_08_09_14_15_12_15: 1877*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1878*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1879*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,0,3,2] 1880*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7] 1881*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[1,0,2,3] 1882*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,7,4,7] 1883*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1884*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1885*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 2, i32 3, i32 0, i32 1, i32 6, i32 7, i32 4, i32 15, i32 10, i32 11, i32 8, i32 9, i32 14, i32 15, i32 12, i32 15> 1886*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1887*9880d681SAndroid Build Coastguard Worker} 1888*9880d681SAndroid Build Coastguard Worker 1889*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_05_06_04_03_01_02_08_15_13_14_12_11_09_10_08(<16 x i16> %a, <16 x i16> %b) { 1890*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_05_06_04_03_01_02_08_15_13_14_12_11_09_10_08: 1891*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1892*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1893*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [14,15,10,11,12,13,8,9,6,7,2,3,4,5,0,1] 1894*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm3 1895*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4,5,6,7] 1896*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 1897*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0 1898*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1899*9880d681SAndroid Build Coastguard Worker; 1900*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_05_06_04_03_01_02_08_15_13_14_12_11_09_10_08: 1901*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1902*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1903*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [14,15,10,11,12,13,8,9,6,7,2,3,4,5,0,1] 1904*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm1, %xmm3 1905*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4,5,6,7] 1906*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm0, %xmm0 1907*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm0 1908*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1909*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 5, i32 6, i32 4, i32 3, i32 1, i32 2, i32 8, i32 15, i32 13, i32 14, i32 12, i32 11, i32 9, i32 10, i32 8> 1910*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1911*9880d681SAndroid Build Coastguard Worker} 1912*9880d681SAndroid Build Coastguard Worker 1913*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_01_00_05_04_05_04_01_08_09_08_13_12_13_12_09_08(<16 x i16> %a, <16 x i16> %b) { 1914*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_01_00_05_04_05_04_01_08_09_08_13_12_13_12_09_08: 1915*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1916*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1917*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1] 1918*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[2,3,0,1,10,11,8,9,10,11,8,9,2,3,2,3] 1919*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 1920*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[2,3,0,1,10,11,8,9,10,11,8,9,2,3,0,1] 1921*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1922*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1923*9880d681SAndroid Build Coastguard Worker; 1924*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_01_00_05_04_05_04_01_08_09_08_13_12_13_12_09_08: 1925*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1926*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1927*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm1, %xmm2 1928*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[2,3,0,1,10,11,8,9,10,11,8,9,2,3,2,3] 1929*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 1930*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[2,3,0,1,10,11,8,9,10,11,8,9,2,3,0,1] 1931*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1932*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1933*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 1, i32 0, i32 5, i32 4, i32 5, i32 4, i32 1, i32 8, i32 9, i32 8, i32 13, i32 12, i32 13, i32 12, i32 9, i32 8> 1934*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1935*9880d681SAndroid Build Coastguard Worker} 1936*9880d681SAndroid Build Coastguard Worker 1937*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_05_04_01_00_05_04_01_08_13_12_09_08_13_12_09_08(<16 x i16> %a, <16 x i16> %b) { 1938*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_05_04_01_00_05_04_01_08_13_12_09_08_13_12_09_08: 1939*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1940*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1941*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1] 1942*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[10,11,8,9,2,3,0,1,10,11,8,9,2,3,2,3] 1943*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 1944*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[10,11,8,9,2,3,0,1,10,11,8,9,2,3,0,1] 1945*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1946*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1947*9880d681SAndroid Build Coastguard Worker; 1948*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_05_04_01_00_05_04_01_08_13_12_09_08_13_12_09_08: 1949*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1950*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1951*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm1, %xmm2 1952*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[10,11,8,9,2,3,0,1,10,11,8,9,2,3,2,3] 1953*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 1954*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[10,11,8,9,2,3,0,1,10,11,8,9,2,3,0,1] 1955*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1956*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1957*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 5, i32 4, i32 1, i32 0, i32 5, i32 4, i32 1, i32 8, i32 13, i32 12, i32 9, i32 8, i32 13, i32 12, i32 9, i32 8> 1958*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1959*9880d681SAndroid Build Coastguard Worker} 1960*9880d681SAndroid Build Coastguard Worker 1961*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_05_04_01_00_01_00_05_12_13_12_09_08_09_08_13_12(<16 x i16> %a, <16 x i16> %b) { 1962*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_05_04_01_00_01_00_05_12_13_12_09_08_09_08_13_12: 1963*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1964*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1965*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsllq $48, %xmm1, %xmm2 1966*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[10,11,8,9,2,3,0,1,2,3,0,1,10,11,2,3] 1967*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 1968*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[10,11,8,9,2,3,0,1,2,3,0,1,10,11,8,9] 1969*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1970*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1971*9880d681SAndroid Build Coastguard Worker; 1972*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_05_04_01_00_01_00_05_12_13_12_09_08_09_08_13_12: 1973*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1974*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1975*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllq $48, %xmm1, %xmm2 1976*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[10,11,8,9,2,3,0,1,2,3,0,1,10,11,2,3] 1977*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 1978*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[10,11,8,9,2,3,0,1,2,3,0,1,10,11,8,9] 1979*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1980*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 1981*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 5, i32 4, i32 1, i32 0, i32 1, i32 0, i32 5, i32 12, i32 13, i32 12, i32 9, i32 8, i32 9, i32 8, i32 13, i32 12> 1982*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 1983*9880d681SAndroid Build Coastguard Worker} 1984*9880d681SAndroid Build Coastguard Worker 1985*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_04_04_00_00_04_04_08_08_12_12_08_08_12_12_08(<16 x i16> %a, <16 x i16> %b) { 1986*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_04_04_00_00_04_04_08_08_12_12_08_08_12_12_08: 1987*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 1988*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 1989*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1] 1990*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,0,1,8,9,8,9,2,3] 1991*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 1992*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,0,1,8,9,8,9,0,1] 1993*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1994*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 1995*9880d681SAndroid Build Coastguard Worker; 1996*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_04_04_00_00_04_04_08_08_12_12_08_08_12_12_08: 1997*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 1998*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1999*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm1, %xmm2 2000*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,0,1,8,9,8,9,2,3] 2001*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2002*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,0,1,8,9,8,9,0,1] 2003*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2004*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2005*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 4, i32 4, i32 0, i32 0, i32 4, i32 4, i32 8, i32 8, i32 12, i32 12, i32 8, i32 8, i32 12, i32 12, i32 8> 2006*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2007*9880d681SAndroid Build Coastguard Worker} 2008*9880d681SAndroid Build Coastguard Worker 2009*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_00_00_04_04_00_00_12_12_08_08_12_12_08_08_12(<16 x i16> %a, <16 x i16> %b) { 2010*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_00_00_04_04_00_00_12_12_08_08_12_12_08_08_12: 2011*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2012*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2013*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsllq $48, %xmm1, %xmm2 2014*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,0,1,0,1,8,9,8,9,0,1,0,1,2,3] 2015*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2016*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[8,9,0,1,0,1,8,9,8,9,0,1,0,1,8,9] 2017*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 2018*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2019*9880d681SAndroid Build Coastguard Worker; 2020*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_00_00_04_04_00_00_12_12_08_08_12_12_08_08_12: 2021*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2022*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2023*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllq $48, %xmm1, %xmm2 2024*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,0,1,0,1,8,9,8,9,0,1,0,1,2,3] 2025*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2026*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[8,9,0,1,0,1,8,9,8,9,0,1,0,1,8,9] 2027*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2028*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2029*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 0, i32 0, i32 4, i32 4, i32 0, i32 0, i32 12, i32 12, i32 8, i32 8, i32 12, i32 12, i32 8, i32 8, i32 12> 2030*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2031*9880d681SAndroid Build Coastguard Worker} 2032*9880d681SAndroid Build Coastguard Worker 2033*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_02_06_04_00_05_01_07_11_10_14_12_08_13_09_15_11(<16 x i16> %a, <16 x i16> %b) { 2034*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_02_06_04_00_05_01_07_11_10_14_12_08_13_09_15_11: 2035*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2036*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2037*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [4,5,12,13,8,9,0,1,10,11,2,3,14,15,6,7] 2038*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm3 2039*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7] 2040*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2041*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0 2042*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2043*9880d681SAndroid Build Coastguard Worker; 2044*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_02_06_04_00_05_01_07_11_10_14_12_08_13_09_15_11: 2045*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2046*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2047*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [4,5,12,13,8,9,0,1,10,11,2,3,14,15,6,7] 2048*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm1, %xmm3 2049*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7] 2050*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2051*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm0 2052*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2053*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 2, i32 6, i32 4, i32 0, i32 5, i32 1, i32 7, i32 11, i32 10, i32 14, i32 12, i32 8, i32 13, i32 9, i32 15, i32 11> 2054*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2055*9880d681SAndroid Build Coastguard Worker} 2056*9880d681SAndroid Build Coastguard Worker 2057*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_02_00_06_04_05_01_07_11_10_08_14_12_13_09_15_11(<16 x i16> %a, <16 x i16> %b) { 2058*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_02_00_06_04_05_01_07_11_10_08_14_12_13_09_15_11: 2059*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2060*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2061*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [4,5,0,1,12,13,8,9,10,11,2,3,14,15,6,7] 2062*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm3 2063*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7] 2064*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2065*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0 2066*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2067*9880d681SAndroid Build Coastguard Worker; 2068*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_02_00_06_04_05_01_07_11_10_08_14_12_13_09_15_11: 2069*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2070*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2071*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [4,5,0,1,12,13,8,9,10,11,2,3,14,15,6,7] 2072*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm1, %xmm3 2073*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7] 2074*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2075*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm0 2076*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2077*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 2, i32 0, i32 6, i32 4, i32 5, i32 1, i32 7, i32 11, i32 10, i32 8, i32 14, i32 12, i32 13, i32 9, i32 15, i32 11> 2078*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2079*9880d681SAndroid Build Coastguard Worker} 2080*9880d681SAndroid Build Coastguard Worker 2081*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_02_06_04_00_01_03_07_13_10_14_12_08_09_11_15_13(<16 x i16> %a, <16 x i16> %b) { 2082*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_02_06_04_00_01_03_07_13_10_14_12_08_09_11_15_13: 2083*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2084*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2085*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [4,5,12,13,8,9,0,1,2,3,6,7,14,15,10,11] 2086*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm3 2087*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7] 2088*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2089*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0 2090*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2091*9880d681SAndroid Build Coastguard Worker; 2092*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_02_06_04_00_01_03_07_13_10_14_12_08_09_11_15_13: 2093*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2094*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2095*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [4,5,12,13,8,9,0,1,2,3,6,7,14,15,10,11] 2096*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm1, %xmm3 2097*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7] 2098*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2099*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm0 2100*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2101*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 2, i32 6, i32 4, i32 0, i32 1, i32 3, i32 7, i32 13, i32 10, i32 14, i32 12, i32 8, i32 9, i32 11, i32 15, i32 13> 2102*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2103*9880d681SAndroid Build Coastguard Worker} 2104*9880d681SAndroid Build Coastguard Worker 2105*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_06_06_07_05_01_06_04_11_14_14_15_13_09_14_12_11(<16 x i16> %a, <16 x i16> %b) { 2106*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_06_06_07_05_01_06_04_11_14_14_15_13_09_14_12_11: 2107*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2108*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2109*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [12,13,12,13,14,15,10,11,2,3,12,13,8,9,6,7] 2110*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm3 2111*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5,6,7] 2112*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2113*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0 2114*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2115*9880d681SAndroid Build Coastguard Worker; 2116*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_06_06_07_05_01_06_04_11_14_14_15_13_09_14_12_11: 2117*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2118*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2119*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [12,13,12,13,14,15,10,11,2,3,12,13,8,9,6,7] 2120*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm1, %xmm3 2121*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3] 2122*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2123*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm0 2124*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2125*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 6, i32 6, i32 7, i32 5, i32 1, i32 6, i32 4, i32 11, i32 14, i32 14, i32 15, i32 13, i32 9, i32 14, i32 12, i32 11> 2126*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2127*9880d681SAndroid Build Coastguard Worker} 2128*9880d681SAndroid Build Coastguard Worker 2129*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_04_04_04_04_04_12_08_08_12_12_12_12_12_12(<16 x i16> %a, <16 x i16> %b) { 2130*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_04_04_04_04_04_12_08_08_12_12_12_12_12_12: 2131*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2132*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2133*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsllq $48, %xmm1, %xmm2 2134*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,8,9,8,9,8,9,8,9,8,9,14,15] 2135*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2136*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,8,9,8,9,8,9,8,9,8,9,8,9] 2137*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 2138*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2139*9880d681SAndroid Build Coastguard Worker; 2140*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_04_04_04_04_04_12_08_08_12_12_12_12_12_12: 2141*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2142*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2143*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllq $48, %xmm1, %xmm2 2144*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,8,9,8,9,8,9,8,9,8,9,14,15] 2145*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2146*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,8,9,8,9,8,9,8,9,8,9,8,9] 2147*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2148*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2149*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 4, i32 4, i32 4, i32 4, i32 4, i32 12, i32 8, i32 8, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12> 2150*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2151*9880d681SAndroid Build Coastguard Worker} 2152*9880d681SAndroid Build Coastguard Worker 2153*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_04_00_00_04_04_04_12_12_12_08_08_12_12_12_12(<16 x i16> %a, <16 x i16> %b) { 2154*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_04_00_00_04_04_04_12_12_12_08_08_12_12_12_12: 2155*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2156*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2157*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsllq $48, %xmm1, %xmm2 2158*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,0,1,0,1,8,9,8,9,8,9,14,15] 2159*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2160*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[8,9,8,9,0,1,0,1,8,9,8,9,8,9,8,9] 2161*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 2162*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2163*9880d681SAndroid Build Coastguard Worker; 2164*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_04_00_00_04_04_04_12_12_12_08_08_12_12_12_12: 2165*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2166*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2167*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllq $48, %xmm1, %xmm2 2168*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,0,1,0,1,8,9,8,9,8,9,14,15] 2169*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2170*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[8,9,8,9,0,1,0,1,8,9,8,9,8,9,8,9] 2171*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2172*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2173*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 4, i32 0, i32 0, i32 4, i32 4, i32 4, i32 12, i32 12, i32 12, i32 8, i32 8, i32 12, i32 12, i32 12, i32 12> 2174*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2175*9880d681SAndroid Build Coastguard Worker} 2176*9880d681SAndroid Build Coastguard Worker 2177*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_04_04_00_04_04_04_12_08_12_12_08_12_12_12_12(<16 x i16> %a, <16 x i16> %b) { 2178*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_04_04_00_04_04_04_12_08_12_12_08_12_12_12_12: 2179*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2180*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2181*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsllq $48, %xmm1, %xmm2 2182*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,8,9,8,9,8,9,14,15] 2183*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2184*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,8,9,8,9,8,9,8,9] 2185*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 2186*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2187*9880d681SAndroid Build Coastguard Worker; 2188*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_04_04_00_04_04_04_12_08_12_12_08_12_12_12_12: 2189*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2190*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2191*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllq $48, %xmm1, %xmm2 2192*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,8,9,8,9,8,9,14,15] 2193*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2194*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,8,9,8,9,8,9,8,9] 2195*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2196*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2197*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 4, i32 4, i32 0, i32 4, i32 4, i32 4, i32 12, i32 8, i32 12, i32 12, i32 8, i32 12, i32 12, i32 12, i32 12> 2198*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2199*9880d681SAndroid Build Coastguard Worker} 2200*9880d681SAndroid Build Coastguard Worker 2201*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_04_04_00_00_00_00_08_08_12_12_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) { 2202*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_04_04_00_00_00_00_08_08_12_12_08_08_08_08_08: 2203*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2204*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2205*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1] 2206*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,0,1,0,1,0,1,14,15] 2207*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2208*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,0,1,0,1,0,1,0,1] 2209*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 2210*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2211*9880d681SAndroid Build Coastguard Worker; 2212*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_04_04_00_00_00_00_08_08_12_12_08_08_08_08_08: 2213*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2214*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2215*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm1, %xmm2 2216*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,0,1,0,1,0,1,14,15] 2217*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2218*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,0,1,0,1,0,1,0,1] 2219*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2220*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2221*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 4, i32 4, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 12, i32 12, i32 8, i32 8, i32 8, i32 8, i32 8> 2222*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2223*9880d681SAndroid Build Coastguard Worker} 2224*9880d681SAndroid Build Coastguard Worker 2225*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_04_04_00_04_05_06_15_08_12_12_08_12_13_14_15(<16 x i16> %a, <16 x i16> %b) { 2226*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_04_04_00_04_05_06_15_08_12_12_08_12_13_14_15: 2227*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2228*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2229*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] 2230*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,2,0,4,5,6,7] 2231*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7] 2232*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 2233*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,2,2,0,4,5,6,7] 2234*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 2235*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2236*9880d681SAndroid Build Coastguard Worker; 2237*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_04_04_00_04_05_06_15_08_12_12_08_12_13_14_15: 2238*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2239*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2240*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] 2241*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,2,0,4,5,6,7] 2242*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7] 2243*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 2244*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,2,2,0,4,5,6,7] 2245*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2246*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2247*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 4, i32 4, i32 0, i32 4, i32 5, i32 6, i32 15, i32 8, i32 12, i32 12, i32 8, i32 12, i32 13, i32 14, i32 15> 2248*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2249*9880d681SAndroid Build Coastguard Worker} 2250*9880d681SAndroid Build Coastguard Worker 2251*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_uu_04_04_04_04_04_12_08_uu_12_12_12_12_12_12(<16 x i16> %a, <16 x i16> %b) { 2252*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_uu_04_04_04_04_04_12_08_uu_12_12_12_12_12_12: 2253*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2254*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2255*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsllq $48, %xmm1, %xmm2 2256*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,8,9,8,9,8,9,8,9,8,9,14,15] 2257*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2258*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,2,3,8,9,8,9,8,9,8,9,8,9,8,9] 2259*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 2260*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2261*9880d681SAndroid Build Coastguard Worker; 2262*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_uu_04_04_04_04_04_12_08_uu_12_12_12_12_12_12: 2263*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2264*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2265*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllq $48, %xmm1, %xmm2 2266*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,8,9,8,9,8,9,8,9,8,9,14,15] 2267*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2268*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,2,3,8,9,8,9,8,9,8,9,8,9,8,9] 2269*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2270*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2271*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 undef, i32 4, i32 4, i32 4, i32 4, i32 4, i32 12, i32 8, i32 undef, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12> 2272*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2273*9880d681SAndroid Build Coastguard Worker} 2274*9880d681SAndroid Build Coastguard Worker 2275*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_04_uu_00_04_04_04_12_12_12_uu_08_12_12_12_12(<16 x i16> %a, <16 x i16> %b) { 2276*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_04_uu_00_04_04_04_12_12_12_uu_08_12_12_12_12: 2277*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2278*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2279*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsllq $48, %xmm1, %xmm2 2280*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,8,9,0,1,8,9,8,9,8,9,14,15] 2281*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2282*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[8,9,8,9,8,9,0,1,8,9,8,9,8,9,8,9] 2283*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 2284*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2285*9880d681SAndroid Build Coastguard Worker; 2286*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_04_uu_00_04_04_04_12_12_12_uu_08_12_12_12_12: 2287*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2288*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2289*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllq $48, %xmm1, %xmm2 2290*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,8,9,0,1,8,9,8,9,8,9,14,15] 2291*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2292*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[8,9,8,9,8,9,0,1,8,9,8,9,8,9,8,9] 2293*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2294*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2295*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 4, i32 undef, i32 0, i32 4, i32 4, i32 4, i32 12, i32 12, i32 12, i32 undef, i32 8, i32 12, i32 12, i32 12, i32 12> 2296*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2297*9880d681SAndroid Build Coastguard Worker} 2298*9880d681SAndroid Build Coastguard Worker 2299*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_04_04_00_04_04_04_12_uu_12_12_08_12_12_12_12(<16 x i16> %a, <16 x i16> %b) { 2300*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_04_04_00_04_04_04_12_uu_12_12_08_12_12_12_12: 2301*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2302*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2303*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsllq $48, %xmm1, %xmm2 2304*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,8,9,8,9,8,9,14,15] 2305*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2306*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,8,9,8,9,8,9,8,9] 2307*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 2308*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2309*9880d681SAndroid Build Coastguard Worker; 2310*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_04_04_00_04_04_04_12_uu_12_12_08_12_12_12_12: 2311*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2312*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2313*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllq $48, %xmm1, %xmm2 2314*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,8,9,8,9,8,9,14,15] 2315*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2316*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,8,9,8,9,8,9,8,9] 2317*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2318*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2319*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 4, i32 4, i32 0, i32 4, i32 4, i32 4, i32 12, i32 undef, i32 12, i32 12, i32 8, i32 12, i32 12, i32 12, i32 12> 2320*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2321*9880d681SAndroid Build Coastguard Worker} 2322*9880d681SAndroid Build Coastguard Worker 2323*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_02_07_uu_uu_uu_uu_08_09_10_15_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) { 2324*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_02_07_uu_uu_uu_uu_08_09_10_15_uu_uu_uu_uu: 2325*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2326*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2327*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,2,3,4,5,14,15,4,5,14,15,12,13,14,15] 2328*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm1 2329*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2330*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 2331*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2332*9880d681SAndroid Build Coastguard Worker; 2333*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_02_07_uu_uu_uu_uu_08_09_10_15_uu_uu_uu_uu: 2334*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2335*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,14,15,4,5,14,15,12,13,14,15,16,17,18,19,20,21,30,31,20,21,30,31,28,29,30,31] 2336*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2337*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 7, i32 undef, i32 undef, i32 undef, i32 undef, i32 8, i32 9, i32 10, i32 15, i32 undef, i32 undef, i32 undef, i32 undef> 2338*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2339*9880d681SAndroid Build Coastguard Worker} 2340*9880d681SAndroid Build Coastguard Worker 2341*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_uu_uu_uu_04_05_06_11_uu_uu_uu_uu_12_13_14_11(<16 x i16> %a, <16 x i16> %b) { 2342*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_uu_uu_uu_04_05_06_11_uu_uu_uu_uu_12_13_14_11: 2343*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2344*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2345*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm2 = xmm1[0,1,0,1] 2346*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2347*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[12,13,6,7,4,5,6,7,8,9,10,11,12,13,6,7] 2348*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 2349*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2350*9880d681SAndroid Build Coastguard Worker; 2351*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_uu_uu_uu_04_05_06_11_uu_uu_uu_uu_12_13_14_11: 2352*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2353*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2354*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastq %xmm1, %xmm2 2355*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7] 2356*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[12,13,6,7,4,5,6,7,8,9,10,11,12,13,6,7] 2357*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2358*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2359*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 undef, i32 undef, i32 4, i32 5, i32 6, i32 11, i32 undef, i32 undef, i32 undef, i32 undef, i32 12, i32 13, i32 14, i32 11> 2360*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2361*9880d681SAndroid Build Coastguard Worker} 2362*9880d681SAndroid Build Coastguard Worker 2363*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_05_06_03_uu_uu_uu_uu_12_13_14_11_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) { 2364*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_05_06_03_uu_uu_uu_uu_12_13_14_11_uu_uu_uu_uu: 2365*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2366*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2367*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [8,9,10,11,12,13,6,7,8,9,10,11,0,1,2,3] 2368*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm1 2369*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2370*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 2371*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2372*9880d681SAndroid Build Coastguard Worker; 2373*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_05_06_03_uu_uu_uu_uu_12_13_14_11_uu_uu_uu_uu: 2374*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2375*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[8,9,10,11,12,13,6,7,8,9,10,11,0,1,2,3,24,25,26,27,28,29,22,23,24,25,26,27,16,17,18,19] 2376*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2377*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 5, i32 6, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 12, i32 13, i32 14, i32 11, i32 undef, i32 undef, i32 undef, i32 undef> 2378*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2379*9880d681SAndroid Build Coastguard Worker} 2380*9880d681SAndroid Build Coastguard Worker 2381*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_01_zz_02_zz_04_uu_06_07_08_09_10_11_12_13_14_15(<16 x i16> %a) { 2382*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_01_zz_02_zz_04_uu_06_07_08_09_10_11_12_13_14_15: 2383*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2384*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[1,1,2,3,4,5,6,7] 2385*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpxor %xmm2, %xmm2, %xmm2 2386*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2],xmm2[3],xmm1[4,5,6,7] 2387*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 2388*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 2389*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2390*9880d681SAndroid Build Coastguard Worker; 2391*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_01_zz_02_zz_04_uu_06_07_08_09_10_11_12_13_14_15: 2392*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2393*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[2,3],zero,zero,ymm0[4,5],zero,zero,ymm0[8,9,u,u,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31] 2394*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2395*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> zeroinitializer, <16 x i32> <i32 1, i32 16, i32 2, i32 16, i32 4, i32 undef, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 2396*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2397*9880d681SAndroid Build Coastguard Worker} 2398*9880d681SAndroid Build Coastguard Worker 2399*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_02_07_04_05_06_11_08_09_10_15_12_13_14_11(<16 x i16> %a, <16 x i16> %b) { 2400*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_02_07_04_05_06_11_08_09_10_15_12_13_14_11: 2401*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2402*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2403*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,2,3,4,5,14,15,8,9,10,11,12,13,6,7] 2404*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm3 2405*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7] 2406*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2407*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0 2408*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2409*9880d681SAndroid Build Coastguard Worker; 2410*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_02_07_04_05_06_11_08_09_10_15_12_13_14_11: 2411*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2412*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2413*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,2,3,4,5,14,15,8,9,10,11,12,13,6,7] 2414*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm1, %xmm3 2415*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7] 2416*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2417*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm0 2418*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2419*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 7, i32 4, i32 5, i32 6, i32 11, i32 8, i32 9, i32 10, i32 15, i32 12, i32 13, i32 14, i32 11> 2420*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2421*9880d681SAndroid Build Coastguard Worker} 2422*9880d681SAndroid Build Coastguard Worker 2423*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_05_06_03_00_01_02_15_12_13_14_11_08_09_10_15(<16 x i16> %a, <16 x i16> %b) { 2424*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_05_06_03_00_01_02_15_12_13_14_11_08_09_10_15: 2425*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2426*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2427*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,10,11,12,13,6,7,0,1,2,3,4,5,2,3] 2428*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7] 2429*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[8,9,10,11,12,13,6,7,0,1,2,3,4,5,14,15] 2430*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 2431*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2432*9880d681SAndroid Build Coastguard Worker; 2433*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_05_06_03_00_01_02_15_12_13_14_11_08_09_10_15: 2434*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2435*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2436*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,10,11,12,13,6,7,0,1,2,3,4,5,2,3] 2437*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7] 2438*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[8,9,10,11,12,13,6,7,0,1,2,3,4,5,14,15] 2439*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2440*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2441*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 5, i32 6, i32 3, i32 0, i32 1, i32 2, i32 15, i32 12, i32 13, i32 14, i32 11, i32 8, i32 9, i32 10, i32 15> 2442*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2443*9880d681SAndroid Build Coastguard Worker} 2444*9880d681SAndroid Build Coastguard Worker 2445*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_03_07_01_00_02_07_03_13_11_15_09_08_10_15_11_13(<16 x i16> %a, <16 x i16> %b) { 2446*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_03_07_01_00_02_07_03_13_11_15_09_08_10_15_11_13: 2447*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2448*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 2449*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [6,7,14,15,2,3,0,1,4,5,14,15,6,7,10,11] 2450*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm3 2451*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5],xmm0[6,7] 2452*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2453*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0 2454*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2455*9880d681SAndroid Build Coastguard Worker; 2456*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_03_07_01_00_02_07_03_13_11_15_09_08_10_15_11_13: 2457*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2458*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2459*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [6,7,14,15,2,3,0,1,4,5,14,15,6,7,10,11] 2460*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm1, %xmm3 2461*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3] 2462*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2463*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm0 2464*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2465*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 3, i32 7, i32 1, i32 0, i32 2, i32 7, i32 3, i32 13, i32 11, i32 15, i32 9, i32 8, i32 10, i32 15, i32 11, i32 13> 2466*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2467*9880d681SAndroid Build Coastguard Worker} 2468*9880d681SAndroid Build Coastguard Worker 2469*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_16_01_17_02_18_03_27_08_24_09_25_10_26_11_27(<16 x i16> %a, <16 x i16> %b) { 2470*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_27_08_24_09_25_10_26_11_27: 2471*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2472*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 2473*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 2474*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3] 2475*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 2476*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,4,5,8,9,14,15,14,15,8,9,12,13,14,15] 2477*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 2478*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0 2479*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2480*9880d681SAndroid Build Coastguard Worker; 2481*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_27_08_24_09_25_10_26_11_27: 2482*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2483*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2 2484*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 2485*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 2486*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,0,2,2,4,5,6,7] 2487*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,6,7] 2488*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1 2489*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11] 2490*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15] 2491*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2492*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 27, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27> 2493*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2494*9880d681SAndroid Build Coastguard Worker} 2495*9880d681SAndroid Build Coastguard Worker 2496*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_20_01_21_02_22_03_31_08_28_09_29_10_30_11_31(<16 x i16> %a, <16 x i16> %b) { 2497*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_20_01_21_02_22_03_31_08_28_09_29_10_30_11_31: 2498*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2499*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 2500*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 2501*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm4 = xmm3[2,3,0,1] 2502*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3] 2503*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7] 2504*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,4,5,8,9,14,15,14,15,8,9,12,13,14,15] 2505*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 2506*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 2507*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2508*9880d681SAndroid Build Coastguard Worker; 2509*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_20_01_21_02_22_03_31_08_28_09_29_10_30_11_31: 2510*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2511*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7] 2512*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [0,1,8,9,2,3,10,11,4,5,12,13,6,7,14,15] 2513*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm1, %xmm0, %xmm2 2514*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm0 2515*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6],xmm0[7] 2516*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm1, %xmm0, %xmm0 2517*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm0 2518*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2519*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 20, i32 1, i32 21, i32 2, i32 22, i32 3, i32 31, i32 8, i32 28, i32 9, i32 29, i32 10, i32 30, i32 11, i32 31> 2520*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2521*9880d681SAndroid Build Coastguard Worker} 2522*9880d681SAndroid Build Coastguard Worker 2523*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_20_05_21_06_22_07_31_12_28_13_29_14_30_15_31(<16 x i16> %a, <16 x i16> %b) { 2524*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_20_05_21_06_22_07_31_12_28_13_29_14_30_15_31: 2525*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2526*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 2527*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 2528*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 2529*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 2530*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[4,5,0,1,4,5,4,5,0,1,4,5,8,9,14,15] 2531*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 2532*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0 2533*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2534*9880d681SAndroid Build Coastguard Worker; 2535*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_20_05_21_06_22_07_31_12_28_13_29_14_30_15_31: 2536*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2537*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2 2538*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7] 2539*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 2540*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,0,2,2,4,5,6,7] 2541*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,6,7] 2542*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1 2543*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpckhwd {{.*#+}} ymm0 = ymm0[4,4,5,5,6,6,7,7,12,12,13,13,14,14,15,15] 2544*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15] 2545*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2546*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 31, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 2547*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2548*9880d681SAndroid Build Coastguard Worker} 2549*9880d681SAndroid Build Coastguard Worker 2550*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_16_05_17_06_18_07_27_12_24_13_25_14_26_15_27(<16 x i16> %a, <16 x i16> %b) { 2551*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_16_05_17_06_18_07_27_12_24_13_25_14_26_15_27: 2552*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2553*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 2554*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 2555*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[2,3,0,1] 2556*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3] 2557*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 2558*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[4,5,0,1,4,5,4,5,0,1,4,5,8,9,14,15] 2559*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 2560*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0 2561*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2562*9880d681SAndroid Build Coastguard Worker; 2563*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_16_05_17_06_18_07_27_12_24_13_25_14_26_15_27: 2564*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2565*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7] 2566*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2567*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7] 2568*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [8,9,0,1,10,11,2,3,12,13,4,5,14,15,6,7] 2569*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2570*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm1, %xmm1 2571*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2572*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2573*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 16, i32 5, i32 17, i32 6, i32 18, i32 7, i32 27, i32 12, i32 24, i32 13, i32 25, i32 14, i32 26, i32 15, i32 27> 2574*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2575*9880d681SAndroid Build Coastguard Worker} 2576*9880d681SAndroid Build Coastguard Worker 2577*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_16_01_17_06_22_07_31_08_24_09_25_14_30_15_31(<16 x i16> %a, <16 x i16> %b) { 2578*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_16_01_17_06_22_07_31_08_24_09_25_14_30_15_31: 2579*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2580*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 2581*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm3 = xmm2[0,3,2,3] 2582*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4 2583*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,3,2,3] 2584*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3] 2585*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,0,2,1,4,5,6,7] 2586*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 2587*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5],xmm2[6,7] 2588*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[2,3,6,7,10,11,14,15,14,15,10,11,12,13,14,15] 2589*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,3,2,3] 2590*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 2591*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0 2592*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2593*9880d681SAndroid Build Coastguard Worker; 2594*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_16_01_17_06_22_07_31_08_24_09_25_14_30_15_31: 2595*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2596*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2 2597*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,0,2,1,4,5,6,7] 2598*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 2599*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} xmm1 = xmm1[0,1,2],xmm2[3] 2600*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,0,2,1,4,5,6,7] 2601*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 2602*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1 2603*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[0,1,1,3,4,5,6,7,8,9,9,11,12,13,14,15] 2604*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,6,5,7,7,8,9,10,11,14,13,15,15] 2605*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15] 2606*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2607*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 6, i32 22, i32 7, i32 31, i32 8, i32 24, i32 9, i32 25, i32 14, i32 30, i32 15, i32 31> 2608*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2609*9880d681SAndroid Build Coastguard Worker} 2610*9880d681SAndroid Build Coastguard Worker 2611*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_20_01_21_06_16_07_25_08_28_09_29_14_24_15_25(<16 x i16> %a, <16 x i16> %b) { 2612*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_20_01_21_06_16_07_25_08_28_09_29_14_24_15_25: 2613*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2614*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 2615*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm3 = xmm2[2,0,2,3] 2616*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4 2617*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,3,2,3] 2618*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3] 2619*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2,3,4,5,6,7] 2620*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[8,9,10,11,0,1,2,3,2,3,0,1,12,13,2,3] 2621*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,3,2,3] 2622*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 2623*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0 2624*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2625*9880d681SAndroid Build Coastguard Worker; 2626*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_20_01_21_06_16_07_25_08_28_09_29_14_24_15_25: 2627*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2628*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2 2629*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} xmm3 = [8,9,8,9,4,5,10,11,0,1,0,1,12,13,2,3] 2630*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm3, %xmm2, %xmm4 2631*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2,3,4,5,6,7] 2632*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm3, %xmm1, %xmm1 2633*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 2634*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[0,1,1,3,4,5,6,7,8,9,9,11,12,13,14,15] 2635*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,6,5,7,7,8,9,10,11,14,13,15,15] 2636*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15] 2637*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2638*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 20, i32 1, i32 21, i32 6, i32 16, i32 7, i32 25, i32 8, i32 28, i32 9, i32 29, i32 14, i32 24, i32 15, i32 25> 2639*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2640*9880d681SAndroid Build Coastguard Worker} 2641*9880d681SAndroid Build Coastguard Worker 2642*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_01_00_17_16_03_02_19_26_09_08_25_24_11_10_27_26(<16 x i16> %a, <16 x i16> %b) { 2643*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_01_00_17_16_03_02_19_26_09_08_25_24_11_10_27_26: 2644*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2645*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 2646*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 2647*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[4,5,0,1,12,13,10,11,8,9,10,11,12,13,10,11] 2648*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm3 = xmm0[1,0,3,2,4,5,6,7] 2649*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm3[0],xmm1[0],xmm3[1],xmm1[1] 2650*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 2651*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 2652*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[2,0,3,1,4,5,6,7] 2653*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,4,7,5] 2654*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 2655*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2656*9880d681SAndroid Build Coastguard Worker; 2657*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_01_00_17_16_03_02_19_26_09_08_25_24_11_10_27_26: 2658*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2659*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2 2660*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3] 2661*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,0,4,5,6,7] 2662*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,5] 2663*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[0,1,2,3,2,3,0,1,8,9,10,11,6,7,4,5] 2664*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1 2665*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[2,3,0,1,4,5,6,7,6,7,4,5,4,5,6,7,18,19,16,17,20,21,22,23,22,23,20,21,20,21,22,23] 2666*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7] 2667*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2668*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 1, i32 0, i32 17, i32 16, i32 3, i32 2, i32 19, i32 26, i32 9, i32 8, i32 25, i32 24, i32 11, i32 10, i32 27, i32 26> 2669*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2670*9880d681SAndroid Build Coastguard Worker} 2671*9880d681SAndroid Build Coastguard Worker 2672*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_00_17_01_18_02_19_11_24_08_25_09_26_10_27_11(<16 x i16> %a, <16 x i16> %b) { 2673*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_00_17_01_18_02_19_11_24_08_25_09_26_10_27_11: 2674*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2675*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 2676*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 2677*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3] 2678*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 2679*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,4,5,8,9,14,15,14,15,8,9,12,13,14,15] 2680*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 2681*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0 2682*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2683*9880d681SAndroid Build Coastguard Worker; 2684*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_00_17_01_18_02_19_11_24_08_25_09_26_10_27_11: 2685*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2686*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2 2687*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 2688*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 2689*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7] 2690*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,6,7] 2691*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm0 2692*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} ymm1 = ymm1[0],ymm0[0],ymm1[1],ymm0[1],ymm1[2],ymm0[2],ymm1[3],ymm0[3],ymm1[8],ymm0[8],ymm1[9],ymm0[9],ymm1[10],ymm0[10],ymm1[11],ymm0[11] 2693*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4],ymm0[5],ymm1[6],ymm0[7],ymm1[8],ymm0[9],ymm1[10],ymm0[11],ymm1[12],ymm0[13],ymm1[14],ymm0[15] 2694*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2695*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 16, i32 0, i32 17, i32 1, i32 18, i32 2, i32 19, i32 11, i32 24, i32 8, i32 25, i32 9, i32 26, i32 10, i32 27, i32 11> 2696*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2697*9880d681SAndroid Build Coastguard Worker} 2698*9880d681SAndroid Build Coastguard Worker 2699*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_20_04_21_05_22_06_23_15_28_12_29_13_30_14_31_15(<16 x i16> %a, <16 x i16> %b) { 2700*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_20_04_21_05_22_06_23_15_28_12_29_13_30_14_31_15: 2701*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2702*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 2703*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 2704*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 2705*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7] 2706*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[4,5,0,1,4,5,4,5,0,1,4,5,8,9,14,15] 2707*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2708*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0 2709*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2710*9880d681SAndroid Build Coastguard Worker; 2711*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_20_04_21_05_22_06_23_15_28_12_29_13_30_14_31_15: 2712*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2713*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2 2714*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7] 2715*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7] 2716*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7] 2717*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,6,7] 2718*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm0 2719*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpckhwd {{.*#+}} ymm1 = ymm1[4],ymm0[4],ymm1[5],ymm0[5],ymm1[6],ymm0[6],ymm1[7],ymm0[7],ymm1[12],ymm0[12],ymm1[13],ymm0[13],ymm1[14],ymm0[14],ymm1[15],ymm0[15] 2720*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4],ymm0[5],ymm1[6],ymm0[7],ymm1[8],ymm0[9],ymm1[10],ymm0[11],ymm1[12],ymm0[13],ymm1[14],ymm0[15] 2721*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2722*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 20, i32 4, i32 21, i32 5, i32 22, i32 6, i32 23, i32 15, i32 28, i32 12, i32 29, i32 13, i32 30, i32 14, i32 31, i32 15> 2723*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2724*9880d681SAndroid Build Coastguard Worker} 2725*9880d681SAndroid Build Coastguard Worker 2726*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_02_01_03_20_22_21_31_08_10_09_11_28_30_29_31(<16 x i16> %a, <16 x i16> %b) { 2727*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_02_01_03_20_22_21_31_08_10_09_11_28_30_29_31: 2728*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2729*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 2730*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,2,1,3,4,5,6,7] 2731*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 2732*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm4 = xmm3[2,3,2,3] 2733*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,2,1,3,4,5,6,7] 2734*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0] 2735*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7] 2736*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,4,5,14,15,0,1,4,5,4,5,6,7] 2737*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,1,3,4,5,6,7] 2738*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 2739*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 2740*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2741*9880d681SAndroid Build Coastguard Worker; 2742*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_02_01_03_20_22_21_31_08_10_09_11_28_30_29_31: 2743*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2744*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7] 2745*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2746*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,1,3,4,5,6,7] 2747*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,5,7] 2748*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7] 2749*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,2,1,3,4,5,6,7] 2750*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,5,7] 2751*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2752*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2753*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 2, i32 1, i32 3, i32 20, i32 22, i32 21, i32 31, i32 8, i32 10, i32 9, i32 11, i32 28, i32 30, i32 29, i32 31> 2754*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2755*9880d681SAndroid Build Coastguard Worker} 2756*9880d681SAndroid Build Coastguard Worker 2757*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_04_03_18_uu_uu_uu_uu_12_12_11_26_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) { 2758*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_04_03_18_uu_uu_uu_uu_12_12_11_26_uu_uu_uu_uu: 2759*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2760*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7] 2761*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[2,1,2,3] 2762*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,0,3,2,4,5,6,7] 2763*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1 2764*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 2765*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7] 2766*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,1,2,3] 2767*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,3,2,4,5,6,7] 2768*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm2, %ymm0 2769*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2770*9880d681SAndroid Build Coastguard Worker; 2771*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_04_03_18_uu_uu_uu_uu_12_12_11_26_uu_uu_uu_uu: 2772*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2773*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4,5,6,7,8,9],ymm1[10],ymm0[11,12,13,14,15] 2774*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,1,2,3,6,5,6,7] 2775*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[0,0,3,2,4,5,6,7,8,8,11,10,12,13,14,15] 2776*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2777*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 4, i32 3, i32 18, i32 undef, i32 undef, i32 undef, i32 undef, i32 12, i32 12, i32 11, i32 26, i32 undef, i32 undef, i32 undef, i32 undef> 2778*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2779*9880d681SAndroid Build Coastguard Worker} 2780*9880d681SAndroid Build Coastguard Worker 2781*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_03_02_21_uu_uu_uu_uu_08_11_10_29_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) { 2782*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_03_02_21_uu_uu_uu_uu_08_11_10_29_uu_uu_uu_uu: 2783*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2784*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 2785*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 2786*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1,2,3],xmm2[4,5,6,7] 2787*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,6,7,4,5,10,11,0,1,10,11,0,1,2,3] 2788*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm3, %xmm2, %xmm2 2789*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7] 2790*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm3, %xmm0, %xmm0 2791*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 2792*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2793*9880d681SAndroid Build Coastguard Worker; 2794*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_03_02_21_uu_uu_uu_uu_08_11_10_29_uu_uu_uu_uu: 2795*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2796*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7] 2797*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,6,7,4,5,10,11,0,1,10,11,0,1,2,3,16,17,22,23,20,21,26,27,16,17,26,27,16,17,18,19] 2798*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2799*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 3, i32 2, i32 21, i32 undef, i32 undef, i32 undef, i32 undef, i32 8, i32 11, i32 10, i32 29, i32 undef, i32 undef, i32 undef, i32 undef> 2800*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2801*9880d681SAndroid Build Coastguard Worker} 2802*9880d681SAndroid Build Coastguard Worker 2803*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_uu_uu_21_uu_uu_uu_uu_uu_uu_uu_29_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) { 2804*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_uu_uu_21_uu_uu_uu_uu_uu_uu_uu_29_uu_uu_uu_uu: 2805*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2806*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm1[0,2,2,3,4,6,6,7] 2807*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2808*9880d681SAndroid Build Coastguard Worker; 2809*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_uu_uu_21_uu_uu_uu_uu_uu_uu_uu_29_uu_uu_uu_uu: 2810*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2811*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm1[0,2,2,3,4,6,6,7] 2812*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2813*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 undef, i32 21, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 29, i32 undef, i32 undef, i32 undef, i32 undef> 2814*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2815*9880d681SAndroid Build Coastguard Worker} 2816*9880d681SAndroid Build Coastguard Worker 2817*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_02_21_uu_uu_uu_uu_08_09_10_29_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) { 2818*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_02_21_uu_uu_uu_uu_08_09_10_29_uu_uu_uu_uu: 2819*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2820*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 2821*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 2822*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[2,2,3,3] 2823*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm3[3],xmm2[4,5,6,7] 2824*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[2,2,3,3] 2825*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7] 2826*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 2827*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2828*9880d681SAndroid Build Coastguard Worker; 2829*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_02_21_uu_uu_uu_uu_08_09_10_29_uu_uu_uu_uu: 2830*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2831*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,2,2,3,4,6,6,7] 2832*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1,2],ymm1[3],ymm0[4,5,6,7,8,9,10],ymm1[11],ymm0[12,13,14,15] 2833*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2834*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 21, i32 undef, i32 undef, i32 undef, i32 undef, i32 8, i32 9, i32 10, i32 29, i32 undef, i32 undef, i32 undef, i32 undef> 2835*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2836*9880d681SAndroid Build Coastguard Worker} 2837*9880d681SAndroid Build Coastguard Worker 2838*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_uu_uu_uu_20_21_22_11_uu_uu_uu_uu_28_29_30_11(<16 x i16> %a, <16 x i16> %b) { 2839*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_uu_uu_uu_20_21_22_11_uu_uu_uu_uu_28_29_30_11: 2840*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2841*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 2842*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 2843*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,0,1] 2844*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6],xmm0[7] 2845*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2,3,4,5,6],xmm0[7] 2846*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 2847*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2848*9880d681SAndroid Build Coastguard Worker; 2849*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_uu_uu_uu_20_21_22_11_uu_uu_uu_uu_28_29_30_11: 2850*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2851*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,2] 2852*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5,6],ymm0[7],ymm1[8,9,10,11,12,13,14],ymm0[15] 2853*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2854*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 undef, i32 undef, i32 20, i32 21, i32 22, i32 11, i32 undef, i32 undef, i32 undef, i32 undef, i32 28, i32 29, i32 30, i32 11> 2855*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2856*9880d681SAndroid Build Coastguard Worker} 2857*9880d681SAndroid Build Coastguard Worker 2858*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_20_21_22_03_uu_uu_uu_uu_28_29_30_11_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) { 2859*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_20_21_22_03_uu_uu_uu_uu_28_29_30_11_uu_uu_uu_uu: 2860*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2861*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 2862*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 2863*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[2,3,0,1] 2864*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1,2],xmm2[3],xmm3[4,5,6,7] 2865*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1] 2866*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3],xmm1[4,5,6,7] 2867*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 2868*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2869*9880d681SAndroid Build Coastguard Worker; 2870*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_20_21_22_03_uu_uu_uu_uu_28_29_30_11_uu_uu_uu_uu: 2871*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2872*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,3,2,3,6,7,6,7] 2873*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3],ymm1[4,5,6,7,8,9,10],ymm0[11],ymm1[12,13,14,15] 2874*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2875*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 20, i32 21, i32 22, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 28, i32 29, i32 30, i32 11, i32 undef, i32 undef, i32 undef, i32 undef> 2876*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2877*9880d681SAndroid Build Coastguard Worker} 2878*9880d681SAndroid Build Coastguard Worker 2879*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_02_21_20_21_22_11_08_09_10_29_28_29_30_11(<16 x i16> %a, <16 x i16> %b) { 2880*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_02_21_20_21_22_11_08_09_10_29_28_29_30_11: 2881*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2882*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 2883*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0] 2884*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm3 = xmm1[0,2,2,3] 2885*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3,4,5,6],xmm0[7] 2886*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1 2887*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3],xmm1[4,5,6,7] 2888*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,10,11,8,9,10,11,12,13,6,7] 2889*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 2890*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2891*9880d681SAndroid Build Coastguard Worker; 2892*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_02_21_20_21_22_11_08_09_10_29_28_29_30_11: 2893*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2894*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7] 2895*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2896*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7] 2897*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,2,3,4,5,10,11,8,9,10,11,12,13,6,7] 2898*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm0, %xmm0 2899*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %xmm2, %xmm1, %xmm1 2900*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2901*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2902*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 21, i32 20, i32 21, i32 22, i32 11, i32 8, i32 9, i32 10, i32 29, i32 28, i32 29, i32 30, i32 11> 2903*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2904*9880d681SAndroid Build Coastguard Worker} 2905*9880d681SAndroid Build Coastguard Worker 2906*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_17_02_03_20_21_22_15_08_25_10_11_28_29_30_15(<16 x i16> %a, <16 x i16> %b) { 2907*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_17_02_03_20_21_22_15_08_25_10_11_28_29_30_15: 2908*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2909*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 2910*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 2911*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0],xmm2[1],xmm3[2,3],xmm2[4,5,6],xmm3[7] 2912*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm3[4,5,6,7] 2913*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4,5,6],xmm0[7] 2914*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 2915*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2916*9880d681SAndroid Build Coastguard Worker; 2917*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_17_02_03_20_21_22_15_08_25_10_11_28_29_30_15: 2918*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2919*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,3,2,3] 2920*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4,5,6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12,13,14],ymm0[15] 2921*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2922*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 17, i32 2, i32 3, i32 20, i32 21, i32 22, i32 15, i32 8, i32 25, i32 10, i32 11, i32 28, i32 29, i32 30, i32 15> 2923*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2924*9880d681SAndroid Build Coastguard Worker} 2925*9880d681SAndroid Build Coastguard Worker 2926*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_uu_uu_01_uu_05_07_25_uu_uu_uu_09_uu_13_15_25(<16 x i16> %a, <16 x i16> %b) { 2927*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_uu_uu_01_uu_05_07_25_uu_uu_uu_09_uu_13_15_25: 2928*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2929*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1 2930*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,1,2,0] 2931*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 2932*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,2,1,4,5,6,7] 2933*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,7] 2934*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6],xmm1[7] 2935*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7] 2936*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,7] 2937*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7] 2938*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 2939*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2940*9880d681SAndroid Build Coastguard Worker; 2941*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_uu_uu_01_uu_05_07_25_uu_uu_uu_09_uu_13_15_25: 2942*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2943*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm1 2944*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastd %xmm1, %ymm1 2945*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[0,1,2,1,4,5,6,7,8,9,10,9,12,13,14,15] 2946*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,7,7,8,9,10,11,12,13,15,15] 2947*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm1[7],ymm0[8,9,10,11,12,13,14],ymm1[15] 2948*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2949*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 undef, i32 1, i32 undef, i32 5, i32 7, i32 25, i32 undef, i32 undef, i32 undef, i32 9, i32 undef, i32 13, i32 15, i32 25> 2950*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2951*9880d681SAndroid Build Coastguard Worker} 2952*9880d681SAndroid Build Coastguard Worker 2953*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_uu_04_uu_16_18_20_uu_uu_uu_12_uu_24_26_28_uu(<16 x i16> %a, <16 x i16> %b) { 2954*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_uu_04_uu_16_18_20_uu_uu_uu_12_uu_24_26_28_uu: 2955*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2956*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 2957*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,4,5,4,5,6,7,0,1,4,5,8,9,4,5] 2958*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm3, %xmm2, %xmm2 2959*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4 2960*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[2,2,3,3] 2961*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm4[0,1,2,3],xmm2[4,5,6,7] 2962*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb %xmm3, %xmm1, %xmm1 2963*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,2,3,3] 2964*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7] 2965*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 2966*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2967*9880d681SAndroid Build Coastguard Worker; 2968*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_uu_04_uu_16_18_20_uu_uu_uu_12_uu_24_26_28_uu: 2969*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2970*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[0,1,4,5,4,5,6,7,0,1,4,5,8,9,4,5,16,17,20,21,20,21,22,23,16,17,20,21,24,25,20,21] 2971*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,2,2,3,4,6,6,7] 2972*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7] 2973*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 2974*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 4, i32 undef, i32 16, i32 18, i32 20, i32 undef, i32 undef, i32 undef, i32 12, i32 undef, i32 24, i32 26, i32 28, i32 undef> 2975*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 2976*9880d681SAndroid Build Coastguard Worker} 2977*9880d681SAndroid Build Coastguard Worker 2978*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_21_22_23_00_01_02_03_12_29_30_31_08_09_10_11_12(<16 x i16> %a, <16 x i16> %b) { 2979*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_21_22_23_00_01_02_03_12_29_30_31_08_09_10_11_12: 2980*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 2981*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 2982*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 2983*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[10,11,12,13,14,15],xmm3[0,1,2,3,4,5,6,7,8,9] 2984*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm3[4,5,6,7] 2985*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9] 2986*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrldq {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 2987*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4,5,6,7] 2988*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 2989*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 2990*9880d681SAndroid Build Coastguard Worker; 2991*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_21_22_23_00_01_02_03_12_29_30_31_08_09_10_11_12: 2992*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 2993*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm1[5,6,7],ymm0[8,9,10,11,12],ymm1[13,14,15] 2994*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2995*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7] 2996*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9] 2997*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9] 2998*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 2999*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3000*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 21, i32 22, i32 23, i32 0, i32 1, i32 2, i32 3, i32 12, i32 29, i32 30, i32 31, i32 8, i32 9, i32 10, i32 11, i32 12> 3001*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3002*9880d681SAndroid Build Coastguard Worker} 3003*9880d681SAndroid Build Coastguard Worker 3004*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_22_uu_uu_01_02_03_uu_uu_30_uu_uu_09_10_11_uu(<16 x i16> %a, <16 x i16> %b) { 3005*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_22_uu_uu_01_02_03_uu_uu_30_uu_uu_09_10_11_uu: 3006*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3007*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 3008*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 3009*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[10,11,12,13,14,15],xmm3[0,1,2,3,4,5,6,7,8,9] 3010*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm0 = xmm1[10,11,12,13,14,15],xmm0[0,1,2,3,4,5,6,7,8,9] 3011*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 3012*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3013*9880d681SAndroid Build Coastguard Worker; 3014*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_22_uu_uu_01_02_03_uu_uu_30_uu_uu_09_10_11_uu: 3015*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3016*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm1[10,11,12,13,14,15],ymm0[0,1,2,3,4,5,6,7,8,9],ymm1[26,27,28,29,30,31],ymm0[16,17,18,19,20,21,22,23,24,25] 3017*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3018*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 22, i32 undef, i32 undef, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 30, i32 undef, i32 undef, i32 9, i32 10, i32 11, i32 undef> 3019*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3020*9880d681SAndroid Build Coastguard Worker} 3021*9880d681SAndroid Build Coastguard Worker 3022*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_05_06_07_00_01_02_03_12_13_14_15_08_09_10_11_12(<16 x i16> %a, <16 x i16> %b) { 3023*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_05_06_07_00_01_02_03_12_13_14_15_08_09_10_11_12: 3024*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3025*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 3026*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7] 3027*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9] 3028*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9] 3029*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 3030*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3031*9880d681SAndroid Build Coastguard Worker; 3032*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_05_06_07_00_01_02_03_12_13_14_15_08_09_10_11_12: 3033*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3034*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 3035*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7] 3036*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9] 3037*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9] 3038*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 3039*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3040*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 10, i32 11, i32 12> 3041*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3042*9880d681SAndroid Build Coastguard Worker} 3043*9880d681SAndroid Build Coastguard Worker 3044*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_06_uu_uu_01_02_03_uu_uu_14_uu_uu_09_10_11_uu(<16 x i16> %a, <16 x i16> %b) { 3045*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_06_uu_uu_01_02_03_uu_uu_14_uu_uu_09_10_11_uu: 3046*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3047*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm1 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9] 3048*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 3049*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9] 3050*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 3051*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3052*9880d681SAndroid Build Coastguard Worker; 3053*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_06_uu_uu_01_02_03_uu_uu_14_uu_uu_09_10_11_uu: 3054*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3055*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,26,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25] 3056*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3057*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 6, i32 undef, i32 undef, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 14, i32 undef, i32 undef, i32 9, i32 10, i32 11, i32 undef> 3058*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3059*9880d681SAndroid Build Coastguard Worker} 3060*9880d681SAndroid Build Coastguard Worker 3061*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_uu_uu_uu_01_02_03_uu_uu_uu_uu_uu_09_10_11_uu(<16 x i16> %a, <16 x i16> %b) { 3062*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_uu_uu_uu_01_02_03_uu_uu_uu_uu_uu_09_10_11_uu: 3063*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3064*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9] 3065*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 3066*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9] 3067*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 3068*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3069*9880d681SAndroid Build Coastguard Worker; 3070*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_uu_uu_uu_01_02_03_uu_uu_uu_uu_uu_09_10_11_uu: 3071*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3072*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpslldq {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,ymm0[0,1,2,3,4,5,6,7,8,9],zero,zero,zero,zero,zero,zero,ymm0[16,17,18,19,20,21,22,23,24,25] 3073*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3074*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 undef, i32 undef, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 9, i32 10, i32 11, i32 undef> 3075*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3076*9880d681SAndroid Build Coastguard Worker} 3077*9880d681SAndroid Build Coastguard Worker 3078*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_19_20_21_22_23_00_01_10_27_28_29_30_31_08_09_10(<16 x i16> %a, <16 x i16> %b) { 3079*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_19_20_21_22_23_00_01_10_27_28_29_30_31_08_09_10: 3080*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3081*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 3082*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 3083*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4,5] 3084*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3] 3085*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,4,5,4,5,6,7,8,9,0,1,4,5,10,11] 3086*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrldq {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero 3087*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2,3,4],xmm0[5,6,7] 3088*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 3089*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3090*9880d681SAndroid Build Coastguard Worker; 3091*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_19_20_21_22_23_00_01_10_27_28_29_30_31_08_09_10: 3092*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3093*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1,2],ymm1[3,4,5,6,7],ymm0[8,9,10],ymm1[11,12,13,14,15] 3094*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 3095*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7] 3096*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5] 3097*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5] 3098*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 3099*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3100*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 19, i32 20, i32 21, i32 22, i32 23, i32 0, i32 1, i32 10, i32 27, i32 28, i32 29, i32 30, i32 31, i32 8, i32 9, i32 10> 3101*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3102*9880d681SAndroid Build Coastguard Worker} 3103*9880d681SAndroid Build Coastguard Worker 3104*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_20_21_22_uu_uu_01_uu_uu_28_29_30_uu_uu_09_uu(<16 x i16> %a, <16 x i16> %b) { 3105*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_20_21_22_uu_uu_01_uu_uu_28_29_30_uu_uu_09_uu: 3106*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3107*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 3108*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 3109*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4,5] 3110*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm0 = xmm1[6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4,5] 3111*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 3112*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3113*9880d681SAndroid Build Coastguard Worker; 3114*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_20_21_22_uu_uu_01_uu_uu_28_29_30_uu_uu_09_uu: 3115*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3116*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm1[6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4,5],ymm1[22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20,21] 3117*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3118*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 20, i32 21, i32 22, i32 undef, i32 undef, i32 1, i32 undef, i32 undef, i32 28, i32 29, i32 30, i32 undef, i32 undef, i32 9, i32 undef> 3119*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3120*9880d681SAndroid Build Coastguard Worker} 3121*9880d681SAndroid Build Coastguard Worker 3122*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_03_04_05_06_07_00_01_10_11_12_13_14_15_08_09_10(<16 x i16> %a, <16 x i16> %b) { 3123*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_03_04_05_06_07_00_01_10_11_12_13_14_15_08_09_10: 3124*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3125*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 3126*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7] 3127*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5] 3128*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5] 3129*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 3130*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3131*9880d681SAndroid Build Coastguard Worker; 3132*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_03_04_05_06_07_00_01_10_11_12_13_14_15_08_09_10: 3133*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3134*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 3135*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7] 3136*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5] 3137*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5] 3138*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 3139*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3140*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 10> 3141*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3142*9880d681SAndroid Build Coastguard Worker} 3143*9880d681SAndroid Build Coastguard Worker 3144*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_04_05_06_uu_uu_01_uu_uu_12_13_14_uu_uu_09_uu(<16 x i16> %a, <16 x i16> %b) { 3145*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_04_05_06_uu_uu_01_uu_uu_12_13_14_uu_uu_09_uu: 3146*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3147*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm1 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5] 3148*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 3149*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5] 3150*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 3151*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3152*9880d681SAndroid Build Coastguard Worker; 3153*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_04_05_06_uu_uu_01_uu_uu_12_13_14_uu_uu_09_uu: 3154*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3155*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21] 3156*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3157*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 4, i32 5, i32 6, i32 undef, i32 undef, i32 1, i32 undef, i32 undef, i32 12, i32 13, i32 14, i32 undef, i32 undef, i32 9, i32 undef> 3158*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3159*9880d681SAndroid Build Coastguard Worker} 3160*9880d681SAndroid Build Coastguard Worker 3161*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_04_05_06_uu_uu_uu_uu_uu_12_13_14_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) { 3162*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_04_05_06_uu_uu_uu_uu_uu_12_13_14_uu_uu_uu_uu: 3163*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3164*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrldq {{.*#+}} xmm1 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero 3165*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 3166*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero 3167*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0 3168*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3169*9880d681SAndroid Build Coastguard Worker; 3170*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_04_05_06_uu_uu_uu_uu_uu_12_13_14_uu_uu_uu_uu: 3171*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3172*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrldq {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,ymm0[22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero,zero 3173*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3174*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 4, i32 5, i32 6, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 12, i32 13, i32 14, i32 undef, i32 undef, i32 undef, i32 undef> 3175*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3176*9880d681SAndroid Build Coastguard Worker} 3177*9880d681SAndroid Build Coastguard Worker 3178*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_03_04_05_06_07_16_17_26_11_12_13_14_15_24_25_26(<16 x i16> %a, <16 x i16> %b) { 3179*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_03_04_05_06_07_16_17_26_11_12_13_14_15_24_25_26: 3180*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3181*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 3182*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 3183*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4,5] 3184*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3] 3185*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,4,5,4,5,6,7,8,9,0,1,4,5,10,11] 3186*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero 3187*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5,6,7] 3188*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 3189*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3190*9880d681SAndroid Build Coastguard Worker; 3191*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_03_04_05_06_07_16_17_26_11_12_13_14_15_24_25_26: 3192*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3193*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7],ymm1[8,9,10],ymm0[11,12,13,14,15] 3194*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 3195*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7] 3196*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5] 3197*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5] 3198*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 3199*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3200*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 26, i32 11, i32 12, i32 13, i32 14, i32 15, i32 24, i32 25, i32 26> 3201*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3202*9880d681SAndroid Build Coastguard Worker} 3203*9880d681SAndroid Build Coastguard Worker 3204*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_04_05_06_uu_uu_17_uu_uu_12_13_14_uu_uu_25_uu(<16 x i16> %a, <16 x i16> %b) { 3205*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_04_05_06_uu_uu_17_uu_uu_12_13_14_uu_uu_25_uu: 3206*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3207*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 3208*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 3209*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4,5] 3210*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4,5] 3211*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 3212*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3213*9880d681SAndroid Build Coastguard Worker; 3214*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_04_05_06_uu_uu_17_uu_uu_12_13_14_uu_uu_25_uu: 3215*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3216*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4,5],ymm0[22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20,21] 3217*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3218*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 4, i32 5, i32 6, i32 undef, i32 undef, i32 17, i32 undef, i32 undef, i32 12, i32 13, i32 14, i32 undef, i32 undef, i32 25, i32 undef> 3219*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3220*9880d681SAndroid Build Coastguard Worker} 3221*9880d681SAndroid Build Coastguard Worker 3222*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_05_06_07_16_17_18_19_28_13_14_15_24_25_26_27_28(<16 x i16> %a, <16 x i16> %b) { 3223*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_05_06_07_16_17_18_19_28_13_14_15_24_25_26_27_28: 3224*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3225*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 3226*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 3227*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[10,11,12,13,14,15],xmm3[0,1,2,3,4,5,6,7,8,9] 3228*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3],xmm3[4,5,6,7] 3229*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9] 3230*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 3231*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3,4,5,6,7] 3232*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 3233*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3234*9880d681SAndroid Build Coastguard Worker; 3235*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_05_06_07_16_17_18_19_28_13_14_15_24_25_26_27_28: 3236*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3237*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2,3,4],ymm0[5,6,7],ymm1[8,9,10,11,12],ymm0[13,14,15] 3238*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 3239*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7] 3240*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9] 3241*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9] 3242*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 3243*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3244*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 28, i32 13, i32 14, i32 15, i32 24, i32 25, i32 26, i32 27, i32 28> 3245*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3246*9880d681SAndroid Build Coastguard Worker} 3247*9880d681SAndroid Build Coastguard Worker 3248*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_06_uu_uu_17_18_19_uu_uu_14_uu_uu_25_26_27_uu(<16 x i16> %a, <16 x i16> %b) { 3249*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_06_uu_uu_17_18_19_uu_uu_14_uu_uu_25_26_27_uu: 3250*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3251*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 3252*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 3253*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[10,11,12,13,14,15],xmm3[0,1,2,3,4,5,6,7,8,9] 3254*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],xmm1[0,1,2,3,4,5,6,7,8,9] 3255*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 3256*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3257*9880d681SAndroid Build Coastguard Worker; 3258*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_06_uu_uu_17_18_19_uu_uu_14_uu_uu_25_26_27_uu: 3259*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3260*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[10,11,12,13,14,15],ymm1[0,1,2,3,4,5,6,7,8,9],ymm0[26,27,28,29,30,31],ymm1[16,17,18,19,20,21,22,23,24,25] 3261*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3262*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 6, i32 undef, i32 undef, i32 17, i32 18, i32 19, i32 undef, i32 undef, i32 14, i32 undef, i32 undef, i32 25, i32 26, i32 27, i32 undef> 3263*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3264*9880d681SAndroid Build Coastguard Worker} 3265*9880d681SAndroid Build Coastguard Worker 3266*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_23_uu_03_uu_20_20_05_uu_31_uu_11_uu_28_28_13_uu(<16 x i16> %a, <16 x i16> %b) { 3267*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_23_uu_03_uu_20_20_05_uu_31_uu_11_uu_28_28_13_uu: 3268*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3269*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 3270*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13] 3271*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 3272*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,5,4,4] 3273*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhdq {{.*#+}} xmm2 = xmm3[2],xmm2[2],xmm3[3],xmm2[3] 3274*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13] 3275*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,5,4,4] 3276*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpckhdq {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3] 3277*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 3278*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3279*9880d681SAndroid Build Coastguard Worker; 3280*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_23_uu_03_uu_20_20_05_uu_31_uu_11_uu_28_28_13_uu: 3281*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3282*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4],ymm0[5,6],ymm1[7],ymm0[8,9,10,11],ymm1[12],ymm0[13,14],ymm1[15] 3283*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[14,15,14,15,6,7,6,7,8,9,8,9,10,11,14,15,30,31,30,31,22,23,22,23,24,25,24,25,26,27,30,31] 3284*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3285*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 23, i32 undef, i32 3, i32 undef, i32 20, i32 20, i32 5, i32 undef, i32 31, i32 undef, i32 11, i32 undef, i32 28, i32 28, i32 13, i32 undef> 3286*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3287*9880d681SAndroid Build Coastguard Worker} 3288*9880d681SAndroid Build Coastguard Worker 3289*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_u_u_u_u_u_u_u_u_0_16_1_17_2_18_3_19(<16 x i16> %a, <16 x i16> %b) { 3290*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_u_u_u_u_u_u_u_u_0_16_1_17_2_18_3_19: 3291*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3292*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 3293*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 3294*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3295*9880d681SAndroid Build Coastguard Worker; 3296*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_u_u_u_u_u_u_u_u_0_16_1_17_2_18_3_19: 3297*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3298*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 3299*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0 3300*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3301*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19> 3302*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3303*9880d681SAndroid Build Coastguard Worker} 3304*9880d681SAndroid Build Coastguard Worker 3305*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_u_u_u_u_u_u_u_u_3_3_3_3_3_3_3_3(<16 x i16> %a, <16 x i16> %b) { 3306*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_u_u_u_u_u_u_u_u_3_3_3_3_3_3_3_3: 3307*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3308*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7] 3309*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 3310*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 3311*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3312*9880d681SAndroid Build Coastguard Worker; 3313*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_u_u_u_u_u_u_u_u_3_3_3_3_3_3_3_3: 3314*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3315*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7] 3316*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 3317*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0 3318*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3319*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3> 3320*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3321*9880d681SAndroid Build Coastguard Worker} 3322*9880d681SAndroid Build Coastguard Worker 3323*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_8_8_8_8_8_8_8_8_8_8_8_8_8_8_8_8(<16 x i16> %a, <16 x i16> %b) { 3324*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_8_8_8_8_8_8_8_8_8_8_8_8_8_8_8_8: 3325*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3326*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 3327*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 3328*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 3329*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 3330*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3331*9880d681SAndroid Build Coastguard Worker; 3332*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_8_8_8_8_8_8_8_8_8_8_8_8_8_8_8_8: 3333*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3334*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm0 3335*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm0, %ymm0 3336*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3337*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8> 3338*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3339*9880d681SAndroid Build Coastguard Worker} 3340*9880d681SAndroid Build Coastguard Worker 3341*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_4_20_5_21_6_22_7_23_u_u_u_u_u_u_u_u(<16 x i16> %a, <16 x i16> %b) { 3342*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: shuffle_v16i16_4_20_5_21_6_22_7_23_u_u_u_u_u_u_u_u: 3343*9880d681SAndroid Build Coastguard Worker; ALL: # BB#0: 3344*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 3345*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 3346*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef> 3347*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3348*9880d681SAndroid Build Coastguard Worker} 3349*9880d681SAndroid Build Coastguard Worker 3350*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_3_3_3_3_3_3_3_3_u_u_u_u_u_u_u_u(<16 x i16> %a, <16 x i16> %b) { 3351*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: shuffle_v16i16_3_3_3_3_3_3_3_3_u_u_u_u_u_u_u_u: 3352*9880d681SAndroid Build Coastguard Worker; ALL: # BB#0: 3353*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7] 3354*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 3355*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 3356*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef> 3357*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3358*9880d681SAndroid Build Coastguard Worker} 3359*9880d681SAndroid Build Coastguard Worker 3360*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_9_9_9_9_9_9_9_9_u_u_u_u_u_u_u_u(<16 x i16> %a, <16 x i16> %b) { 3361*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_9_9_9_9_9_9_9_9_u_u_u_u_u_u_u_u: 3362*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3363*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 3364*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[1,1,1,1,4,5,6,7] 3365*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 3366*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3367*9880d681SAndroid Build Coastguard Worker; 3368*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_9_9_9_9_9_9_9_9_u_u_u_u_u_u_u_u: 3369*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3370*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm0 3371*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[1,1,1,1,4,5,6,7] 3372*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 3373*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3374*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef> 3375*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3376*9880d681SAndroid Build Coastguard Worker} 3377*9880d681SAndroid Build Coastguard Worker 3378*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @insert_v16i16_0elt_into_zero_vector(i16* %ptr) { 3379*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: insert_v16i16_0elt_into_zero_vector: 3380*9880d681SAndroid Build Coastguard Worker; ALL: # BB#0: 3381*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: movzwl (%rdi), %eax 3382*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vmovd %eax, %xmm0 3383*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 3384*9880d681SAndroid Build Coastguard Worker %val = load i16, i16* %ptr 3385*9880d681SAndroid Build Coastguard Worker %i0 = insertelement <16 x i16> zeroinitializer, i16 %val, i32 0 3386*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %i0 3387*9880d681SAndroid Build Coastguard Worker} 3388*9880d681SAndroid Build Coastguard Worker 3389*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @concat_v16i16_0_1_2_3_4_5_6_7_24_25_26_27_28_29_30_31(<16 x i16> %a, <16 x i16> %b) { 3390*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: concat_v16i16_0_1_2_3_4_5_6_7_24_25_26_27_28_29_30_31: 3391*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3392*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3] 3393*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3394*9880d681SAndroid Build Coastguard Worker; 3395*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: concat_v16i16_0_1_2_3_4_5_6_7_24_25_26_27_28_29_30_31: 3396*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3397*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7] 3398*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3399*9880d681SAndroid Build Coastguard Worker %alo = shufflevector <16 x i16> %a, <16 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 3400*9880d681SAndroid Build Coastguard Worker %bhi = shufflevector <16 x i16> %b, <16 x i16> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 3401*9880d681SAndroid Build Coastguard Worker %shuf = shufflevector <8 x i16> %alo, <8 x i16> %bhi, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 3402*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuf 3403*9880d681SAndroid Build Coastguard Worker} 3404*9880d681SAndroid Build Coastguard Worker 3405*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @concat_v16i16_8_9_10_11_12_13_14_15_24_25_26_27_28_29_30_31_bc(<16 x i16> %a, <16 x i16> %b) { 3406*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: concat_v16i16_8_9_10_11_12_13_14_15_24_25_26_27_28_29_30_31_bc: 3407*9880d681SAndroid Build Coastguard Worker; ALL: # BB#0: 3408*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[2,3] 3409*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 3410*9880d681SAndroid Build Coastguard Worker %ahi = shufflevector <16 x i16> %a, <16 x i16> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 3411*9880d681SAndroid Build Coastguard Worker %bhi = shufflevector <16 x i16> %b, <16 x i16> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 3412*9880d681SAndroid Build Coastguard Worker %bc0hi = bitcast <8 x i16> %ahi to <16 x i8> 3413*9880d681SAndroid Build Coastguard Worker %bc1hi = bitcast <8 x i16> %bhi to <16 x i8> 3414*9880d681SAndroid Build Coastguard Worker %shuffle8 = shufflevector <16 x i8> %bc0hi, <16 x i8> %bc1hi, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31> 3415*9880d681SAndroid Build Coastguard Worker %shuffle16 = bitcast <32 x i8> %shuffle8 to <16 x i16> 3416*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle16 3417*9880d681SAndroid Build Coastguard Worker} 3418*9880d681SAndroid Build Coastguard Worker 3419*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @PR24935(<16 x i16> %a, <16 x i16> %b) { 3420*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: PR24935: 3421*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3422*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm2 = xmm1[0,0,1,1] 3423*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 3424*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpalignr {{.*#+}} xmm4 = xmm3[2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1] 3425*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm4[0,1],xmm2[2],xmm4[3,4,5,6,7] 3426*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4 3427*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm5 = xmm4[0,1,2,3,5,5,6,7] 3428*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm6 = xmm0[2,3,2,3,4,5,6,7,8,9,8,9,0,1,2,3] 3429*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm5 = xmm6[0],xmm5[1],xmm6[2,3],xmm5[4],xmm6[5,6,7] 3430*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm5[0,1],xmm2[2,3],xmm5[4,5,6],xmm2[7] 3431*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3] 3432*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,7] 3433*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3,4,5],xmm1[6,7] 3434*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,7,4,5,4,5,10,11,4,5,14,15,12,13,0,1] 3435*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1],xmm0[2],xmm1[3,4,5],xmm0[6],xmm1[7] 3436*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 3437*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3438*9880d681SAndroid Build Coastguard Worker; 3439*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: PR24935: 3440*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3441*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vperm2i128 {{.*#+}} ymm2 = ymm1[2,3,0,1] 3442*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[6,7,4,5,0,1,10,11,4,5,10,11,4,5,6,7,22,23,20,21,16,17,26,27,20,21,26,27,20,21,22,23] 3443*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[8,9,10,11,4,5,8,9,0,1,14,15,12,13,0,1,24,25,26,27,20,21,24,25,16,17,30,31,28,29,16,17] 3444*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = <255,255,255,255,u,u,255,255,255,255,0,0,u,u,0,0,u,u,u,u,255,255,0,0,u,u,u,u,u,u,0,0> 3445*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendvb %ymm3, %ymm2, %ymm1, %ymm1 3446*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vperm2i128 {{.*#+}} ymm2 = ymm0[2,3,0,1] 3447*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,6,7,u,u,18,19,u,u,u,u,u,u,u,u,24,25,16,17,u,u] 3448*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[0,1,1,3,4,5,6,7,8,9,9,11,12,13,14,15] 3449*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,5,5,6,7,8,9,10,11,13,13,14,15] 3450*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0],ymm0[1,2],ymm2[3],ymm0[4],ymm2[5,6,7,8],ymm0[9,10],ymm2[11],ymm0[12],ymm2[13,14,15] 3451*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [255,255,255,255,0,0,255,255,255,255,255,255,0,0,255,255,0,0,0,0,255,255,255,255,0,0,0,0,0,0,255,255] 3452*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm0 3453*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3454*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 27, i32 26, i32 1, i32 29, i32 26, i32 23, i32 11, i32 16, i32 1, i32 9, i32 16, i32 28, i32 13, i32 4, i32 0, i32 24> 3455*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %shuffle 3456*9880d681SAndroid Build Coastguard Worker} 3457*9880d681SAndroid Build Coastguard Worker 3458*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @insert_dup_mem_v16i16_i32(i32* %ptr) { 3459*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_dup_mem_v16i16_i32: 3460*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3461*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero 3462*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 3463*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 3464*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 3465*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3466*9880d681SAndroid Build Coastguard Worker; 3467*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_dup_mem_v16i16_i32: 3468*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3469*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw (%rdi), %ymm0 3470*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3471*9880d681SAndroid Build Coastguard Worker %tmp = load i32, i32* %ptr, align 4 3472*9880d681SAndroid Build Coastguard Worker %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 0 3473*9880d681SAndroid Build Coastguard Worker %tmp2 = bitcast <4 x i32> %tmp1 to <8 x i16> 3474*9880d681SAndroid Build Coastguard Worker %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> undef, <16 x i32> zeroinitializer 3475*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %tmp3 3476*9880d681SAndroid Build Coastguard Worker} 3477*9880d681SAndroid Build Coastguard Worker 3478*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @insert_dup_mem_v16i16_sext_i16(i16* %ptr) { 3479*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_dup_mem_v16i16_sext_i16: 3480*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3481*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: movswl (%rdi), %eax 3482*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovd %eax, %xmm0 3483*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 3484*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 3485*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 3486*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3487*9880d681SAndroid Build Coastguard Worker; 3488*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_dup_mem_v16i16_sext_i16: 3489*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3490*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movswl (%rdi), %eax 3491*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovd %eax, %xmm0 3492*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw %xmm0, %ymm0 3493*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3494*9880d681SAndroid Build Coastguard Worker %tmp = load i16, i16* %ptr, align 2 3495*9880d681SAndroid Build Coastguard Worker %tmp1 = sext i16 %tmp to i32 3496*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x i32> zeroinitializer, i32 %tmp1, i32 0 3497*9880d681SAndroid Build Coastguard Worker %tmp3 = bitcast <4 x i32> %tmp2 to <8 x i16> 3498*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <8 x i16> %tmp3, <8 x i16> undef, <16 x i32> zeroinitializer 3499*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %tmp4 3500*9880d681SAndroid Build Coastguard Worker} 3501*9880d681SAndroid Build Coastguard Worker 3502*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @insert_dup_elt1_mem_v16i16_i32(i32* %ptr) #0 { 3503*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_dup_elt1_mem_v16i16_i32: 3504*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3505*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero 3506*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[1,1,1,1,4,5,6,7] 3507*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 3508*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 3509*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3510*9880d681SAndroid Build Coastguard Worker; 3511*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_dup_elt1_mem_v16i16_i32: 3512*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3513*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw 2(%rdi), %ymm0 3514*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3515*9880d681SAndroid Build Coastguard Worker %tmp = load i32, i32* %ptr, align 4 3516*9880d681SAndroid Build Coastguard Worker %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 0 3517*9880d681SAndroid Build Coastguard Worker %tmp2 = bitcast <4 x i32> %tmp1 to <8 x i16> 3518*9880d681SAndroid Build Coastguard Worker %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> undef, <16 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1> 3519*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %tmp3 3520*9880d681SAndroid Build Coastguard Worker} 3521*9880d681SAndroid Build Coastguard Worker 3522*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @insert_dup_elt3_mem_v16i16_i32(i32* %ptr) #0 { 3523*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_dup_elt3_mem_v16i16_i32: 3524*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 3525*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero 3526*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3] 3527*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 3528*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 3529*9880d681SAndroid Build Coastguard Worker; 3530*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_dup_elt3_mem_v16i16_i32: 3531*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 3532*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpbroadcastw 2(%rdi), %ymm0 3533*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 3534*9880d681SAndroid Build Coastguard Worker %tmp = load i32, i32* %ptr, align 4 3535*9880d681SAndroid Build Coastguard Worker %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 1 3536*9880d681SAndroid Build Coastguard Worker %tmp2 = bitcast <4 x i32> %tmp1 to <8 x i16> 3537*9880d681SAndroid Build Coastguard Worker %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> undef, <16 x i32> <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3> 3538*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %tmp3 3539*9880d681SAndroid Build Coastguard Worker} 3540