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