brintos

brintos / llvm-project-archived public Read only

0
0
Text · 339.9 KiB · 60eac79 Raw
5438 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=ALL,AVX13; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=ALL,AVX2OR512VL,AVX2,AVX2-SLOW4; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=ALL,AVX2OR512VL,AVX2,AVX2-FAST5; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=ALL,AVX2OR512VL,AVX2,AVX2-FAST6; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vl,+avx512bw | FileCheck %s --check-prefixes=ALL,AVX2OR512VL,AVX512VL,AVX512VLBW,AVX512VLBW-SLOW7; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vl,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=ALL,AVX2OR512VL,AVX512VL,AVX512VLBW,AVX512VLBW-FAST8; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vl,+avx512bw,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=ALL,AVX2OR512VL,AVX512VL,AVX512VLBW,AVX512VLBW-FAST9; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vl,+avx512vbmi | FileCheck %s --check-prefixes=ALL,AVX2OR512VL,AVX512VL,AVX512VLVBMI,AVX512VLVBMI-SLOW10; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vl,+avx512vbmi,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=ALL,AVX2OR512VL,AVX512VL,AVX512VLVBMI,AVX512VLVBMI-FAST-ALL11; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vl,+avx512vbmi,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=ALL,AVX2OR512VL,AVX512VL,AVX512VLVBMI,AVX512VLVBMI-FAST-PERLANE12; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+xop,+avx | FileCheck %s --check-prefixes=ALL,XOP,XOPAVX113; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+xop,+avx2 | FileCheck %s --check-prefixes=ALL,XOP,XOPAVX214 15define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {16; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:17; AVX1:       # %bb.0:18; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm119; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm020; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm021; AVX1-NEXT:    retq22;23; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:24; AVX2OR512VL:       # %bb.0:25; AVX2OR512VL-NEXT:    vpbroadcastb %xmm0, %ymm026; AVX2OR512VL-NEXT:    retq27;28; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:29; XOPAVX1:       # %bb.0:30; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm131; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm032; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm033; XOPAVX1-NEXT:    retq34;35; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:36; XOPAVX2:       # %bb.0:37; XOPAVX2-NEXT:    vpbroadcastb %xmm0, %ymm038; XOPAVX2-NEXT:    retq39  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, 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>40  ret <32 x i8> %shuffle41}42 43define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00(<32 x i8> %a, <32 x i8> %b) {44; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00:45; AVX1:       # %bb.0:46; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm147; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm148; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]49; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm050; AVX1-NEXT:    retq51;52; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00:53; AVX2:       # %bb.0:54; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]55; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]56; AVX2-NEXT:    retq57;58; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00:59; AVX512VLBW:       # %bb.0:60; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]61; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]62; AVX512VLBW-NEXT:    retq63;64; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00:65; AVX512VLVBMI:       # %bb.0:66; AVX512VLVBMI-NEXT:    vpmovsxbw {{.*#+}} ymm1 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]67; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm068; AVX512VLVBMI-NEXT:    retq69;70; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00:71; XOPAVX1:       # %bb.0:72; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm173; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm174; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]75; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm076; XOPAVX1-NEXT:    retq77;78; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00:79; XOPAVX2:       # %bb.0:80; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]81; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]82; XOPAVX2-NEXT:    retq83  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0>84  ret <32 x i8> %shuffle85}86 87define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00(<32 x i8> %a, <32 x i8> %b) {88; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00:89; AVX1:       # %bb.0:90; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm191; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm192; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0]93; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm094; AVX1-NEXT:    retq95;96; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00:97; AVX2:       # %bb.0:98; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0]99; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]100; AVX2-NEXT:    retq101;102; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00:103; AVX512VLBW:       # %bb.0:104; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0]105; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]106; AVX512VLBW-NEXT:    retq107;108; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00:109; AVX512VLVBMI:       # %bb.0:110; AVX512VLVBMI-NEXT:    vpmovsxwd {{.*#+}} ymm1 = [0,0,0,0,0,0,0,512]111; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0112; AVX512VLVBMI-NEXT:    retq113;114; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00:115; XOPAVX1:       # %bb.0:116; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1117; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1118; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0]119; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0120; XOPAVX1-NEXT:    retq121;122; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00:123; XOPAVX2:       # %bb.0:124; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0]125; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]126; XOPAVX2-NEXT:    retq127  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0>128  ret <32 x i8> %shuffle129}130 131define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_03_00_00_00(<32 x i8> %a, <32 x i8> %b) {132; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_03_00_00_00:133; AVX1:       # %bb.0:134; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1135; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1136; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0]137; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0138; AVX1-NEXT:    retq139;140; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_03_00_00_00:141; AVX2:       # %bb.0:142; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0]143; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]144; AVX2-NEXT:    retq145;146; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_03_00_00_00:147; AVX512VLBW:       # %bb.0:148; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0]149; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]150; AVX512VLBW-NEXT:    retq151;152; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_03_00_00_00:153; AVX512VLVBMI:       # %bb.0:154; AVX512VLVBMI-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [0,0,0,0,0,0,0,3]155; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0156; AVX512VLVBMI-NEXT:    retq157;158; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_03_00_00_00:159; XOPAVX1:       # %bb.0:160; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1161; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1162; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0]163; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0164; XOPAVX1-NEXT:    retq165;166; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_03_00_00_00:167; XOPAVX2:       # %bb.0:168; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0]169; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]170; XOPAVX2-NEXT:    retq171  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0>172  ret <32 x i8> %shuffle173}174 175define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_04_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {176; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_04_00_00_00_00:177; AVX1:       # %bb.0:178; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1179; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1180; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0]181; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0182; AVX1-NEXT:    retq183;184; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_04_00_00_00_00:185; AVX2:       # %bb.0:186; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0]187; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]188; AVX2-NEXT:    retq189;190; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_04_00_00_00_00:191; AVX512VLBW:       # %bb.0:192; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0]193; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]194; AVX512VLBW-NEXT:    retq195;196; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_04_00_00_00_00:197; AVX512VLVBMI:       # %bb.0:198; AVX512VLVBMI-NEXT:    vpmovsxdq {{.*#+}} ymm1 = [0,0,0,67108864]199; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0200; AVX512VLVBMI-NEXT:    retq201;202; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_04_00_00_00_00:203; XOPAVX1:       # %bb.0:204; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1205; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1206; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0]207; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0208; XOPAVX1-NEXT:    retq209;210; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_04_00_00_00_00:211; XOPAVX2:       # %bb.0:212; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0]213; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]214; XOPAVX2-NEXT:    retq215  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0>216  ret <32 x i8> %shuffle217}218 219define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_05_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {220; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_05_00_00_00_00_00:221; AVX1:       # %bb.0:222; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1223; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1224; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0]225; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0226; AVX1-NEXT:    retq227;228; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_05_00_00_00_00_00:229; AVX2:       # %bb.0:230; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0]231; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]232; AVX2-NEXT:    retq233;234; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_05_00_00_00_00_00:235; AVX512VLBW:       # %bb.0:236; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0]237; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]238; AVX512VLBW-NEXT:    retq239;240; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_05_00_00_00_00_00:241; AVX512VLVBMI:       # %bb.0:242; AVX512VLVBMI-NEXT:    vpmovsxbw {{.*#+}} ymm1 = [0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0]243; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0244; AVX512VLVBMI-NEXT:    retq245;246; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_05_00_00_00_00_00:247; XOPAVX1:       # %bb.0:248; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1249; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1250; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0]251; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0252; XOPAVX1-NEXT:    retq253;254; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_05_00_00_00_00_00:255; XOPAVX2:       # %bb.0:256; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0]257; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]258; XOPAVX2-NEXT:    retq259  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0>260  ret <32 x i8> %shuffle261}262 263define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_06_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {264; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_06_00_00_00_00_00_00:265; AVX1:       # %bb.0:266; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1267; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1268; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0]269; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0270; AVX1-NEXT:    retq271;272; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_06_00_00_00_00_00_00:273; AVX2:       # %bb.0:274; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0]275; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]276; AVX2-NEXT:    retq277;278; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_06_00_00_00_00_00_00:279; AVX512VLBW:       # %bb.0:280; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0]281; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]282; AVX512VLBW-NEXT:    retq283;284; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_06_00_00_00_00_00_00:285; AVX512VLVBMI:       # %bb.0:286; AVX512VLVBMI-NEXT:    vpmovsxwq {{.*#+}} ymm1 = [0,0,0,1536]287; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0288; AVX512VLVBMI-NEXT:    retq289;290; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_06_00_00_00_00_00_00:291; XOPAVX1:       # %bb.0:292; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1293; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1294; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0]295; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0296; XOPAVX1-NEXT:    retq297;298; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_06_00_00_00_00_00_00:299; XOPAVX2:       # %bb.0:300; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0]301; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]302; XOPAVX2-NEXT:    retq303  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>304  ret <32 x i8> %shuffle305}306 307define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {308; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:309; AVX1:       # %bb.0:310; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1311; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1312; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0]313; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0314; AVX1-NEXT:    retq315;316; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:317; AVX2:       # %bb.0:318; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0]319; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]320; AVX2-NEXT:    retq321;322; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:323; AVX512VLBW:       # %bb.0:324; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0]325; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]326; AVX512VLBW-NEXT:    retq327;328; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:329; AVX512VLVBMI:       # %bb.0:330; AVX512VLVBMI-NEXT:    vpmovsxbq {{.*#+}} ymm1 = [0,0,0,7]331; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0332; AVX512VLVBMI-NEXT:    retq333;334; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:335; XOPAVX1:       # %bb.0:336; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1337; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1338; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0]339; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0340; XOPAVX1-NEXT:    retq341;342; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:343; XOPAVX2:       # %bb.0:344; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0]345; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]346; XOPAVX2-NEXT:    retq347  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>348  ret <32 x i8> %shuffle349}350 351define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {352; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00:353; AVX1:       # %bb.0:354; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1355; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1356; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0]357; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0358; AVX1-NEXT:    retq359;360; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00:361; AVX2:       # %bb.0:362; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8]363; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]364; AVX2-NEXT:    retq365;366; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00:367; AVX512VLBW:       # %bb.0:368; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8]369; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]370; AVX512VLBW-NEXT:    retq371;372; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00:373; AVX512VLVBMI:       # %bb.0:374; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm1 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0]375; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0376; AVX512VLVBMI-NEXT:    retq377;378; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00:379; XOPAVX1:       # %bb.0:380; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1381; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1382; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0]383; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0384; XOPAVX1-NEXT:    retq385;386; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00:387; XOPAVX2:       # %bb.0:388; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8]389; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]390; XOPAVX2-NEXT:    retq391  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>392  ret <32 x i8> %shuffle393}394 395define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_09_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {396; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_09_00_00_00_00_00_00_00_00_00:397; AVX1:       # %bb.0:398; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1399; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1400; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0]401; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0402; AVX1-NEXT:    retq403;404; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_09_00_00_00_00_00_00_00_00_00:405; AVX2:       # %bb.0:406; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0]407; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]408; AVX2-NEXT:    retq409;410; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_09_00_00_00_00_00_00_00_00_00:411; AVX512VLBW:       # %bb.0:412; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0]413; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]414; AVX512VLBW-NEXT:    retq415;416; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_09_00_00_00_00_00_00_00_00_00:417; AVX512VLVBMI:       # %bb.0:418; AVX512VLVBMI-NEXT:    vpmovsxbw {{.*#+}} ymm1 = [0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0]419; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0420; AVX512VLVBMI-NEXT:    retq421;422; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_09_00_00_00_00_00_00_00_00_00:423; XOPAVX1:       # %bb.0:424; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1425; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1426; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0]427; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0428; XOPAVX1-NEXT:    retq429;430; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_09_00_00_00_00_00_00_00_00_00:431; XOPAVX2:       # %bb.0:432; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0]433; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]434; XOPAVX2-NEXT:    retq435  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 9, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>436  ret <32 x i8> %shuffle437}438 439define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_10_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {440; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_10_00_00_00_00_00_00_00_00_00_00:441; AVX1:       # %bb.0:442; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1443; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1444; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0]445; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0446; AVX1-NEXT:    retq447;448; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_10_00_00_00_00_00_00_00_00_00_00:449; AVX2:       # %bb.0:450; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0]451; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]452; AVX2-NEXT:    retq453;454; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_10_00_00_00_00_00_00_00_00_00_00:455; AVX512VLBW:       # %bb.0:456; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0]457; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]458; AVX512VLBW-NEXT:    retq459;460; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_10_00_00_00_00_00_00_00_00_00_00:461; AVX512VLVBMI:       # %bb.0:462; AVX512VLVBMI-NEXT:    vpmovsxwd {{.*#+}} ymm1 = [0,0,0,0,0,2560,0,0]463; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0464; AVX512VLVBMI-NEXT:    retq465;466; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_10_00_00_00_00_00_00_00_00_00_00:467; XOPAVX1:       # %bb.0:468; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1469; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1470; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0]471; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0472; XOPAVX1-NEXT:    retq473;474; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_10_00_00_00_00_00_00_00_00_00_00:475; XOPAVX2:       # %bb.0:476; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0]477; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]478; XOPAVX2-NEXT:    retq479  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 10, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>480  ret <32 x i8> %shuffle481}482 483define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_11_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {484; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_11_00_00_00_00_00_00_00_00_00_00_00:485; AVX1:       # %bb.0:486; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1487; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1488; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0]489; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0490; AVX1-NEXT:    retq491;492; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_11_00_00_00_00_00_00_00_00_00_00_00:493; AVX2:       # %bb.0:494; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0]495; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]496; AVX2-NEXT:    retq497;498; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_11_00_00_00_00_00_00_00_00_00_00_00:499; AVX512VLBW:       # %bb.0:500; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0]501; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]502; AVX512VLBW-NEXT:    retq503;504; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_11_00_00_00_00_00_00_00_00_00_00_00:505; AVX512VLVBMI:       # %bb.0:506; AVX512VLVBMI-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [0,0,0,0,0,11,0,0]507; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0508; AVX512VLVBMI-NEXT:    retq509;510; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_11_00_00_00_00_00_00_00_00_00_00_00:511; XOPAVX1:       # %bb.0:512; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1513; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1514; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0]515; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0516; XOPAVX1-NEXT:    retq517;518; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_11_00_00_00_00_00_00_00_00_00_00_00:519; XOPAVX2:       # %bb.0:520; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0]521; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]522; XOPAVX2-NEXT:    retq523  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 0, i32 0, i32 0, i32 0, i32 11, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>524  ret <32 x i8> %shuffle525}526 527define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_12_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {528; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_12_00_00_00_00_00_00_00_00_00_00_00_00:529; AVX1:       # %bb.0:530; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1531; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1532; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0]533; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0534; AVX1-NEXT:    retq535;536; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_12_00_00_00_00_00_00_00_00_00_00_00_00:537; AVX2:       # %bb.0:538; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0]539; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]540; AVX2-NEXT:    retq541;542; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_12_00_00_00_00_00_00_00_00_00_00_00_00:543; AVX512VLBW:       # %bb.0:544; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0]545; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]546; AVX512VLBW-NEXT:    retq547;548; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_12_00_00_00_00_00_00_00_00_00_00_00_00:549; AVX512VLVBMI:       # %bb.0:550; AVX512VLVBMI-NEXT:    vpmovsxdq {{.*#+}} ymm1 = [0,0,201326592,0]551; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0552; AVX512VLVBMI-NEXT:    retq553;554; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_12_00_00_00_00_00_00_00_00_00_00_00_00:555; XOPAVX1:       # %bb.0:556; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1557; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1558; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0]559; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0560; XOPAVX1-NEXT:    retq561;562; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_12_00_00_00_00_00_00_00_00_00_00_00_00:563; XOPAVX2:       # %bb.0:564; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0]565; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]566; XOPAVX2-NEXT:    retq567  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 0, i32 0, i32 0, i32 12, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>568  ret <32 x i8> %shuffle569}570 571define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_13_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {572; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_13_00_00_00_00_00_00_00_00_00_00_00_00_00:573; AVX1:       # %bb.0:574; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1575; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1576; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0]577; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0578; AVX1-NEXT:    retq579;580; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_13_00_00_00_00_00_00_00_00_00_00_00_00_00:581; AVX2:       # %bb.0:582; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0]583; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]584; AVX2-NEXT:    retq585;586; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_13_00_00_00_00_00_00_00_00_00_00_00_00_00:587; AVX512VLBW:       # %bb.0:588; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0]589; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]590; AVX512VLBW-NEXT:    retq591;592; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_13_00_00_00_00_00_00_00_00_00_00_00_00_00:593; AVX512VLVBMI:       # %bb.0:594; AVX512VLVBMI-NEXT:    vpmovsxbw {{.*#+}} ymm1 = [0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0]595; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0596; AVX512VLVBMI-NEXT:    retq597;598; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_13_00_00_00_00_00_00_00_00_00_00_00_00_00:599; XOPAVX1:       # %bb.0:600; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1601; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1602; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0]603; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0604; XOPAVX1-NEXT:    retq605;606; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_13_00_00_00_00_00_00_00_00_00_00_00_00_00:607; XOPAVX2:       # %bb.0:608; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0]609; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]610; XOPAVX2-NEXT:    retq611  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 0, i32 0, i32 13, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>612  ret <32 x i8> %shuffle613}614 615define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {616; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00:617; AVX1:       # %bb.0:618; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1619; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1620; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0]621; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0622; AVX1-NEXT:    retq623;624; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00:625; AVX2:       # %bb.0:626; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0]627; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]628; AVX2-NEXT:    retq629;630; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00:631; AVX512VLBW:       # %bb.0:632; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0]633; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]634; AVX512VLBW-NEXT:    retq635;636; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00:637; AVX512VLVBMI:       # %bb.0:638; AVX512VLVBMI-NEXT:    vpmovsxwq {{.*#+}} ymm1 = [0,0,3584,0]639; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0640; AVX512VLVBMI-NEXT:    retq641;642; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00:643; XOPAVX1:       # %bb.0:644; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1645; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1646; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0]647; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0648; XOPAVX1-NEXT:    retq649;650; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00:651; XOPAVX2:       # %bb.0:652; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0]653; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]654; XOPAVX2-NEXT:    retq655  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 0, i32 14, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>656  ret <32 x i8> %shuffle657}658 659define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {660; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:661; AVX1:       # %bb.0:662; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1663; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1664; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]665; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0666; AVX1-NEXT:    retq667;668; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:669; AVX2:       # %bb.0:670; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0]671; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]672; AVX2-NEXT:    retq673;674; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:675; AVX512VLBW:       # %bb.0:676; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0]677; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]678; AVX512VLBW-NEXT:    retq679;680; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:681; AVX512VLVBMI:       # %bb.0:682; AVX512VLVBMI-NEXT:    vpmovsxbq {{.*#+}} ymm1 = [0,0,15,0]683; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0684; AVX512VLVBMI-NEXT:    retq685;686; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:687; XOPAVX1:       # %bb.0:688; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1689; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1690; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]691; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0692; XOPAVX1-NEXT:    retq693;694; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:695; XOPAVX2:       # %bb.0:696; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0]697; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,0]698; XOPAVX2-NEXT:    retq699  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>700  ret <32 x i8> %shuffle701}702 703define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {704; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:705; AVX1:       # %bb.0:706; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1707; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1708; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2709; AVX1-NEXT:    vpunpcklbw {{.*#+}} 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]710; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]711; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0712; AVX1-NEXT:    retq713;714; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:715; AVX2:       # %bb.0:716; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]717; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]718; AVX2-NEXT:    retq719;720; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:721; AVX512VLBW:       # %bb.0:722; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]723; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]724; AVX512VLBW-NEXT:    retq725;726; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:727; AVX512VLVBMI:       # %bb.0:728; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} xmm1 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]729; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0730; AVX512VLVBMI-NEXT:    retq731;732; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:733; XOPAVX1:       # %bb.0:734; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1735; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1736; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2737; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],xmm2[0]738; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0739; XOPAVX1-NEXT:    retq740;741; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:742; XOPAVX2:       # %bb.0:743; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]744; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]745; XOPAVX2-NEXT:    retq746  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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 16, 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>747  ret <32 x i8> %shuffle748}749 750define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_17_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {751; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_17_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:752; AVX1:       # %bb.0:753; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1754; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1755; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2756; AVX1-NEXT:    vpunpcklbw {{.*#+}} 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]757; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0]758; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0759; AVX1-NEXT:    retq760;761; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_17_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:762; AVX2:       # %bb.0:763; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]764; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]765; AVX2-NEXT:    retq766;767; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_17_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:768; AVX512VLBW:       # %bb.0:769; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]770; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]771; AVX512VLBW-NEXT:    retq772;773; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_17_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:774; AVX512VLVBMI:       # %bb.0:775; AVX512VLVBMI-NEXT:    vpmovsxbw {{.*#+}} xmm1 = [0,0,0,0,0,0,0,17]776; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0777; AVX512VLVBMI-NEXT:    retq778;779; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_17_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:780; XOPAVX1:       # %bb.0:781; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1782; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1783; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2784; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0],xmm2[1],xmm0[0]785; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0786; XOPAVX1-NEXT:    retq787;788; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_17_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:789; XOPAVX2:       # %bb.0:790; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]791; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]792; XOPAVX2-NEXT:    retq793  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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 17, 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, i32 0>794  ret <32 x i8> %shuffle795}796 797define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_18_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {798; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_18_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:799; AVX1:       # %bb.0:800; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1801; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1802; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2803; AVX1-NEXT:    vpunpcklbw {{.*#+}} 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]804; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0]805; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0806; AVX1-NEXT:    retq807;808; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_18_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:809; AVX2:       # %bb.0:810; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]811; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]812; AVX2-NEXT:    retq813;814; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_18_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:815; AVX512VLBW:       # %bb.0:816; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]817; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]818; AVX512VLBW-NEXT:    retq819;820; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_18_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:821; AVX512VLVBMI:       # %bb.0:822; AVX512VLVBMI-NEXT:    vpmovsxwd {{.*#+}} xmm1 = [0,0,0,4608]823; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0824; AVX512VLVBMI-NEXT:    retq825;826; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_18_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:827; XOPAVX1:       # %bb.0:828; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1829; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1830; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2831; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0],xmm2[2],xmm0[0,0]832; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0833; XOPAVX1-NEXT:    retq834;835; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_18_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:836; XOPAVX2:       # %bb.0:837; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]838; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]839; XOPAVX2-NEXT:    retq840  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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 18, 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, i32 0, i32 0>841  ret <32 x i8> %shuffle842}843 844define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_19_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {845; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_19_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:846; AVX1:       # %bb.0:847; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1848; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1849; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2850; AVX1-NEXT:    vpunpcklbw {{.*#+}} 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]851; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0]852; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0853; AVX1-NEXT:    retq854;855; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_19_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:856; AVX2:       # %bb.0:857; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]858; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]859; AVX2-NEXT:    retq860;861; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_19_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:862; AVX512VLBW:       # %bb.0:863; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]864; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]865; AVX512VLBW-NEXT:    retq866;867; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_19_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:868; AVX512VLVBMI:       # %bb.0:869; AVX512VLVBMI-NEXT:    vpmovsxbd {{.*#+}} xmm1 = [0,0,0,19]870; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0871; AVX512VLVBMI-NEXT:    retq872;873; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_19_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:874; XOPAVX1:       # %bb.0:875; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1876; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1877; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2878; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0],xmm2[3],xmm0[0,0,0]879; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0880; XOPAVX1-NEXT:    retq881;882; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_19_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:883; XOPAVX2:       # %bb.0:884; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]885; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]886; XOPAVX2-NEXT:    retq887  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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 19, 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, i32 0, i32 0, i32 0>888  ret <32 x i8> %shuffle889}890 891define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_20_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {892; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_20_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:893; AVX1:       # %bb.0:894; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1895; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1896; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2897; AVX1-NEXT:    vpunpcklbw {{.*#+}} 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]898; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0]899; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0900; AVX1-NEXT:    retq901;902; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_20_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:903; AVX2:       # %bb.0:904; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]905; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]906; AVX2-NEXT:    retq907;908; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_20_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:909; AVX512VLBW:       # %bb.0:910; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]911; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]912; AVX512VLBW-NEXT:    retq913;914; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_20_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:915; AVX512VLVBMI:       # %bb.0:916; AVX512VLVBMI-NEXT:    vpmovsxdq {{.*#+}} xmm1 = [0,335544320]917; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0918; AVX512VLVBMI-NEXT:    retq919;920; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_20_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:921; XOPAVX1:       # %bb.0:922; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1923; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1924; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2925; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0],xmm2[4],xmm0[0,0,0,0]926; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0927; XOPAVX1-NEXT:    retq928;929; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_20_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:930; XOPAVX2:       # %bb.0:931; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]932; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]933; XOPAVX2-NEXT:    retq934  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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 20, 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, i32 0, i32 0, i32 0, i32 0>935  ret <32 x i8> %shuffle936}937 938define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_21_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {939; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_21_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:940; AVX1:       # %bb.0:941; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1942; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1943; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2944; AVX1-NEXT:    vpunpcklbw {{.*#+}} 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]945; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0]946; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0947; AVX1-NEXT:    retq948;949; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_21_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:950; AVX2:       # %bb.0:951; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]952; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]953; AVX2-NEXT:    retq954;955; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_21_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:956; AVX512VLBW:       # %bb.0:957; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]958; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]959; AVX512VLBW-NEXT:    retq960;961; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_21_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:962; AVX512VLVBMI:       # %bb.0:963; AVX512VLVBMI-NEXT:    vpmovsxbw {{.*#+}} xmm1 = [0,0,0,0,0,21,0,0]964; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm0965; AVX512VLVBMI-NEXT:    retq966;967; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_21_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:968; XOPAVX1:       # %bb.0:969; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1970; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1971; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2972; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0],xmm2[5],xmm0[0,0,0,0,0]973; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0974; XOPAVX1-NEXT:    retq975;976; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_21_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:977; XOPAVX2:       # %bb.0:978; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]979; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]980; XOPAVX2-NEXT:    retq981  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 21, 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, i32 0, i32 0, i32 0, i32 0, i32 0>982  ret <32 x i8> %shuffle983}984 985define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_22_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {986; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_22_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:987; AVX1:       # %bb.0:988; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1989; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm1990; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2991; AVX1-NEXT:    vpunpcklbw {{.*#+}} 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]992; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0]993; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0994; AVX1-NEXT:    retq995;996; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_22_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:997; AVX2:       # %bb.0:998; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]999; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1000; AVX2-NEXT:    retq1001;1002; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_22_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1003; AVX512VLBW:       # %bb.0:1004; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]1005; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1006; AVX512VLBW-NEXT:    retq1007;1008; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_22_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1009; AVX512VLVBMI:       # %bb.0:1010; AVX512VLVBMI-NEXT:    vpmovsxwq {{.*#+}} xmm1 = [0,5632]1011; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01012; AVX512VLVBMI-NEXT:    retq1013;1014; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_22_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1015; XOPAVX1:       # %bb.0:1016; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11017; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11018; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21019; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0],xmm2[6],xmm0[0,0,0,0,0,0]1020; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01021; XOPAVX1-NEXT:    retq1022;1023; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_22_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1024; XOPAVX2:       # %bb.0:1025; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]1026; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1027; XOPAVX2-NEXT:    retq1028  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 22, 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1029  ret <32 x i8> %shuffle1030}1031 1032define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_23_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {1033; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_23_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1034; AVX1:       # %bb.0:1035; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11036; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11037; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21038; AVX1-NEXT:    vpunpcklbw {{.*#+}} 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]1039; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0]1040; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01041; AVX1-NEXT:    retq1042;1043; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_23_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1044; AVX2:       # %bb.0:1045; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]1046; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1047; AVX2-NEXT:    retq1048;1049; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_23_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1050; AVX512VLBW:       # %bb.0:1051; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]1052; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1053; AVX512VLBW-NEXT:    retq1054;1055; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_23_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1056; AVX512VLVBMI:       # %bb.0:1057; AVX512VLVBMI-NEXT:    vpmovsxbq {{.*#+}} xmm1 = [0,23]1058; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01059; AVX512VLVBMI-NEXT:    retq1060;1061; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_23_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1062; XOPAVX1:       # %bb.0:1063; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11064; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11065; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21066; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0],xmm2[7],xmm0[0,0,0,0,0,0,0]1067; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01068; XOPAVX1-NEXT:    retq1069;1070; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_23_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1071; XOPAVX2:       # %bb.0:1072; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,0,3]1073; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1074; XOPAVX2-NEXT:    retq1075  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 23, 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1076  ret <32 x i8> %shuffle1077}1078 1079define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_24_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {1080; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_24_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1081; AVX1:       # %bb.0:1082; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11083; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11084; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21085; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm2[8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4,5,6,7]1086; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,8,8,8,8,8,8,0,8,8,8,8,8,8,8,8]1087; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01088; AVX1-NEXT:    retq1089;1090; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_24_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1091; AVX2:       # %bb.0:1092; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1093; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1094; AVX2-NEXT:    retq1095;1096; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_24_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1097; AVX512VLBW:       # %bb.0:1098; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1099; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1100; AVX512VLBW-NEXT:    retq1101;1102; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_24_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1103; AVX512VLVBMI:       # %bb.0:1104; AVX512VLVBMI-NEXT:    vmovq {{.*#+}} xmm1 = [0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0]1105; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01106; AVX512VLVBMI-NEXT:    retq1107;1108; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_24_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1109; XOPAVX1:       # %bb.0:1110; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11111; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11112; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21113; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0],xmm2[8],xmm0[0,0,0,0,0,0,0,0]1114; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01115; XOPAVX1-NEXT:    retq1116;1117; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_24_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1118; XOPAVX2:       # %bb.0:1119; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1120; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1121; XOPAVX2-NEXT:    retq1122  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 24, 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1123  ret <32 x i8> %shuffle1124}1125 1126define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_25_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {1127; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_25_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1128; AVX1:       # %bb.0:1129; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11130; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11131; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21132; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm2[9,10,11,12,13,14,15],xmm0[0,1,2,3,4,5,6,7,8]1133; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,7]1134; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01135; AVX1-NEXT:    retq1136;1137; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_25_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1138; AVX2:       # %bb.0:1139; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1140; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1141; AVX2-NEXT:    retq1142;1143; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_25_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1144; AVX512VLBW:       # %bb.0:1145; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1146; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1147; AVX512VLBW-NEXT:    retq1148;1149; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_25_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1150; AVX512VLVBMI:       # %bb.0:1151; AVX512VLVBMI-NEXT:    vmovq {{.*#+}} xmm1 = [0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0]1152; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01153; AVX512VLVBMI-NEXT:    retq1154;1155; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_25_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1156; XOPAVX1:       # %bb.0:1157; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11158; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11159; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21160; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0],xmm2[9],xmm0[0,0,0,0,0,0,0,0,0]1161; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01162; XOPAVX1-NEXT:    retq1163;1164; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_25_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1165; XOPAVX2:       # %bb.0:1166; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1167; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1168; XOPAVX2-NEXT:    retq1169  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 25, 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1170  ret <32 x i8> %shuffle1171}1172 1173define <32 x i8> @shuffle_v32i8_00_00_00_00_00_26_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {1174; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_26_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1175; AVX1:       # %bb.0:1176; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11177; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11178; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21179; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm2[10,11,12,13,14,15],xmm0[0,1,2,3,4,5,6,7,8,9]1180; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,6,6,6,6,0,6,6,6,6,6,6,6,6,6,6]1181; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01182; AVX1-NEXT:    retq1183;1184; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_26_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1185; AVX2:       # %bb.0:1186; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1187; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1188; AVX2-NEXT:    retq1189;1190; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_26_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1191; AVX512VLBW:       # %bb.0:1192; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1193; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1194; AVX512VLBW-NEXT:    retq1195;1196; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_26_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1197; AVX512VLVBMI:       # %bb.0:1198; AVX512VLVBMI-NEXT:    vmovq {{.*#+}} xmm1 = [0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0]1199; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01200; AVX512VLVBMI-NEXT:    retq1201;1202; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_26_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1203; XOPAVX1:       # %bb.0:1204; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11205; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11206; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21207; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,0,0,0,0],xmm2[10],xmm0[0,0,0,0,0,0,0,0,0,0]1208; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01209; XOPAVX1-NEXT:    retq1210;1211; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_26_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1212; XOPAVX2:       # %bb.0:1213; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1214; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1215; XOPAVX2-NEXT:    retq1216  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 26, 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1217  ret <32 x i8> %shuffle1218}1219 1220define <32 x i8> @shuffle_v32i8_00_00_00_00_27_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {1221; AVX1-LABEL: shuffle_v32i8_00_00_00_00_27_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1222; AVX1:       # %bb.0:1223; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11224; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11225; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21226; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm2[11,12,13,14,15],xmm0[0,1,2,3,4,5,6,7,8,9,10]1227; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5]1228; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01229; AVX1-NEXT:    retq1230;1231; AVX2-LABEL: shuffle_v32i8_00_00_00_00_27_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1232; AVX2:       # %bb.0:1233; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1234; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1235; AVX2-NEXT:    retq1236;1237; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_27_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1238; AVX512VLBW:       # %bb.0:1239; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1240; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1241; AVX512VLBW-NEXT:    retq1242;1243; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_27_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1244; AVX512VLVBMI:       # %bb.0:1245; AVX512VLVBMI-NEXT:    vpmovsxbd {{.*#+}} xmm1 = [0,27,0,0]1246; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01247; AVX512VLVBMI-NEXT:    retq1248;1249; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_27_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1250; XOPAVX1:       # %bb.0:1251; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11252; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11253; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21254; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,0,0,0],xmm2[11],xmm0[0,0,0,0,0,0,0,0,0,0,0]1255; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01256; XOPAVX1-NEXT:    retq1257;1258; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_27_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1259; XOPAVX2:       # %bb.0:1260; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1261; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1262; XOPAVX2-NEXT:    retq1263  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 27, 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1264  ret <32 x i8> %shuffle1265}1266 1267define <32 x i8> @shuffle_v32i8_00_00_00_28_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {1268; AVX1-LABEL: shuffle_v32i8_00_00_00_28_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1269; AVX1:       # %bb.0:1270; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11271; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11272; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21273; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm2[12,13,14,15],xmm0[0,1,2,3,4,5,6,7,8,9,10,11]1274; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[4,4,4,0,4,4,4,4,4,4,4,4,4,4,4,4]1275; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01276; AVX1-NEXT:    retq1277;1278; AVX2-LABEL: shuffle_v32i8_00_00_00_28_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1279; AVX2:       # %bb.0:1280; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1281; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1282; AVX2-NEXT:    retq1283;1284; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_28_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1285; AVX512VLBW:       # %bb.0:1286; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1287; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1288; AVX512VLBW-NEXT:    retq1289;1290; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_28_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1291; AVX512VLVBMI:       # %bb.0:1292; AVX512VLVBMI-NEXT:    vmovd {{.*#+}} xmm1 = [0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0]1293; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01294; AVX512VLVBMI-NEXT:    retq1295;1296; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_28_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1297; XOPAVX1:       # %bb.0:1298; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11299; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11300; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21301; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,0,0],xmm2[12],xmm0[0,0,0,0,0,0,0,0,0,0,0,0]1302; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01303; XOPAVX1-NEXT:    retq1304;1305; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_28_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1306; XOPAVX2:       # %bb.0:1307; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1308; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1309; XOPAVX2-NEXT:    retq1310  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 28, 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, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1311  ret <32 x i8> %shuffle1312}1313 1314define <32 x i8> @shuffle_v32i8_00_00_29_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {1315; AVX1-LABEL: shuffle_v32i8_00_00_29_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1316; AVX1:       # %bb.0:1317; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11318; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11319; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21320; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm2[13,14,15],xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12]1321; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,3,0,3,3,3,3,3,3,3,3,3,3,3,3,3]1322; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01323; AVX1-NEXT:    retq1324;1325; AVX2-LABEL: shuffle_v32i8_00_00_29_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1326; AVX2:       # %bb.0:1327; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1328; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1329; AVX2-NEXT:    retq1330;1331; AVX512VLBW-LABEL: shuffle_v32i8_00_00_29_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1332; AVX512VLBW:       # %bb.0:1333; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1334; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1335; AVX512VLBW-NEXT:    retq1336;1337; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_29_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1338; AVX512VLVBMI:       # %bb.0:1339; AVX512VLVBMI-NEXT:    vmovd {{.*#+}} xmm1 = [0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0]1340; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01341; AVX512VLVBMI-NEXT:    retq1342;1343; XOPAVX1-LABEL: shuffle_v32i8_00_00_29_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1344; XOPAVX1:       # %bb.0:1345; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11346; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11347; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21348; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,0],xmm2[13],xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0]1349; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01350; XOPAVX1-NEXT:    retq1351;1352; XOPAVX2-LABEL: shuffle_v32i8_00_00_29_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1353; XOPAVX2:       # %bb.0:1354; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1355; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1356; XOPAVX2-NEXT:    retq1357  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 29, 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, 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>1358  ret <32 x i8> %shuffle1359}1360 1361define <32 x i8> @shuffle_v32i8_00_30_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {1362; AVX1-LABEL: shuffle_v32i8_00_30_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1363; AVX1:       # %bb.0:1364; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11365; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11366; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21367; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm2[14,15],xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]1368; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2]1369; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01370; AVX1-NEXT:    retq1371;1372; AVX2-LABEL: shuffle_v32i8_00_30_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1373; AVX2:       # %bb.0:1374; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1375; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1376; AVX2-NEXT:    retq1377;1378; AVX512VLBW-LABEL: shuffle_v32i8_00_30_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1379; AVX512VLBW:       # %bb.0:1380; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1381; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1382; AVX512VLBW-NEXT:    retq1383;1384; AVX512VLVBMI-LABEL: shuffle_v32i8_00_30_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1385; AVX512VLVBMI:       # %bb.0:1386; AVX512VLVBMI-NEXT:    vmovd {{.*#+}} xmm1 = [0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0]1387; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01388; AVX512VLVBMI-NEXT:    retq1389;1390; XOPAVX1-LABEL: shuffle_v32i8_00_30_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1391; XOPAVX1:       # %bb.0:1392; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11393; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11394; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21395; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0],xmm2[14],xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0]1396; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01397; XOPAVX1-NEXT:    retq1398;1399; XOPAVX2-LABEL: shuffle_v32i8_00_30_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1400; XOPAVX2:       # %bb.0:1401; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,0,3]1402; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1403; XOPAVX2-NEXT:    retq1404  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 30, 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, 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>1405  ret <32 x i8> %shuffle1406}1407 1408define <32 x i8> @shuffle_v32i8_31_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {1409; AVX1-LABEL: shuffle_v32i8_31_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1410; AVX1:       # %bb.0:1411; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11412; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11413; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21414; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm2[15],xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]1415; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]1416; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01417; AVX1-NEXT:    retq1418;1419; AVX2-LABEL: shuffle_v32i8_31_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1420; AVX2:       # %bb.0:1421; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[3,0,0,3]1422; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1423; AVX2-NEXT:    retq1424;1425; AVX512VLBW-LABEL: shuffle_v32i8_31_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1426; AVX512VLBW:       # %bb.0:1427; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[3,0,0,3]1428; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1429; AVX512VLBW-NEXT:    retq1430;1431; AVX512VLVBMI-LABEL: shuffle_v32i8_31_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1432; AVX512VLVBMI:       # %bb.0:1433; AVX512VLVBMI-NEXT:    vpmovsxbq {{.*#+}} xmm1 = [31,0]1434; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01435; AVX512VLVBMI-NEXT:    retq1436;1437; XOPAVX1-LABEL: shuffle_v32i8_31_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1438; XOPAVX1:       # %bb.0:1439; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm11440; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm11441; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21442; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm2[15],xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]1443; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01444; XOPAVX1-NEXT:    retq1445;1446; XOPAVX2-LABEL: shuffle_v32i8_31_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1447; XOPAVX2:       # %bb.0:1448; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[3,0,0,3]1449; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]1450; XOPAVX2-NEXT:    retq1451  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 31, 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, 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>1452  ret <32 x i8> %shuffle1453}1454 1455define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16(<32 x i8> %a, <32 x i8> %b) {1456; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:1457; AVX1:       # %bb.0:1458; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11459; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm21460; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11461; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01462; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01463; AVX1-NEXT:    retq1464;1465; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:1466; AVX2OR512VL:       # %bb.0:1467; AVX2OR512VL-NEXT:    vpxor %xmm1, %xmm1, %xmm11468; AVX2OR512VL-NEXT:    vpshufb %ymm1, %ymm0, %ymm01469; AVX2OR512VL-NEXT:    retq1470;1471; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:1472; XOPAVX1:       # %bb.0:1473; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11474; XOPAVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm21475; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11476; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01477; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01478; XOPAVX1-NEXT:    retq1479;1480; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:1481; XOPAVX2:       # %bb.0:1482; XOPAVX2-NEXT:    vpxor %xmm1, %xmm1, %xmm11483; XOPAVX2-NEXT:    vpshufb %ymm1, %ymm0, %ymm01484; XOPAVX2-NEXT:    retq1485  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>1486  ret <32 x i8> %shuffle1487}1488 1489define <32 x i8> @shuffle_v32i8_15_15_15_15_15_15_15_15_15_15_15_15_15_15_15_15_31_31_31_31_31_31_31_31_31_31_31_31_31_31_31_31(<32 x i8> %a, <32 x i8> %b) {1490; AVX1-LABEL: shuffle_v32i8_15_15_15_15_15_15_15_15_15_15_15_15_15_15_15_15_31_31_31_31_31_31_31_31_31_31_31_31_31_31_31_31:1491; AVX1:       # %bb.0:1492; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11493; AVX1-NEXT:    vbroadcastss {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1494; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11495; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01496; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01497; AVX1-NEXT:    retq1498;1499; AVX2OR512VL-LABEL: shuffle_v32i8_15_15_15_15_15_15_15_15_15_15_15_15_15_15_15_15_31_31_31_31_31_31_31_31_31_31_31_31_31_31_31_31:1500; AVX2OR512VL:       # %bb.0:1501; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31]1502; AVX2OR512VL-NEXT:    retq1503;1504; XOPAVX1-LABEL: shuffle_v32i8_15_15_15_15_15_15_15_15_15_15_15_15_15_15_15_15_31_31_31_31_31_31_31_31_31_31_31_31_31_31_31_31:1505; XOPAVX1:       # %bb.0:1506; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11507; XOPAVX1-NEXT:    vbroadcastss {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1508; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11509; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01510; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01511; XOPAVX1-NEXT:    retq1512;1513; XOPAVX2-LABEL: shuffle_v32i8_15_15_15_15_15_15_15_15_15_15_15_15_15_15_15_15_31_31_31_31_31_31_31_31_31_31_31_31_31_31_31_31:1514; XOPAVX2:       # %bb.0:1515; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31]1516; XOPAVX2-NEXT:    retq1517  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>1518  ret <32 x i8> %shuffle1519}1520 1521define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24(<32 x i8> %a, <32 x i8> %b) {1522; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24:1523; AVX1:       # %bb.0:1524; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11525; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8]1526; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11527; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01528; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01529; AVX1-NEXT:    retq1530;1531; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24:1532; AVX2OR512VL:       # %bb.0:1533; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]1534; AVX2OR512VL-NEXT:    retq1535;1536; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24:1537; XOPAVX1:       # %bb.0:1538; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11539; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8]1540; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11541; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01542; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01543; XOPAVX1-NEXT:    retq1544;1545; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24:1546; XOPAVX2:       # %bb.0:1547; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]1548; XOPAVX2-NEXT:    retq1549  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24>1550  ret <32 x i8> %shuffle1551}1552 1553define <32 x i8> @shuffle_v32i8_07_07_07_07_07_07_07_07_15_15_15_15_15_15_15_15_23_23_23_23_23_23_23_23_31_31_31_31_31_31_31_31(<32 x i8> %a, <32 x i8> %b) {1554; AVX1-LABEL: shuffle_v32i8_07_07_07_07_07_07_07_07_15_15_15_15_15_15_15_15_23_23_23_23_23_23_23_23_31_31_31_31_31_31_31_31:1555; AVX1:       # %bb.0:1556; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11557; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [7,7,7,7,7,7,7,7,15,15,15,15,15,15,15,15]1558; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11559; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01560; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01561; AVX1-NEXT:    retq1562;1563; AVX2OR512VL-LABEL: shuffle_v32i8_07_07_07_07_07_07_07_07_15_15_15_15_15_15_15_15_23_23_23_23_23_23_23_23_31_31_31_31_31_31_31_31:1564; AVX2OR512VL:       # %bb.0:1565; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[7,7,7,7,7,7,7,7,15,15,15,15,15,15,15,15,23,23,23,23,23,23,23,23,31,31,31,31,31,31,31,31]1566; AVX2OR512VL-NEXT:    retq1567;1568; XOPAVX1-LABEL: shuffle_v32i8_07_07_07_07_07_07_07_07_15_15_15_15_15_15_15_15_23_23_23_23_23_23_23_23_31_31_31_31_31_31_31_31:1569; XOPAVX1:       # %bb.0:1570; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11571; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [7,7,7,7,7,7,7,7,15,15,15,15,15,15,15,15]1572; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11573; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01574; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01575; XOPAVX1-NEXT:    retq1576;1577; XOPAVX2-LABEL: shuffle_v32i8_07_07_07_07_07_07_07_07_15_15_15_15_15_15_15_15_23_23_23_23_23_23_23_23_31_31_31_31_31_31_31_31:1578; XOPAVX2:       # %bb.0:1579; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[7,7,7,7,7,7,7,7,15,15,15,15,15,15,15,15,23,23,23,23,23,23,23,23,31,31,31,31,31,31,31,31]1580; XOPAVX2-NEXT:    retq1581  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>1582  ret <32 x i8> %shuffle1583}1584 1585define <32 x i8> @shuffle_v32i8_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12_16_16_16_16_20_20_20_20_24_24_24_24_28_28_28_28(<32 x i8> %a, <32 x i8> %b) {1586; AVX1-LABEL: shuffle_v32i8_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12_16_16_16_16_20_20_20_20_24_24_24_24_28_28_28_28:1587; AVX1:       # %bb.0:1588; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11589; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12]1590; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11591; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01592; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01593; AVX1-NEXT:    retq1594;1595; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12_16_16_16_16_20_20_20_20_24_24_24_24_28_28_28_28:1596; AVX2OR512VL:       # %bb.0:1597; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12,16,16,16,16,20,20,20,20,24,24,24,24,28,28,28,28]1598; AVX2OR512VL-NEXT:    retq1599;1600; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12_16_16_16_16_20_20_20_20_24_24_24_24_28_28_28_28:1601; XOPAVX1:       # %bb.0:1602; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11603; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12]1604; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11605; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01606; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01607; XOPAVX1-NEXT:    retq1608;1609; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12_16_16_16_16_20_20_20_20_24_24_24_24_28_28_28_28:1610; XOPAVX2:       # %bb.0:1611; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12,16,16,16,16,20,20,20,20,24,24,24,24,28,28,28,28]1612; XOPAVX2-NEXT:    retq1613  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 16, i32 16, i32 16, i32 16, i32 20, i32 20, i32 20, i32 20, i32 24, i32 24, i32 24, i32 24, i32 28, i32 28, i32 28, i32 28>1614  ret <32 x i8> %shuffle1615}1616 1617define <32 x i8> @shuffle_v32i8_03_03_03_03_07_07_07_07_11_11_11_11_15_15_15_15_19_19_19_19_23_23_23_23_27_27_27_27_31_31_31_31(<32 x i8> %a, <32 x i8> %b) {1618; AVX1-LABEL: shuffle_v32i8_03_03_03_03_07_07_07_07_11_11_11_11_15_15_15_15_19_19_19_19_23_23_23_23_27_27_27_27_31_31_31_31:1619; AVX1:       # %bb.0:1620; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11621; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [3,3,3,3,7,7,7,7,11,11,11,11,15,15,15,15]1622; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11623; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01624; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01625; AVX1-NEXT:    retq1626;1627; AVX2OR512VL-LABEL: shuffle_v32i8_03_03_03_03_07_07_07_07_11_11_11_11_15_15_15_15_19_19_19_19_23_23_23_23_27_27_27_27_31_31_31_31:1628; AVX2OR512VL:       # %bb.0:1629; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[3,3,3,3,7,7,7,7,11,11,11,11,15,15,15,15,19,19,19,19,23,23,23,23,27,27,27,27,31,31,31,31]1630; AVX2OR512VL-NEXT:    retq1631;1632; XOPAVX1-LABEL: shuffle_v32i8_03_03_03_03_07_07_07_07_11_11_11_11_15_15_15_15_19_19_19_19_23_23_23_23_27_27_27_27_31_31_31_31:1633; XOPAVX1:       # %bb.0:1634; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11635; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [3,3,3,3,7,7,7,7,11,11,11,11,15,15,15,15]1636; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11637; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01638; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01639; XOPAVX1-NEXT:    retq1640;1641; XOPAVX2-LABEL: shuffle_v32i8_03_03_03_03_07_07_07_07_11_11_11_11_15_15_15_15_19_19_19_19_23_23_23_23_27_27_27_27_31_31_31_31:1642; XOPAVX2:       # %bb.0:1643; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[3,3,3,3,7,7,7,7,11,11,11,11,15,15,15,15,19,19,19,19,23,23,23,23,27,27,27,27,31,31,31,31]1644; XOPAVX2-NEXT:    retq1645  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 3, i32 3, i32 3, i32 3, i32 7, i32 7, i32 7, i32 7, i32 11, i32 11, i32 11, i32 11, i32 15, i32 15, i32 15, i32 15, i32 19, i32 19, i32 19, i32 19, i32 23, i32 23, i32 23, i32 23, i32 27, i32 27, i32 27, i32 27, i32 31, i32 31, i32 31, i32 31>1646  ret <32 x i8> %shuffle1647}1648 1649define <32 x i8> @shuffle_v32i8_00_00_02_02_04_04_06_06_08_08_10_10_12_12_14_14_16_16_18_18_20_20_22_22_24_24_26_26_28_28_30_30(<32 x i8> %a, <32 x i8> %b) {1650; AVX1-LABEL: shuffle_v32i8_00_00_02_02_04_04_06_06_08_08_10_10_12_12_14_14_16_16_18_18_20_20_22_22_24_24_26_26_28_28_30_30:1651; AVX1:       # %bb.0:1652; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11653; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14]1654; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11655; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01656; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01657; AVX1-NEXT:    retq1658;1659; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_02_02_04_04_06_06_08_08_10_10_12_12_14_14_16_16_18_18_20_20_22_22_24_24_26_26_28_28_30_30:1660; AVX2OR512VL:       # %bb.0:1661; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30]1662; AVX2OR512VL-NEXT:    retq1663;1664; XOPAVX1-LABEL: shuffle_v32i8_00_00_02_02_04_04_06_06_08_08_10_10_12_12_14_14_16_16_18_18_20_20_22_22_24_24_26_26_28_28_30_30:1665; XOPAVX1:       # %bb.0:1666; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11667; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14]1668; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11669; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01670; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01671; XOPAVX1-NEXT:    retq1672;1673; XOPAVX2-LABEL: shuffle_v32i8_00_00_02_02_04_04_06_06_08_08_10_10_12_12_14_14_16_16_18_18_20_20_22_22_24_24_26_26_28_28_30_30:1674; XOPAVX2:       # %bb.0:1675; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30]1676; XOPAVX2-NEXT:    retq1677  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14, i32 16, i32 16, i32 18, i32 18, i32 20, i32 20, i32 22, i32 22, i32 24, i32 24, i32 26, i32 26, i32 28, i32 28, i32 30, i32 30>1678  ret <32 x i8> %shuffle1679}1680 1681define <32 x i8> @shuffle_v32i8_01_01_03_03_05_05_07_07_09_09_11_11_13_13_15_15_17_17_19_19_21_21_23_23_25_25_27_27_29_29_31_31(<32 x i8> %a, <32 x i8> %b) {1682; AVX1-LABEL: shuffle_v32i8_01_01_03_03_05_05_07_07_09_09_11_11_13_13_15_15_17_17_19_19_21_21_23_23_25_25_27_27_29_29_31_31:1683; AVX1:       # %bb.0:1684; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11685; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [1,1,3,3,5,5,7,7,9,9,11,11,13,13,15,15]1686; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11687; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01688; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01689; AVX1-NEXT:    retq1690;1691; AVX2OR512VL-LABEL: shuffle_v32i8_01_01_03_03_05_05_07_07_09_09_11_11_13_13_15_15_17_17_19_19_21_21_23_23_25_25_27_27_29_29_31_31:1692; AVX2OR512VL:       # %bb.0:1693; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[1,1,3,3,5,5,7,7,9,9,11,11,13,13,15,15,17,17,19,19,21,21,23,23,25,25,27,27,29,29,31,31]1694; AVX2OR512VL-NEXT:    retq1695;1696; XOPAVX1-LABEL: shuffle_v32i8_01_01_03_03_05_05_07_07_09_09_11_11_13_13_15_15_17_17_19_19_21_21_23_23_25_25_27_27_29_29_31_31:1697; XOPAVX1:       # %bb.0:1698; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm11699; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [1,1,3,3,5,5,7,7,9,9,11,11,13,13,15,15]1700; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm11701; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm01702; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm01703; XOPAVX1-NEXT:    retq1704;1705; XOPAVX2-LABEL: shuffle_v32i8_01_01_03_03_05_05_07_07_09_09_11_11_13_13_15_15_17_17_19_19_21_21_23_23_25_25_27_27_29_29_31_31:1706; XOPAVX2:       # %bb.0:1707; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[1,1,3,3,5,5,7,7,9,9,11,11,13,13,15,15,17,17,19,19,21,21,23,23,25,25,27,27,29,29,31,31]1708; XOPAVX2-NEXT:    retq1709  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15, i32 17, i32 17, i32 19, i32 19, i32 21, i32 21, i32 23, i32 23, i32 25, i32 25, i32 27, i32 27, i32 29, i32 29, i32 31, i32 31>1710  ret <32 x i8> %shuffle1711}1712 1713define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00(<32 x i8> %a, <32 x i8> %b) {1714; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00:1715; AVX1:       # %bb.0:1716; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]1717; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm01718; AVX1-NEXT:    retq1719;1720; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00:1721; AVX2:       # %bb.0:1722; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]1723; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1724; AVX2-NEXT:    retq1725;1726; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00:1727; AVX512VLBW:       # %bb.0:1728; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]1729; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1730; AVX512VLBW-NEXT:    retq1731;1732; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00:1733; AVX512VLVBMI:       # %bb.0:1734; AVX512VLVBMI-NEXT:    vbroadcasti128 {{.*#+}} ymm1 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]1735; AVX512VLVBMI-NEXT:    # ymm1 = mem[0,1,0,1]1736; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01737; AVX512VLVBMI-NEXT:    retq1738;1739; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00:1740; XOPAVX1:       # %bb.0:1741; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]1742; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm01743; XOPAVX1-NEXT:    retq1744;1745; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00:1746; XOPAVX2:       # %bb.0:1747; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]1748; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1749; XOPAVX2-NEXT:    retq1750  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0>1751  ret <32 x i8> %shuffle1752}1753 1754define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00(<32 x i8> %a, <32 x i8> %b) {1755; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00:1756; AVX1:       # %bb.0:1757; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0]1758; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm01759; AVX1-NEXT:    retq1760;1761; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00:1762; AVX2:       # %bb.0:1763; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0]1764; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1765; AVX2-NEXT:    retq1766;1767; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00:1768; AVX512VLBW:       # %bb.0:1769; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0]1770; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1771; AVX512VLBW-NEXT:    retq1772;1773; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00:1774; AVX512VLVBMI:       # %bb.0:1775; AVX512VLVBMI-NEXT:    vbroadcasti128 {{.*#+}} ymm1 = [0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0]1776; AVX512VLVBMI-NEXT:    # ymm1 = mem[0,1,0,1]1777; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01778; AVX512VLVBMI-NEXT:    retq1779;1780; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00:1781; XOPAVX1:       # %bb.0:1782; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0]1783; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm01784; XOPAVX1-NEXT:    retq1785;1786; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00:1787; XOPAVX2:       # %bb.0:1788; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0]1789; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1790; XOPAVX2-NEXT:    retq1791  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0>1792  ret <32 x i8> %shuffle1793}1794 1795define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {1796; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:1797; AVX1:       # %bb.0:1798; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0]1799; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm01800; AVX1-NEXT:    retq1801;1802; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:1803; AVX2:       # %bb.0:1804; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0]1805; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1806; AVX2-NEXT:    retq1807;1808; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:1809; AVX512VLBW:       # %bb.0:1810; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0]1811; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1812; AVX512VLBW-NEXT:    retq1813;1814; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:1815; AVX512VLVBMI:       # %bb.0:1816; AVX512VLVBMI-NEXT:    vbroadcasti128 {{.*#+}} ymm1 = [0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0]1817; AVX512VLVBMI-NEXT:    # ymm1 = mem[0,1,0,1]1818; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01819; AVX512VLVBMI-NEXT:    retq1820;1821; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:1822; XOPAVX1:       # %bb.0:1823; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0]1824; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm01825; XOPAVX1-NEXT:    retq1826;1827; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:1828; XOPAVX2:       # %bb.0:1829; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0]1830; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1831; XOPAVX2-NEXT:    retq1832  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1833  ret <32 x i8> %shuffle1834}1835 1836define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {1837; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00:1838; AVX1:       # %bb.0:1839; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0]1840; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm01841; AVX1-NEXT:    retq1842;1843; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00:1844; AVX2:       # %bb.0:1845; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0]1846; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1847; AVX2-NEXT:    retq1848;1849; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00:1850; AVX512VLBW:       # %bb.0:1851; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0]1852; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1853; AVX512VLBW-NEXT:    retq1854;1855; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00:1856; AVX512VLVBMI:       # %bb.0:1857; AVX512VLVBMI-NEXT:    vbroadcasti128 {{.*#+}} ymm1 = [0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0]1858; AVX512VLVBMI-NEXT:    # ymm1 = mem[0,1,0,1]1859; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01860; AVX512VLVBMI-NEXT:    retq1861;1862; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00:1863; XOPAVX1:       # %bb.0:1864; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0]1865; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm01866; XOPAVX1-NEXT:    retq1867;1868; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00:1869; XOPAVX2:       # %bb.0:1870; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0]1871; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1872; XOPAVX2-NEXT:    retq1873  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1874  ret <32 x i8> %shuffle1875}1876 1877define <32 x i8> @shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {1878; AVX1-LABEL: shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1879; AVX1:       # %bb.0:1880; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0]1881; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm01882; AVX1-NEXT:    retq1883;1884; AVX2-LABEL: shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1885; AVX2:       # %bb.0:1886; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0]1887; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1888; AVX2-NEXT:    retq1889;1890; AVX512VLBW-LABEL: shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1891; AVX512VLBW:       # %bb.0:1892; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0]1893; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1894; AVX512VLBW-NEXT:    retq1895;1896; AVX512VLVBMI-LABEL: shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1897; AVX512VLVBMI:       # %bb.0:1898; AVX512VLVBMI-NEXT:    vbroadcasti128 {{.*#+}} ymm1 = [0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0]1899; AVX512VLVBMI-NEXT:    # ymm1 = mem[0,1,0,1]1900; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01901; AVX512VLVBMI-NEXT:    retq1902;1903; XOPAVX1-LABEL: shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1904; XOPAVX1:       # %bb.0:1905; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0]1906; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm01907; XOPAVX1-NEXT:    retq1908;1909; XOPAVX2-LABEL: shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1910; XOPAVX2:       # %bb.0:1911; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0]1912; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1913; XOPAVX2-NEXT:    retq1914  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 14, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 14, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1915  ret <32 x i8> %shuffle1916}1917 1918define <32 x i8> @shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<32 x i8> %a, <32 x i8> %b) {1919; AVX1-LABEL: shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1920; AVX1:       # %bb.0:1921; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]1922; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm01923; AVX1-NEXT:    retq1924;1925; AVX2-LABEL: shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1926; AVX2:       # %bb.0:1927; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]1928; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1929; AVX2-NEXT:    retq1930;1931; AVX512VLBW-LABEL: shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1932; AVX512VLBW:       # %bb.0:1933; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]1934; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1935; AVX512VLBW-NEXT:    retq1936;1937; AVX512VLVBMI-LABEL: shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1938; AVX512VLVBMI:       # %bb.0:1939; AVX512VLVBMI-NEXT:    vbroadcasti128 {{.*#+}} ymm1 = [15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]1940; AVX512VLVBMI-NEXT:    # ymm1 = mem[0,1,0,1]1941; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm01942; AVX512VLVBMI-NEXT:    retq1943;1944; XOPAVX1-LABEL: shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1945; XOPAVX1:       # %bb.0:1946; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]1947; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm01948; XOPAVX1-NEXT:    retq1949;1950; XOPAVX2-LABEL: shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:1951; XOPAVX2:       # %bb.0:1952; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]1953; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]1954; XOPAVX2-NEXT:    retq1955  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>1956  ret <32 x i8> %shuffle1957}1958 1959define <32 x i8> @shuffle_v32i8_00_33_02_35_04_37_06_39_08_41_10_43_12_45_14_47_16_49_18_51_20_53_22_55_24_57_26_59_28_61_30_63(<32 x i8> %a, <32 x i8> %b) {1960; AVX1-LABEL: shuffle_v32i8_00_33_02_35_04_37_06_39_08_41_10_43_12_45_14_47_16_49_18_51_20_53_22_55_24_57_26_59_28_61_30_63:1961; AVX1:       # %bb.0:1962; AVX1-NEXT:    vbroadcastss {{.*#+}} ymm2 = [255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0]1963; AVX1-NEXT:    vandnps %ymm1, %ymm2, %ymm11964; AVX1-NEXT:    vandps %ymm2, %ymm0, %ymm01965; AVX1-NEXT:    vorps %ymm1, %ymm0, %ymm01966; AVX1-NEXT:    retq1967;1968; AVX2-LABEL: shuffle_v32i8_00_33_02_35_04_37_06_39_08_41_10_43_12_45_14_47_16_49_18_51_20_53_22_55_24_57_26_59_28_61_30_63:1969; AVX2:       # %bb.0:1970; AVX2-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0]1971; AVX2-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm01972; AVX2-NEXT:    retq1973;1974; AVX512VL-LABEL: shuffle_v32i8_00_33_02_35_04_37_06_39_08_41_10_43_12_45_14_47_16_49_18_51_20_53_22_55_24_57_26_59_28_61_30_63:1975; AVX512VL:       # %bb.0:1976; AVX512VL-NEXT:    movl $-1431655766, %eax # imm = 0xAAAAAAAA1977; AVX512VL-NEXT:    kmovd %eax, %k11978; AVX512VL-NEXT:    vmovdqu8 %ymm1, %ymm0 {%k1}1979; AVX512VL-NEXT:    retq1980;1981; XOPAVX1-LABEL: shuffle_v32i8_00_33_02_35_04_37_06_39_08_41_10_43_12_45_14_47_16_49_18_51_20_53_22_55_24_57_26_59_28_61_30_63:1982; XOPAVX1:       # %bb.0:1983; XOPAVX1-NEXT:    vpcmov {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0, %ymm01984; XOPAVX1-NEXT:    retq1985;1986; XOPAVX2-LABEL: shuffle_v32i8_00_33_02_35_04_37_06_39_08_41_10_43_12_45_14_47_16_49_18_51_20_53_22_55_24_57_26_59_28_61_30_63:1987; XOPAVX2:       # %bb.0:1988; XOPAVX2-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0]1989; XOPAVX2-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm01990; XOPAVX2-NEXT:    retq1991  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 33, i32 2, i32 35, i32 4, i32 37, i32 6, i32 39, i32 8, i32 41, i32 10, i32 43, i32 12, i32 45, i32 14, i32 47, i32 16, i32 49, i32 18, i32 51, i32 20, i32 53, i32 22, i32 55, i32 24, i32 57, i32 26, i32 59, i32 28, i32 61, i32 30, i32 63>1992  ret <32 x i8> %shuffle1993}1994 1995define <32 x i8> @shuffle_v32i8_32_01_34_03_36_05_38_07_40_09_42_11_44_13_46_15_48_17_50_19_52_21_54_23_56_25_58_27_60_29_62_31(<32 x i8> %a, <32 x i8> %b) {1996; AVX1-LABEL: shuffle_v32i8_32_01_34_03_36_05_38_07_40_09_42_11_44_13_46_15_48_17_50_19_52_21_54_23_56_25_58_27_60_29_62_31:1997; AVX1:       # %bb.0:1998; AVX1-NEXT:    vbroadcastss {{.*#+}} ymm2 = [255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0]1999; AVX1-NEXT:    vandnps %ymm0, %ymm2, %ymm02000; AVX1-NEXT:    vandps %ymm2, %ymm1, %ymm12001; AVX1-NEXT:    vorps %ymm0, %ymm1, %ymm02002; AVX1-NEXT:    retq2003;2004; AVX2-LABEL: shuffle_v32i8_32_01_34_03_36_05_38_07_40_09_42_11_44_13_46_15_48_17_50_19_52_21_54_23_56_25_58_27_60_29_62_31:2005; AVX2:       # %bb.0:2006; AVX2-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0]2007; AVX2-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm02008; AVX2-NEXT:    retq2009;2010; AVX512VL-LABEL: shuffle_v32i8_32_01_34_03_36_05_38_07_40_09_42_11_44_13_46_15_48_17_50_19_52_21_54_23_56_25_58_27_60_29_62_31:2011; AVX512VL:       # %bb.0:2012; AVX512VL-NEXT:    movl $-1431655766, %eax # imm = 0xAAAAAAAA2013; AVX512VL-NEXT:    kmovd %eax, %k12014; AVX512VL-NEXT:    vpblendmb %ymm0, %ymm1, %ymm0 {%k1}2015; AVX512VL-NEXT:    retq2016;2017; XOPAVX1-LABEL: shuffle_v32i8_32_01_34_03_36_05_38_07_40_09_42_11_44_13_46_15_48_17_50_19_52_21_54_23_56_25_58_27_60_29_62_31:2018; XOPAVX1:       # %bb.0:2019; XOPAVX1-NEXT:    vpcmov {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm1, %ymm02020; XOPAVX1-NEXT:    retq2021;2022; XOPAVX2-LABEL: shuffle_v32i8_32_01_34_03_36_05_38_07_40_09_42_11_44_13_46_15_48_17_50_19_52_21_54_23_56_25_58_27_60_29_62_31:2023; XOPAVX2:       # %bb.0:2024; XOPAVX2-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0]2025; XOPAVX2-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm02026; XOPAVX2-NEXT:    retq2027  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 32, i32 1, i32 34, i32 3, i32 36, i32 5, i32 38, i32 7, i32 40, i32 9, i32 42, i32 11, i32 44, i32 13, i32 46, i32 15, i32 48, i32 17, i32 50, i32 19, i32 52, i32 21, i32 54, i32 23, i32 56, i32 25, i32 58, i32 27, i32 60, i32 29, i32 62, i32 31>2028  ret <32 x i8> %shuffle2029}2030 2031; PR1596702032define <32 x i8> @shuffle_v32i8_00_40_01_41_02_42_03_43_04_44_05_45_06_46_07_47_16_56_17_57_18_58_19_59_20_60_21_61_22_62_23_63(<32 x i8> %a, <32 x i8> %b) {2033; AVX1-LABEL: shuffle_v32i8_00_40_01_41_02_42_03_43_04_44_05_45_06_46_07_47_16_56_17_57_18_58_19_59_20_60_21_61_22_62_23_63:2034; AVX1:       # %bb.0:2035; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm22036; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm32037; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[2,3,2,3]2038; AVX1-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]2039; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,2,3]2040; AVX1-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]2041; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02042; AVX1-NEXT:    retq2043;2044; AVX2-LABEL: shuffle_v32i8_00_40_01_41_02_42_03_43_04_44_05_45_06_46_07_47_16_56_17_57_18_58_19_59_20_60_21_61_22_62_23_63:2045; AVX2:       # %bb.0:2046; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2047; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15,16,24,17,25,18,26,19,27,20,28,21,29,22,30,23,31]2048; AVX2-NEXT:    retq2049;2050; AVX512VLBW-LABEL: shuffle_v32i8_00_40_01_41_02_42_03_43_04_44_05_45_06_46_07_47_16_56_17_57_18_58_19_59_20_60_21_61_22_62_23_63:2051; AVX512VLBW:       # %bb.0:2052; AVX512VLBW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2053; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15,16,24,17,25,18,26,19,27,20,28,21,29,22,30,23,31]2054; AVX512VLBW-NEXT:    retq2055;2056; AVX512VLVBMI-LABEL: shuffle_v32i8_00_40_01_41_02_42_03_43_04_44_05_45_06_46_07_47_16_56_17_57_18_58_19_59_20_60_21_61_22_62_23_63:2057; AVX512VLVBMI:       # %bb.0:2058; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,40,1,41,2,42,3,43,4,44,5,45,6,46,7,47,16,56,17,57,18,58,19,59,20,60,21,61,22,62,23,63]2059; AVX512VLVBMI-NEXT:    vpermt2b %ymm1, %ymm2, %ymm02060; AVX512VLVBMI-NEXT:    retq2061;2062; XOPAVX1-LABEL: shuffle_v32i8_00_40_01_41_02_42_03_43_04_44_05_45_06_46_07_47_16_56_17_57_18_58_19_59_20_60_21_61_22_62_23_63:2063; XOPAVX1:       # %bb.0:2064; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm22065; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm32066; XOPAVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[2,3,2,3]2067; XOPAVX1-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]2068; XOPAVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,2,3]2069; XOPAVX1-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]2070; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02071; XOPAVX1-NEXT:    retq2072;2073; XOPAVX2-LABEL: shuffle_v32i8_00_40_01_41_02_42_03_43_04_44_05_45_06_46_07_47_16_56_17_57_18_58_19_59_20_60_21_61_22_62_23_63:2074; XOPAVX2:       # %bb.0:2075; XOPAVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2076; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15,16,24,17,25,18,26,19,27,20,28,21,29,22,30,23,31]2077; XOPAVX2-NEXT:    retq2078  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 40, i32 1, i32 41, i32 2, i32 42, i32 3, i32 43, i32 4, i32 44, i32 5, i32 45, i32 6, i32 46, i32 7, i32 47, i32 16, i32 56, i32 17, i32 57, i32 18, i32 58, i32 19, i32 59, i32 20, i32 60, i32 21, i32 61, i32 22, i32 62, i32 23, i32 63>2079  ret <32 x i8> %shuffle2080}2081 2082; PR27780 - https://bugs.llvm.org/show_bug.cgi?id=277802083 2084define <32 x i8> @load_fold_pblendvb(ptr %px, <32 x i8> %y) {2085; AVX1-LABEL: load_fold_pblendvb:2086; AVX1:       # %bb.0:2087; AVX1-NEXT:    vbroadcastsd {{.*#+}} ymm1 = [255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255]2088; AVX1-NEXT:    vandnps (%rdi), %ymm1, %ymm22089; AVX1-NEXT:    vandps %ymm1, %ymm0, %ymm02090; AVX1-NEXT:    vorps %ymm2, %ymm0, %ymm02091; AVX1-NEXT:    retq2092;2093; AVX2-LABEL: load_fold_pblendvb:2094; AVX2:       # %bb.0:2095; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm1 = [0,0,255,0,255,255,255,0,0,0,255,0,255,255,255,0,0,0,255,0,255,255,255,0,0,0,255,0,255,255,255,0]2096; AVX2-NEXT:    vpblendvb %ymm1, (%rdi), %ymm0, %ymm02097; AVX2-NEXT:    retq2098;2099; AVX512VL-LABEL: load_fold_pblendvb:2100; AVX512VL:       # %bb.0:2101; AVX512VL-NEXT:    movl $1953789044, %eax # imm = 0x747474742102; AVX512VL-NEXT:    kmovd %eax, %k12103; AVX512VL-NEXT:    vmovdqu8 (%rdi), %ymm0 {%k1}2104; AVX512VL-NEXT:    retq2105;2106; XOPAVX1-LABEL: load_fold_pblendvb:2107; XOPAVX1:       # %bb.0:2108; XOPAVX1-NEXT:    vbroadcastsd {{.*#+}} ymm1 = [255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255]2109; XOPAVX1-NEXT:    vpcmov %ymm1, (%rdi), %ymm0, %ymm02110; XOPAVX1-NEXT:    retq2111;2112; XOPAVX2-LABEL: load_fold_pblendvb:2113; XOPAVX2:       # %bb.0:2114; XOPAVX2-NEXT:    vpbroadcastq {{.*#+}} ymm1 = [0,0,255,0,255,255,255,0,0,0,255,0,255,255,255,0,0,0,255,0,255,255,255,0,0,0,255,0,255,255,255,0]2115; XOPAVX2-NEXT:    vpblendvb %ymm1, (%rdi), %ymm0, %ymm02116; XOPAVX2-NEXT:    retq2117  %x = load <32 x i8>, ptr %px, align 322118  %select = shufflevector <32 x i8> %x, <32 x i8> %y, <32 x i32> <i32 32, i32 33, i32 2, i32 35, i32 4, i32 5, i32 6, i32 39, i32 40, i32 41, i32 10, i32 43, i32 12, i32 13, i32 14, i32 47, i32 48, i32 49, i32 18, i32 51, i32 20, i32 21, i32 22, i32 55, i32 56, i32 57, i32 26, i32 59, i32 28, i32 29, i32 30, i32 63>2119  ret <32 x i8> %select2120}2121 2122define <32 x i8> @load_fold_pblendvb_commute(ptr %px, <32 x i8> %y) {2123; AVX1-LABEL: load_fold_pblendvb_commute:2124; AVX1:       # %bb.0:2125; AVX1-NEXT:    vbroadcastsd {{.*#+}} ymm1 = [255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255]2126; AVX1-NEXT:    vandnps %ymm0, %ymm1, %ymm02127; AVX1-NEXT:    vandps (%rdi), %ymm1, %ymm12128; AVX1-NEXT:    vorps %ymm0, %ymm1, %ymm02129; AVX1-NEXT:    retq2130;2131; AVX2-LABEL: load_fold_pblendvb_commute:2132; AVX2:       # %bb.0:2133; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm1 = [255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255]2134; AVX2-NEXT:    vpblendvb %ymm1, (%rdi), %ymm0, %ymm02135; AVX2-NEXT:    retq2136;2137; AVX512VL-LABEL: load_fold_pblendvb_commute:2138; AVX512VL:       # %bb.0:2139; AVX512VL-NEXT:    vmovdqa (%rdi), %ymm12140; AVX512VL-NEXT:    movl $1953789044, %eax # imm = 0x747474742141; AVX512VL-NEXT:    kmovd %eax, %k12142; AVX512VL-NEXT:    vmovdqu8 %ymm0, %ymm1 {%k1}2143; AVX512VL-NEXT:    vmovdqa %ymm1, %ymm02144; AVX512VL-NEXT:    retq2145;2146; XOPAVX1-LABEL: load_fold_pblendvb_commute:2147; XOPAVX1:       # %bb.0:2148; XOPAVX1-NEXT:    vmovdqa (%rdi), %ymm12149; XOPAVX1-NEXT:    vbroadcastsd {{.*#+}} ymm2 = [255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255]2150; XOPAVX1-NEXT:    vpcmov %ymm2, %ymm0, %ymm1, %ymm02151; XOPAVX1-NEXT:    retq2152;2153; XOPAVX2-LABEL: load_fold_pblendvb_commute:2154; XOPAVX2:       # %bb.0:2155; XOPAVX2-NEXT:    vpbroadcastq {{.*#+}} ymm1 = [255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255,255,255,0,255,0,0,0,255]2156; XOPAVX2-NEXT:    vpblendvb %ymm1, (%rdi), %ymm0, %ymm02157; XOPAVX2-NEXT:    retq2158  %x = load <32 x i8>, ptr %px, align 322159  %select = shufflevector <32 x i8> %y, <32 x i8> %x, <32 x i32> <i32 32, i32 33, i32 2, i32 35, i32 4, i32 5, i32 6, i32 39, i32 40, i32 41, i32 10, i32 43, i32 12, i32 13, i32 14, i32 47, i32 48, i32 49, i32 18, i32 51, i32 20, i32 21, i32 22, i32 55, i32 56, i32 57, i32 26, i32 59, i32 28, i32 29, i32 30, i32 63>2160  ret <32 x i8> %select2161}2162 2163define <32 x i8> @shuffle_v32i8_zz_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz_17_zz_19_zz_21_zz_23_zz_25_zz_27_zz_29_zz_31(<32 x i8> %a) {2164; AVX1-LABEL: shuffle_v32i8_zz_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz_17_zz_19_zz_21_zz_23_zz_25_zz_27_zz_29_zz_31:2165; AVX1:       # %bb.0:2166; AVX1-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm02167; AVX1-NEXT:    retq2168;2169; AVX2-LABEL: shuffle_v32i8_zz_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz_17_zz_19_zz_21_zz_23_zz_25_zz_27_zz_29_zz_31:2170; AVX2:       # %bb.0:2171; AVX2-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm02172; AVX2-NEXT:    retq2173;2174; AVX512VL-LABEL: shuffle_v32i8_zz_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz_17_zz_19_zz_21_zz_23_zz_25_zz_27_zz_29_zz_31:2175; AVX512VL:       # %bb.0:2176; AVX512VL-NEXT:    vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm02177; AVX512VL-NEXT:    retq2178;2179; XOP-LABEL: shuffle_v32i8_zz_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz_17_zz_19_zz_21_zz_23_zz_25_zz_27_zz_29_zz_31:2180; XOP:       # %bb.0:2181; XOP-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm02182; XOP-NEXT:    retq2183  %shuffle = shufflevector <32 x i8> %a, <32 x i8> zeroinitializer, <32 x i32> <i32 32, i32 1, i32 34, i32 3, i32 36, i32 5, i32 38, i32 7, i32 40, i32 9, i32 42, i32 11, i32 44, i32 13, i32 46, i32 15, i32 48, i32 17, i32 50, i32 19, i32 52, i32 21, i32 54, i32 23, i32 56, i32 25, i32 58, i32 27, i32 60, i32 29, i32 62, i32 31>2184  ret <32 x i8> %shuffle2185}2186 2187define <32 x i8> @shuffle_v32i8_01_zz_02_zz_04_uu_06_07_08_09_10_11_12_13_14_15_u6_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31(<32 x i8> %a) {2188; AVX1-LABEL: shuffle_v32i8_01_zz_02_zz_04_uu_06_07_08_09_10_11_12_13_14_15_u6_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31:2189; AVX1:       # %bb.0:2190; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[1],zero,xmm0[2],zero,xmm0[4,u,6,7,8,9,10,11,12,13,14,15]2191; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]2192; AVX1-NEXT:    retq2193;2194; AVX2OR512VL-LABEL: shuffle_v32i8_01_zz_02_zz_04_uu_06_07_08_09_10_11_12_13_14_15_u6_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31:2195; AVX2OR512VL:       # %bb.0:2196; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[1],zero,ymm0[2],zero,ymm0[4,u,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]2197; AVX2OR512VL-NEXT:    retq2198;2199; XOPAVX1-LABEL: shuffle_v32i8_01_zz_02_zz_04_uu_06_07_08_09_10_11_12_13_14_15_u6_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31:2200; XOPAVX1:       # %bb.0:2201; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[1],zero,xmm0[2],zero,xmm0[4,u,6,7,8,9,10,11,12,13,14,15]2202; XOPAVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]2203; XOPAVX1-NEXT:    retq2204;2205; XOPAVX2-LABEL: shuffle_v32i8_01_zz_02_zz_04_uu_06_07_08_09_10_11_12_13_14_15_u6_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31:2206; XOPAVX2:       # %bb.0:2207; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[1],zero,ymm0[2],zero,ymm0[4,u,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]2208; XOPAVX2-NEXT:    retq2209  %shuffle = shufflevector <32 x i8> %a, <32 x i8> zeroinitializer, <32 x i32> <i32 1, i32 32, i32 2, i32 32, i32 4, i32 poison, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>2210  ret <32 x i8> %shuffle2211}2212 2213define <32 x i8> @shuffle_v32i8_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32(<32 x i8> %a, <32 x i8> %b) {2214; AVX1-LABEL: shuffle_v32i8_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32:2215; AVX1:       # %bb.0:2216; AVX1-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]2217; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]2218; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]2219; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm02220; AVX1-NEXT:    retq2221;2222; AVX2OR512VL-LABEL: shuffle_v32i8_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32:2223; AVX2OR512VL:       # %bb.0:2224; AVX2OR512VL-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]2225; AVX2OR512VL-NEXT:    vpbroadcastw %xmm0, %ymm02226; AVX2OR512VL-NEXT:    retq2227;2228; XOPAVX1-LABEL: shuffle_v32i8_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32:2229; XOPAVX1:       # %bb.0:2230; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[0],xmm1[0],xmm0[0],xmm1[0],xmm0[0],xmm1[0],xmm0[0],xmm1[0],xmm0[0],xmm1[0],xmm0[0],xmm1[0],xmm0[0],xmm1[0]2231; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm02232; XOPAVX1-NEXT:    retq2233;2234; XOPAVX2-LABEL: shuffle_v32i8_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32:2235; XOPAVX2:       # %bb.0:2236; XOPAVX2-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]2237; XOPAVX2-NEXT:    vpbroadcastw %xmm0, %ymm02238; XOPAVX2-NEXT:    retq2239  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32>2240  ret <32 x i8> %shuffle2241}2242 2243define <32 x i8> @shuffle_v32i8_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_16_48_16_48_16_48_16_48_16_48_16_48_16_48_16_48(<32 x i8> %a, <32 x i8> %b) {2244; AVX1-LABEL: shuffle_v32i8_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_16_48_16_48_16_48_16_48_16_48_16_48_16_48_16_48:2245; AVX1:       # %bb.0:2246; AVX1-NEXT:    vpunpcklbw {{.*#+}} xmm2 = 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]2247; AVX1-NEXT:    vpshuflw {{.*#+}} xmm2 = xmm2[0,0,0,0,4,5,6,7]2248; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm12249; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02250; AVX1-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]2251; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]2252; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm2, %ymm02253; AVX1-NEXT:    vmovddup {{.*#+}} ymm0 = ymm0[0,0,2,2]2254; AVX1-NEXT:    retq2255;2256; AVX2-SLOW-LABEL: shuffle_v32i8_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_16_48_16_48_16_48_16_48_16_48_16_48_16_48_16_48:2257; AVX2-SLOW:       # %bb.0:2258; AVX2-SLOW-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2259; AVX2-SLOW-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]2260; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,1,0,1,4,5,4,5]2261; AVX2-SLOW-NEXT:    retq2262;2263; AVX2-FAST-LABEL: shuffle_v32i8_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_16_48_16_48_16_48_16_48_16_48_16_48_16_48_16_48:2264; AVX2-FAST:       # %bb.0:2265; AVX2-FAST-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2266; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17]2267; AVX2-FAST-NEXT:    retq2268;2269; AVX512VLBW-SLOW-LABEL: shuffle_v32i8_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_16_48_16_48_16_48_16_48_16_48_16_48_16_48_16_48:2270; AVX512VLBW-SLOW:       # %bb.0:2271; AVX512VLBW-SLOW-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2272; AVX512VLBW-SLOW-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]2273; AVX512VLBW-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,1,0,1,4,5,4,5]2274; AVX512VLBW-SLOW-NEXT:    retq2275;2276; AVX512VLBW-FAST-LABEL: shuffle_v32i8_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_16_48_16_48_16_48_16_48_16_48_16_48_16_48_16_48:2277; AVX512VLBW-FAST:       # %bb.0:2278; AVX512VLBW-FAST-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2279; AVX512VLBW-FAST-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17]2280; AVX512VLBW-FAST-NEXT:    retq2281;2282; AVX512VLVBMI-LABEL: shuffle_v32i8_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_16_48_16_48_16_48_16_48_16_48_16_48_16_48_16_48:2283; AVX512VLVBMI:       # %bb.0:2284; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,32,0,32,0,32,0,32,0,32,0,32,0,32,0,32,16,48,16,48,16,48,16,48,16,48,16,48,16,48,16,48]2285; AVX512VLVBMI-NEXT:    vpermt2b %ymm1, %ymm2, %ymm02286; AVX512VLVBMI-NEXT:    retq2287;2288; XOPAVX1-LABEL: shuffle_v32i8_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_16_48_16_48_16_48_16_48_16_48_16_48_16_48_16_48:2289; XOPAVX1:       # %bb.0:2290; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22291; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32292; XOPAVX1-NEXT:    vbroadcastss {{.*#+}} xmm4 = [0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16]2293; XOPAVX1-NEXT:    vpperm %xmm4, %xmm2, %xmm3, %xmm22294; XOPAVX1-NEXT:    vpperm %xmm4, %xmm1, %xmm0, %xmm02295; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02296; XOPAVX1-NEXT:    retq2297;2298; XOPAVX2-LABEL: shuffle_v32i8_00_32_00_32_00_32_00_32_00_32_00_32_00_32_00_32_16_48_16_48_16_48_16_48_16_48_16_48_16_48_16_48:2299; XOPAVX2:       # %bb.0:2300; XOPAVX2-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2301; XOPAVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]2302; XOPAVX2-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,1,0,1,4,5,4,5]2303; XOPAVX2-NEXT:    retq2304  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 0, i32 32, i32 16, i32 48, i32 16, i32 48, i32 16, i32 48, i32 16, i32 48, i32 16, i32 48, i32 16, i32 48, i32 16, i32 48, i32 16, i32 48>2305  ret <32 x i8> %shuffle2306}2307 2308define <32 x i8> @shuffle_v32i8_32_32_32_32_32_32_32_32_08_09_10_11_12_13_14_15_48_48_48_48_48_48_48_48_24_25_26_27_28_29_30_31(<32 x i8> %a, <32 x i8> %b) {2309; AVX1-LABEL: shuffle_v32i8_32_32_32_32_32_32_32_32_08_09_10_11_12_13_14_15_48_48_48_48_48_48_48_48_24_25_26_27_28_29_30_31:2310; AVX1:       # %bb.0:2311; AVX1-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]2312; AVX1-NEXT:    vpshuflw {{.*#+}} xmm2 = xmm2[0,0,0,0,4,5,6,7]2313; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm12314; AVX1-NEXT:    vpunpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]2315; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]2316; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm12317; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]2318; AVX1-NEXT:    retq2319;2320; AVX2-LABEL: shuffle_v32i8_32_32_32_32_32_32_32_32_08_09_10_11_12_13_14_15_48_48_48_48_48_48_48_48_24_25_26_27_28_29_30_31:2321; AVX2:       # %bb.0:2322; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm22323; AVX2-NEXT:    vpshufb %ymm2, %ymm1, %ymm12324; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]2325; AVX2-NEXT:    retq2326;2327; AVX512VLBW-LABEL: shuffle_v32i8_32_32_32_32_32_32_32_32_08_09_10_11_12_13_14_15_48_48_48_48_48_48_48_48_24_25_26_27_28_29_30_31:2328; AVX512VLBW:       # %bb.0:2329; AVX512VLBW-NEXT:    vpxor %xmm2, %xmm2, %xmm22330; AVX512VLBW-NEXT:    vpshufb %ymm2, %ymm1, %ymm12331; AVX512VLBW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]2332; AVX512VLBW-NEXT:    retq2333;2334; AVX512VLVBMI-LABEL: shuffle_v32i8_32_32_32_32_32_32_32_32_08_09_10_11_12_13_14_15_48_48_48_48_48_48_48_48_24_25_26_27_28_29_30_31:2335; AVX512VLVBMI:       # %bb.0:2336; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,0,0,0,0,0,0,0,40,41,42,43,44,45,46,47,16,16,16,16,16,16,16,16,56,57,58,59,60,61,62,63]2337; AVX512VLVBMI-NEXT:    vpermi2b %ymm0, %ymm1, %ymm22338; AVX512VLVBMI-NEXT:    vmovdqa %ymm2, %ymm02339; AVX512VLVBMI-NEXT:    retq2340;2341; XOPAVX1-LABEL: shuffle_v32i8_32_32_32_32_32_32_32_32_08_09_10_11_12_13_14_15_48_48_48_48_48_48_48_48_24_25_26_27_28_29_30_31:2342; XOPAVX1:       # %bb.0:2343; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm22344; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm32345; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm4 = [0,0,0,0,0,0,0,0,24,25,26,27,28,29,30,31]2346; XOPAVX1-NEXT:    vpperm %xmm4, %xmm2, %xmm3, %xmm22347; XOPAVX1-NEXT:    vpperm %xmm4, %xmm0, %xmm1, %xmm02348; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02349; XOPAVX1-NEXT:    retq2350;2351; XOPAVX2-LABEL: shuffle_v32i8_32_32_32_32_32_32_32_32_08_09_10_11_12_13_14_15_48_48_48_48_48_48_48_48_24_25_26_27_28_29_30_31:2352; XOPAVX2:       # %bb.0:2353; XOPAVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm22354; XOPAVX2-NEXT:    vpshufb %ymm2, %ymm1, %ymm12355; XOPAVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]2356; XOPAVX2-NEXT:    retq2357  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>2358  ret <32 x i8> %shuffle2359}2360 2361define <32 x i8> @shuffle_v32i8_39_38_37_36_35_34_33_32_15_14_13_12_11_10_09_08_55_54_53_52_51_50_49_48_31_30_29_28_27_26_25_24(<32 x i8> %a, <32 x i8> %b) {2362; AVX1-LABEL: shuffle_v32i8_39_38_37_36_35_34_33_32_15_14_13_12_11_10_09_08_55_54_53_52_51_50_49_48_31_30_29_28_27_26_25_24:2363; AVX1:       # %bb.0:2364; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm22365; AVX1-NEXT:    vmovq {{.*#+}} xmm3 = [15,14,13,12,11,10,9,8,0,0,0,0,0,0,0,0]2366; AVX1-NEXT:    vpshufb %xmm3, %xmm2, %xmm22367; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm42368; AVX1-NEXT:    vmovq {{.*#+}} xmm5 = [7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0]2369; AVX1-NEXT:    vpshufb %xmm5, %xmm4, %xmm42370; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm2 = xmm4[0],xmm2[0]2371; AVX1-NEXT:    vpshufb %xmm3, %xmm0, %xmm02372; AVX1-NEXT:    vpshufb %xmm5, %xmm1, %xmm12373; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]2374; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02375; AVX1-NEXT:    retq2376;2377; AVX2-LABEL: shuffle_v32i8_39_38_37_36_35_34_33_32_15_14_13_12_11_10_09_08_55_54_53_52_51_50_49_48_31_30_29_28_27_26_25_24:2378; AVX2:       # %bb.0:2379; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]2380; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8,23,22,21,20,19,18,17,16,31,30,29,28,27,26,25,24]2381; AVX2-NEXT:    retq2382;2383; AVX512VLBW-LABEL: shuffle_v32i8_39_38_37_36_35_34_33_32_15_14_13_12_11_10_09_08_55_54_53_52_51_50_49_48_31_30_29_28_27_26_25_24:2384; AVX512VLBW:       # %bb.0:2385; AVX512VLBW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]2386; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8,23,22,21,20,19,18,17,16,31,30,29,28,27,26,25,24]2387; AVX512VLBW-NEXT:    retq2388;2389; AVX512VLVBMI-LABEL: shuffle_v32i8_39_38_37_36_35_34_33_32_15_14_13_12_11_10_09_08_55_54_53_52_51_50_49_48_31_30_29_28_27_26_25_24:2390; AVX512VLVBMI:       # %bb.0:2391; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [7,6,5,4,3,2,1,0,47,46,45,44,43,42,41,40,23,22,21,20,19,18,17,16,63,62,61,60,59,58,57,56]2392; AVX512VLVBMI-NEXT:    vpermi2b %ymm0, %ymm1, %ymm22393; AVX512VLVBMI-NEXT:    vmovdqa %ymm2, %ymm02394; AVX512VLVBMI-NEXT:    retq2395;2396; XOPAVX1-LABEL: shuffle_v32i8_39_38_37_36_35_34_33_32_15_14_13_12_11_10_09_08_55_54_53_52_51_50_49_48_31_30_29_28_27_26_25_24:2397; XOPAVX1:       # %bb.0:2398; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm22399; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm32400; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm4 = [7,6,5,4,3,2,1,0,31,30,29,28,27,26,25,24]2401; XOPAVX1-NEXT:    vpperm %xmm4, %xmm2, %xmm3, %xmm22402; XOPAVX1-NEXT:    vpperm %xmm4, %xmm0, %xmm1, %xmm02403; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02404; XOPAVX1-NEXT:    retq2405;2406; XOPAVX2-LABEL: shuffle_v32i8_39_38_37_36_35_34_33_32_15_14_13_12_11_10_09_08_55_54_53_52_51_50_49_48_31_30_29_28_27_26_25_24:2407; XOPAVX2:       # %bb.0:2408; XOPAVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]2409; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8,23,22,21,20,19,18,17,16,31,30,29,28,27,26,25,24]2410; XOPAVX2-NEXT:    retq2411  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 39, i32 38, i32 37, i32 36, i32 35, i32 34, i32 33, i32 32, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 55, i32 54, i32 53, i32 52, i32 51, i32 50, i32 49, i32 48, i32 31, i32 30, i32 29, i32 28, i32 27, i32 26, i32 25, i32 24>2412  ret <32 x i8> %shuffle2413}2414 2415define <32 x i8> @shuffle_v32i8_39_38_37_36_35_34_33_32_07_06_05_04_03_02_01_00_55_54_53_52_51_50_49_48_23_22_21_20_19_18_17_16(<32 x i8> %a, <32 x i8> %b) {2416; AVX1-LABEL: shuffle_v32i8_39_38_37_36_35_34_33_32_07_06_05_04_03_02_01_00_55_54_53_52_51_50_49_48_23_22_21_20_19_18_17_16:2417; AVX1:       # %bb.0:2418; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm22419; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm32420; AVX1-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]2421; AVX1-NEXT:    vmovdqa {{.*#+}} xmm3 = [14,12,10,8,6,4,2,0,15,13,11,9,7,5,3,1]2422; AVX1-NEXT:    vpshufb %xmm3, %xmm2, %xmm22423; 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]2424; AVX1-NEXT:    vpshufb %xmm3, %xmm0, %xmm02425; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02426; AVX1-NEXT:    retq2427;2428; AVX2-LABEL: shuffle_v32i8_39_38_37_36_35_34_33_32_07_06_05_04_03_02_01_00_55_54_53_52_51_50_49_48_23_22_21_20_19_18_17_16:2429; AVX2:       # %bb.0:2430; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0]2431; AVX2-NEXT:    vpshufb %ymm2, %ymm0, %ymm02432; AVX2-NEXT:    vpshufb %ymm2, %ymm1, %ymm12433; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]2434; AVX2-NEXT:    retq2435;2436; AVX512VLBW-LABEL: shuffle_v32i8_39_38_37_36_35_34_33_32_07_06_05_04_03_02_01_00_55_54_53_52_51_50_49_48_23_22_21_20_19_18_17_16:2437; AVX512VLBW:       # %bb.0:2438; AVX512VLBW-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0]2439; AVX512VLBW-NEXT:    vpshufb %ymm2, %ymm0, %ymm02440; AVX512VLBW-NEXT:    vpshufb %ymm2, %ymm1, %ymm12441; AVX512VLBW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]2442; AVX512VLBW-NEXT:    retq2443;2444; AVX512VLVBMI-LABEL: shuffle_v32i8_39_38_37_36_35_34_33_32_07_06_05_04_03_02_01_00_55_54_53_52_51_50_49_48_23_22_21_20_19_18_17_16:2445; AVX512VLVBMI:       # %bb.0:2446; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [7,6,5,4,3,2,1,0,39,38,37,36,35,34,33,32,23,22,21,20,19,18,17,16,55,54,53,52,51,50,49,48]2447; AVX512VLVBMI-NEXT:    vpermi2b %ymm0, %ymm1, %ymm22448; AVX512VLVBMI-NEXT:    vmovdqa %ymm2, %ymm02449; AVX512VLVBMI-NEXT:    retq2450;2451; XOPAVX1-LABEL: shuffle_v32i8_39_38_37_36_35_34_33_32_07_06_05_04_03_02_01_00_55_54_53_52_51_50_49_48_23_22_21_20_19_18_17_16:2452; XOPAVX1:       # %bb.0:2453; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm22454; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm32455; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm4 = [7,6,5,4,3,2,1,0,23,22,21,20,19,18,17,16]2456; XOPAVX1-NEXT:    vpperm %xmm4, %xmm2, %xmm3, %xmm22457; XOPAVX1-NEXT:    vpperm %xmm4, %xmm0, %xmm1, %xmm02458; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02459; XOPAVX1-NEXT:    retq2460;2461; XOPAVX2-LABEL: shuffle_v32i8_39_38_37_36_35_34_33_32_07_06_05_04_03_02_01_00_55_54_53_52_51_50_49_48_23_22_21_20_19_18_17_16:2462; XOPAVX2:       # %bb.0:2463; XOPAVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0]2464; XOPAVX2-NEXT:    vpshufb %ymm2, %ymm0, %ymm02465; XOPAVX2-NEXT:    vpshufb %ymm2, %ymm1, %ymm12466; XOPAVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]2467; XOPAVX2-NEXT:    retq2468  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 39, i32 38, i32 37, i32 36, i32 35, i32 34, i32 33, i32 32, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 55, i32 54, i32 53, i32 52, i32 51, i32 50, i32 49, i32 48, i32 23, i32 22, i32 21, i32 20, i32 19, i32 18, i32 17, i32 16>2469  ret <32 x i8> %shuffle2470}2471 2472define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_17_16(<32 x i8> %a, <32 x i8> %b) {2473; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_17_16:2474; AVX1:       # %bb.0:2475; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm12476; AVX1-NEXT:    vpmovsxbw {{.*#+}} xmm2 = [0,0,0,0,0,0,0,1]2477; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm12478; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm02479; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm02480; AVX1-NEXT:    retq2481;2482; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_17_16:2483; AVX2OR512VL:       # %bb.0:2484; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,16]2485; AVX2OR512VL-NEXT:    retq2486;2487; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_17_16:2488; XOPAVX1:       # %bb.0:2489; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm12490; XOPAVX1-NEXT:    vpmovsxbw {{.*#+}} xmm2 = [0,0,0,0,0,0,0,1]2491; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm12492; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm02493; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm02494; XOPAVX1-NEXT:    retq2495;2496; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_17_16:2497; XOPAVX2:       # %bb.0:2498; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,16]2499; XOPAVX2-NEXT:    retq2500  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 17, i32 16>2501  ret <32 x i8> %shuffle2502}2503 2504define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_18_16_16(<32 x i8> %a, <32 x i8> %b) {2505; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_18_16_16:2506; AVX1:       # %bb.0:2507; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm12508; AVX1-NEXT:    vpmovsxwd {{.*#+}} xmm2 = [0,0,0,512]2509; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm12510; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm02511; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm02512; AVX1-NEXT:    retq2513;2514; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_18_16_16:2515; AVX2OR512VL:       # %bb.0:2516; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,18,16,16]2517; AVX2OR512VL-NEXT:    retq2518;2519; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_18_16_16:2520; XOPAVX1:       # %bb.0:2521; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm12522; XOPAVX1-NEXT:    vpmovsxwd {{.*#+}} xmm2 = [0,0,0,512]2523; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm12524; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm02525; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm02526; XOPAVX1-NEXT:    retq2527;2528; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_18_16_16:2529; XOPAVX2:       # %bb.0:2530; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,18,16,16]2531; XOPAVX2-NEXT:    retq2532  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 18, i32 16, i32 16>2533  ret <32 x i8> %shuffle2534}2535 2536define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_23_16_16_16_16_16_16_16(<32 x i8> %a, <32 x i8> %b) {2537; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_23_16_16_16_16_16_16_16:2538; AVX1:       # %bb.0:2539; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm12540; AVX1-NEXT:    vpmovsxbq {{.*#+}} xmm2 = [0,7]2541; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm12542; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm02543; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm02544; AVX1-NEXT:    retq2545;2546; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_23_16_16_16_16_16_16_16:2547; AVX2OR512VL:       # %bb.0:2548; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,23,16,16,16,16,16,16,16]2549; AVX2OR512VL-NEXT:    retq2550;2551; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_23_16_16_16_16_16_16_16:2552; XOPAVX1:       # %bb.0:2553; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm12554; XOPAVX1-NEXT:    vpmovsxbq {{.*#+}} xmm2 = [0,7]2555; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm12556; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm02557; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm02558; XOPAVX1-NEXT:    retq2559;2560; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_23_16_16_16_16_16_16_16:2561; XOPAVX2:       # %bb.0:2562; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,23,16,16,16,16,16,16,16]2563; XOPAVX2-NEXT:    retq2564  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 23, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>2565  ret <32 x i8> %shuffle2566}2567 2568define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_24_16_16_16_16_16_16_16_16(<32 x i8> %a, <32 x i8> %b) {2569; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_24_16_16_16_16_16_16_16_16:2570; AVX1:       # %bb.0:2571; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm12572; AVX1-NEXT:    vmovq {{.*#+}} xmm2 = [0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0]2573; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm12574; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm02575; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm02576; AVX1-NEXT:    retq2577;2578; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_24_16_16_16_16_16_16_16_16:2579; AVX2OR512VL:       # %bb.0:2580; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,24,16,16,16,16,16,16,16,16]2581; AVX2OR512VL-NEXT:    retq2582;2583; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_24_16_16_16_16_16_16_16_16:2584; XOPAVX1:       # %bb.0:2585; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm12586; XOPAVX1-NEXT:    vmovq {{.*#+}} xmm2 = [0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0]2587; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm12588; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm02589; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm02590; XOPAVX1-NEXT:    retq2591;2592; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_24_16_16_16_16_16_16_16_16:2593; XOPAVX2:       # %bb.0:2594; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,24,16,16,16,16,16,16,16,16]2595; XOPAVX2-NEXT:    retq2596  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 24, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>2597  ret <32 x i8> %shuffle2598}2599 2600define <32 x i8> @shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_30_16_16_16_16_16_16_16_16_16_16_16_16_16_16(<32 x i8> %a, <32 x i8> %b) {2601; AVX1-LABEL: shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_30_16_16_16_16_16_16_16_16_16_16_16_16_16_16:2602; AVX1:       # %bb.0:2603; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm12604; AVX1-NEXT:    vmovd {{.*#+}} xmm2 = [0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0]2605; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm12606; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm02607; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm02608; AVX1-NEXT:    retq2609;2610; AVX2OR512VL-LABEL: shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_30_16_16_16_16_16_16_16_16_16_16_16_16_16_16:2611; AVX2OR512VL:       # %bb.0:2612; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,30,16,16,16,16,16,16,16,16,16,16,16,16,16,16]2613; AVX2OR512VL-NEXT:    retq2614;2615; XOPAVX1-LABEL: shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_30_16_16_16_16_16_16_16_16_16_16_16_16_16_16:2616; XOPAVX1:       # %bb.0:2617; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm12618; XOPAVX1-NEXT:    vmovd {{.*#+}} xmm2 = [0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0]2619; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm12620; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm02621; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm02622; XOPAVX1-NEXT:    retq2623;2624; XOPAVX2-LABEL: shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_30_16_16_16_16_16_16_16_16_16_16_16_16_16_16:2625; XOPAVX2:       # %bb.0:2626; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,30,16,16,16,16,16,16,16,16,16,16,16,16,16,16]2627; XOPAVX2-NEXT:    retq2628  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 14, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 16, i32 30, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>2629  ret <32 x i8> %shuffle2630}2631 2632define <32 x i8> @shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_31_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16(<32 x i8> %a, <32 x i8> %b) {2633; AVX1-LABEL: shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_31_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:2634; AVX1:       # %bb.0:2635; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm12636; AVX1-NEXT:    vpmovsxbq {{.*#+}} xmm2 = [15,0]2637; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm12638; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm02639; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm02640; AVX1-NEXT:    retq2641;2642; AVX2OR512VL-LABEL: shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_31_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:2643; AVX2OR512VL:       # %bb.0:2644; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]2645; AVX2OR512VL-NEXT:    retq2646;2647; XOPAVX1-LABEL: shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_31_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:2648; XOPAVX1:       # %bb.0:2649; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm12650; XOPAVX1-NEXT:    vpmovsxbq {{.*#+}} xmm2 = [15,0]2651; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm12652; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm02653; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm02654; XOPAVX1-NEXT:    retq2655;2656; XOPAVX2-LABEL: shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_31_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:2657; XOPAVX2:       # %bb.0:2658; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]2659; XOPAVX2-NEXT:    retq2660  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 31, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>2661  ret <32 x i8> %shuffle2662}2663 2664define <32 x i8> @shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_16_48_17_49_18_50_19_51_20_52_21_53_22_54_23_55(<32 x i8> %a, <32 x i8> %b) {2665; AVX1-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_16_48_17_49_18_50_19_51_20_52_21_53_22_54_23_55:2666; AVX1:       # %bb.0:2667; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22668; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32669; AVX1-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]2670; AVX1-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]2671; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02672; AVX1-NEXT:    retq2673;2674; AVX2OR512VL-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_16_48_17_49_18_50_19_51_20_52_21_53_22_54_23_55:2675; AVX2OR512VL:       # %bb.0:2676; AVX2OR512VL-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2677; AVX2OR512VL-NEXT:    retq2678;2679; XOPAVX1-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_16_48_17_49_18_50_19_51_20_52_21_53_22_54_23_55:2680; XOPAVX1:       # %bb.0:2681; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22682; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32683; XOPAVX1-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]2684; XOPAVX1-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]2685; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02686; XOPAVX1-NEXT:    retq2687;2688; XOPAVX2-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_16_48_17_49_18_50_19_51_20_52_21_53_22_54_23_55:2689; XOPAVX2:       # %bb.0:2690; XOPAVX2-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2691; XOPAVX2-NEXT:    retq2692  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55>2693  ret <32 x i8> %shuffle2694}2695 2696define <32 x i8> @shuffle_v32i8_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47_24_56_25_57_26_58_27_59_28_60_29_61_30_62_31_63(<32 x i8> %a, <32 x i8> %b) {2697; AVX1-LABEL: shuffle_v32i8_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47_24_56_25_57_26_58_27_59_28_60_29_61_30_62_31_63:2698; AVX1:       # %bb.0:2699; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22700; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32701; AVX1-NEXT:    vpunpckhbw {{.*#+}} xmm2 = 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]2702; AVX1-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]2703; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02704; AVX1-NEXT:    retq2705;2706; AVX2OR512VL-LABEL: shuffle_v32i8_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47_24_56_25_57_26_58_27_59_28_60_29_61_30_62_31_63:2707; AVX2OR512VL:       # %bb.0:2708; AVX2OR512VL-NEXT:    vpunpckhbw {{.*#+}} ymm0 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31]2709; AVX2OR512VL-NEXT:    retq2710;2711; XOPAVX1-LABEL: shuffle_v32i8_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47_24_56_25_57_26_58_27_59_28_60_29_61_30_62_31_63:2712; XOPAVX1:       # %bb.0:2713; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22714; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32715; XOPAVX1-NEXT:    vpunpckhbw {{.*#+}} xmm2 = 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]2716; XOPAVX1-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]2717; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02718; XOPAVX1-NEXT:    retq2719;2720; XOPAVX2-LABEL: shuffle_v32i8_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47_24_56_25_57_26_58_27_59_28_60_29_61_30_62_31_63:2721; XOPAVX2:       # %bb.0:2722; XOPAVX2-NEXT:    vpunpckhbw {{.*#+}} ymm0 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31]2723; XOPAVX2-NEXT:    retq2724  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>2725  ret <32 x i8> %shuffle2726}2727 2728define <32 x i8> @shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_24_56_25_57_26_58_27_59_28_60_29_61_30_62_31_63(<32 x i8> %a, <32 x i8> %b) {2729; AVX1-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_24_56_25_57_26_58_27_59_28_60_29_61_30_62_31_63:2730; AVX1:       # %bb.0:2731; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22732; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32733; AVX1-NEXT:    vpunpckhbw {{.*#+}} xmm2 = 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]2734; AVX1-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]2735; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02736; AVX1-NEXT:    retq2737;2738; AVX2-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_24_56_25_57_26_58_27_59_28_60_29_61_30_62_31_63:2739; AVX2:       # %bb.0:2740; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,3,3]2741; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,3,3]2742; AVX2-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2743; AVX2-NEXT:    retq2744;2745; AVX512VLBW-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_24_56_25_57_26_58_27_59_28_60_29_61_30_62_31_63:2746; AVX512VLBW:       # %bb.0:2747; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,3,3]2748; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,3,3]2749; AVX512VLBW-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2750; AVX512VLBW-NEXT:    retq2751;2752; AVX512VLVBMI-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_24_56_25_57_26_58_27_59_28_60_29_61_30_62_31_63:2753; AVX512VLVBMI:       # %bb.0:2754; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,32,1,33,2,34,3,35,4,36,5,37,6,38,7,39,24,56,25,57,26,58,27,59,28,60,29,61,30,62,31,63]2755; AVX512VLVBMI-NEXT:    vpermt2b %ymm1, %ymm2, %ymm02756; AVX512VLVBMI-NEXT:    retq2757;2758; XOPAVX1-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_24_56_25_57_26_58_27_59_28_60_29_61_30_62_31_63:2759; XOPAVX1:       # %bb.0:2760; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22761; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32762; XOPAVX1-NEXT:    vpunpckhbw {{.*#+}} xmm2 = 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]2763; XOPAVX1-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]2764; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02765; XOPAVX1-NEXT:    retq2766;2767; XOPAVX2-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_24_56_25_57_26_58_27_59_28_60_29_61_30_62_31_63:2768; XOPAVX2:       # %bb.0:2769; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,3,3]2770; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,3,3]2771; XOPAVX2-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2772; XOPAVX2-NEXT:    retq2773  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>2774  ret <32 x i8> %shuffle2775}2776 2777define <32 x i8> @shuffle_v32i8_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47_16_48_17_49_18_50_19_51_20_52_21_53_22_54_23_55(<32 x i8> %a, <32 x i8> %b) {2778; AVX1-LABEL: shuffle_v32i8_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47_16_48_17_49_18_50_19_51_20_52_21_53_22_54_23_55:2779; AVX1:       # %bb.0:2780; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22781; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32782; AVX1-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]2783; AVX1-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]2784; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02785; AVX1-NEXT:    retq2786;2787; AVX2-LABEL: shuffle_v32i8_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47_16_48_17_49_18_50_19_51_20_52_21_53_22_54_23_55:2788; AVX2:       # %bb.0:2789; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[1,1,2,3]2790; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[1,1,2,3]2791; AVX2-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2792; AVX2-NEXT:    retq2793;2794; AVX512VLBW-LABEL: shuffle_v32i8_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47_16_48_17_49_18_50_19_51_20_52_21_53_22_54_23_55:2795; AVX512VLBW:       # %bb.0:2796; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[1,1,2,3]2797; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[1,1,2,3]2798; AVX512VLBW-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2799; AVX512VLBW-NEXT:    retq2800;2801; AVX512VLVBMI-LABEL: shuffle_v32i8_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47_16_48_17_49_18_50_19_51_20_52_21_53_22_54_23_55:2802; AVX512VLVBMI:       # %bb.0:2803; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [8,40,9,41,10,42,11,43,12,44,13,45,14,46,15,47,16,48,17,49,18,50,19,51,20,52,21,53,22,54,23,55]2804; AVX512VLVBMI-NEXT:    vpermt2b %ymm1, %ymm2, %ymm02805; AVX512VLVBMI-NEXT:    retq2806;2807; XOPAVX1-LABEL: shuffle_v32i8_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47_16_48_17_49_18_50_19_51_20_52_21_53_22_54_23_55:2808; XOPAVX1:       # %bb.0:2809; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22810; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32811; XOPAVX1-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]2812; XOPAVX1-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]2813; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02814; XOPAVX1-NEXT:    retq2815;2816; XOPAVX2-LABEL: shuffle_v32i8_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47_16_48_17_49_18_50_19_51_20_52_21_53_22_54_23_55:2817; XOPAVX2:       # %bb.0:2818; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[1,1,2,3]2819; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[1,1,2,3]2820; XOPAVX2-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2821; XOPAVX2-NEXT:    retq2822  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55>2823  ret <32 x i8> %shuffle2824}2825 2826define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_16_17_16_16_16_16_16_16_16_16_16_16_16_16_16_16(<32 x i8> %a, <32 x i8> %b) {2827; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_16_17_16_16_16_16_16_16_16_16_16_16_16_16_16_16:2828; AVX1:       # %bb.0:2829; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]2830; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02831; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0]2832; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm02833; AVX1-NEXT:    retq2834;2835; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_16_17_16_16_16_16_16_16_16_16_16_16_16_16_16_16:2836; AVX2OR512VL:       # %bb.0:2837; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,16,17,16,16,16,16,16,16,16,16,16,16,16,16,16,16]2838; AVX2OR512VL-NEXT:    retq2839;2840; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_16_17_16_16_16_16_16_16_16_16_16_16_16_16_16_16:2841; XOPAVX1:       # %bb.0:2842; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]2843; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02844; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0]2845; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm02846; XOPAVX1-NEXT:    retq2847;2848; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00_16_17_16_16_16_16_16_16_16_16_16_16_16_16_16_16:2849; XOPAVX2:       # %bb.0:2850; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,16,17,16,16,16,16,16,16,16,16,16,16,16,16,16,16]2851; XOPAVX2-NEXT:    retq2852  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 16, i32 17, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>2853  ret <32 x i8> %shuffle2854}2855 2856define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_16_16_18_16_16_16_16_16_16_16_16_16_16_16_16_16(<32 x i8> %a, <32 x i8> %b) {2857; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_16_16_18_16_16_16_16_16_16_16_16_16_16_16_16_16:2858; AVX1:       # %bb.0:2859; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0]2860; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02861; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0]2862; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm02863; AVX1-NEXT:    retq2864;2865; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_16_16_18_16_16_16_16_16_16_16_16_16_16_16_16_16:2866; AVX2OR512VL:       # %bb.0:2867; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,16,16,18,16,16,16,16,16,16,16,16,16,16,16,16,16]2868; AVX2OR512VL-NEXT:    retq2869;2870; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_16_16_18_16_16_16_16_16_16_16_16_16_16_16_16_16:2871; XOPAVX1:       # %bb.0:2872; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0]2873; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02874; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0]2875; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm02876; XOPAVX1-NEXT:    retq2877;2878; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00_16_16_18_16_16_16_16_16_16_16_16_16_16_16_16_16:2879; XOPAVX2:       # %bb.0:2880; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,16,16,18,16,16,16,16,16,16,16,16,16,16,16,16,16]2881; XOPAVX2-NEXT:    retq2882  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0, i32 16, i32 16, i32 18, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>2883  ret <32 x i8> %shuffle2884}2885 2886define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_16_16_16_16_16_16_16_23_16_16_16_16_16_16_16_16(<32 x i8> %a, <32 x i8> %b) {2887; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_16_16_16_16_16_16_16_23_16_16_16_16_16_16_16_16:2888; AVX1:       # %bb.0:2889; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0]2890; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02891; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0]2892; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm02893; AVX1-NEXT:    retq2894;2895; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_16_16_16_16_16_16_16_23_16_16_16_16_16_16_16_16:2896; AVX2OR512VL:       # %bb.0:2897; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,16,16,16,16,16,16,16,23,16,16,16,16,16,16,16,16]2898; AVX2OR512VL-NEXT:    retq2899;2900; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_16_16_16_16_16_16_16_23_16_16_16_16_16_16_16_16:2901; XOPAVX1:       # %bb.0:2902; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0]2903; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02904; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0]2905; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm02906; XOPAVX1-NEXT:    retq2907;2908; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00_16_16_16_16_16_16_16_23_16_16_16_16_16_16_16_16:2909; XOPAVX2:       # %bb.0:2910; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,16,16,16,16,16,16,16,23,16,16,16,16,16,16,16,16]2911; XOPAVX2-NEXT:    retq2912  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 23, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>2913  ret <32 x i8> %shuffle2914}2915 2916define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_24_16_16_16_16_16_16_16(<32 x i8> %a, <32 x i8> %b) {2917; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_24_16_16_16_16_16_16_16:2918; AVX1:       # %bb.0:2919; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0]2920; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02921; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0]2922; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm02923; AVX1-NEXT:    retq2924;2925; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_24_16_16_16_16_16_16_16:2926; AVX2OR512VL:       # %bb.0:2927; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,24,16,16,16,16,16,16,16]2928; AVX2OR512VL-NEXT:    retq2929;2930; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_24_16_16_16_16_16_16_16:2931; XOPAVX1:       # %bb.0:2932; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0]2933; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02934; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0]2935; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm02936; XOPAVX1-NEXT:    retq2937;2938; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_24_16_16_16_16_16_16_16:2939; XOPAVX2:       # %bb.0:2940; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,24,16,16,16,16,16,16,16]2941; XOPAVX2-NEXT:    retq2942  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 24, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>2943  ret <32 x i8> %shuffle2944}2945 2946define <32 x i8> @shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_30_16(<32 x i8> %a, <32 x i8> %b) {2947; AVX1-LABEL: shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_30_16:2948; AVX1:       # %bb.0:2949; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0]2950; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02951; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0]2952; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm02953; AVX1-NEXT:    retq2954;2955; AVX2OR512VL-LABEL: shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_30_16:2956; AVX2OR512VL:       # %bb.0:2957; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,30,16]2958; AVX2OR512VL-NEXT:    retq2959;2960; XOPAVX1-LABEL: shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_30_16:2961; XOPAVX1:       # %bb.0:2962; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0]2963; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02964; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0]2965; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm02966; XOPAVX1-NEXT:    retq2967;2968; XOPAVX2-LABEL: shuffle_v32i8_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_30_16:2969; XOPAVX2:       # %bb.0:2970; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,30,16]2971; XOPAVX2-NEXT:    retq2972  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 14, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 30, i32 16>2973  ret <32 x i8> %shuffle2974}2975 2976define <32 x i8> @shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_31(<32 x i8> %a, <32 x i8> %b) {2977; AVX1-LABEL: shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_31:2978; AVX1:       # %bb.0:2979; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]2980; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02981; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15]2982; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm02983; AVX1-NEXT:    retq2984;2985; AVX2OR512VL-LABEL: shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_31:2986; AVX2OR512VL:       # %bb.0:2987; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,31]2988; AVX2OR512VL-NEXT:    retq2989;2990; XOPAVX1-LABEL: shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_31:2991; XOPAVX1:       # %bb.0:2992; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]2993; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02994; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15]2995; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm02996; XOPAVX1-NEXT:    retq2997;2998; XOPAVX2-LABEL: shuffle_v32i8_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_31:2999; XOPAVX2:       # %bb.0:3000; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,31]3001; XOPAVX2-NEXT:    retq3002  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 31>3003  ret <32 x i8> %shuffle3004}3005 3006define <32 x i8> @shuffle_v32i8_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12_28_28_28_28_24_24_24_24_20_20_20_20_16_16_16_16(<32 x i8> %a, <32 x i8> %b) {3007; AVX1-LABEL: shuffle_v32i8_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12_28_28_28_28_24_24_24_24_20_20_20_20_16_16_16_16:3008; AVX1:       # %bb.0:3009; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12]3010; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03011; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[12,12,12,12,8,8,8,8,4,4,4,4,0,0,0,0]3012; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03013; AVX1-NEXT:    retq3014;3015; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12_28_28_28_28_24_24_24_24_20_20_20_20_16_16_16_16:3016; AVX2OR512VL:       # %bb.0:3017; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12,28,28,28,28,24,24,24,24,20,20,20,20,16,16,16,16]3018; AVX2OR512VL-NEXT:    retq3019;3020; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12_28_28_28_28_24_24_24_24_20_20_20_20_16_16_16_16:3021; XOPAVX1:       # %bb.0:3022; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12]3023; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03024; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[12,12,12,12,8,8,8,8,4,4,4,4,0,0,0,0]3025; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03026; XOPAVX1-NEXT:    retq3027;3028; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12_28_28_28_28_24_24_24_24_20_20_20_20_16_16_16_16:3029; XOPAVX2:       # %bb.0:3030; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12,28,28,28,28,24,24,24,24,20,20,20,20,16,16,16,16]3031; XOPAVX2-NEXT:    retq3032  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 28, i32 28, i32 28, i32 28, i32 24, i32 24, i32 24, i32 24, i32 20, i32 20, i32 20, i32 20, i32 16, i32 16, i32 16, i32 16>3033  ret <32 x i8> %shuffle3034}3035 3036define <32 x i8> @shuffle_v32i8_08_08_08_08_08_08_08_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24(<32 x i8> %a, <32 x i8> %b) {3037; AVX1-LABEL: shuffle_v32i8_08_08_08_08_08_08_08_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24:3038; AVX1:       # %bb.0:3039; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0]3040; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03041; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8]3042; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03043; AVX1-NEXT:    retq3044;3045; AVX2OR512VL-LABEL: shuffle_v32i8_08_08_08_08_08_08_08_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24:3046; AVX2OR512VL:       # %bb.0:3047; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]3048; AVX2OR512VL-NEXT:    retq3049;3050; XOPAVX1-LABEL: shuffle_v32i8_08_08_08_08_08_08_08_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24:3051; XOPAVX1:       # %bb.0:3052; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0]3053; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03054; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8]3055; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03056; XOPAVX1-NEXT:    retq3057;3058; XOPAVX2-LABEL: shuffle_v32i8_08_08_08_08_08_08_08_08_00_00_00_00_00_00_00_00_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24:3059; XOPAVX2:       # %bb.0:3060; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]3061; XOPAVX2-NEXT:    retq3062  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24>3063  ret <32 x i8> %shuffle3064}3065 3066define <32 x i8> @shuffle_v32i8_00_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_16_16_16_16_uu_uu_uu_uu_uu_16_16_16_16_16_30_16(<32 x i8> %a, <32 x i8> %b) {3067; AVX1-LABEL: shuffle_v32i8_00_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_16_16_16_16_uu_uu_uu_uu_uu_16_16_16_16_16_30_16:3068; AVX1:       # %bb.0:3069; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm13070; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,0,0,0,u,u,u,u,u,0,0,0,0,0,14,0]3071; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03072; AVX1-NEXT:    retq3073;3074; AVX2OR512VL-LABEL: shuffle_v32i8_00_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_16_16_16_16_uu_uu_uu_uu_uu_16_16_16_16_16_30_16:3075; AVX2OR512VL:       # %bb.0:3076; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,16,16,16,u,u,u,u,u,16,16,16,16,16,30,16]3077; AVX2OR512VL-NEXT:    retq3078;3079; XOPAVX1-LABEL: shuffle_v32i8_00_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_16_16_16_16_uu_uu_uu_uu_uu_16_16_16_16_16_30_16:3080; XOPAVX1:       # %bb.0:3081; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm13082; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,0,0,0,u,u,u,u,u,0,0,0,0,0,14,0]3083; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03084; XOPAVX1-NEXT:    retq3085;3086; XOPAVX2-LABEL: shuffle_v32i8_00_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_16_16_16_16_uu_uu_uu_uu_uu_16_16_16_16_16_30_16:3087; XOPAVX2:       # %bb.0:3088; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,16,16,16,u,u,u,u,u,16,16,16,16,16,30,16]3089; XOPAVX2-NEXT:    retq3090  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 16, i32 16, i32 16, i32 16, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 16, i32 16, i32 16, i32 16, i32 16, i32 30, i32 16>3091  ret <32 x i8> %shuffle3092}3093 3094define <32 x i8> @shuffle_v32i8_uu_14_uu_uu_00_00_00_00_00_00_00_00_00_00_00_00_16_16_uu_16_uu_uu_uu_uu_16_16_16_16_16_16_30_16(<32 x i8> %a, <32 x i8> %b) {3095; AVX1-LABEL: shuffle_v32i8_uu_14_uu_uu_00_00_00_00_00_00_00_00_00_00_00_00_16_16_uu_16_uu_uu_uu_uu_16_16_16_16_16_16_30_16:3096; AVX1:       # %bb.0:3097; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[14,14,1,1,0,0,0,0,0,0,0,0,0,0,0,0]3098; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03099; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,u,0,u,u,u,u,0,0,0,0,0,0,14,0]3100; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03101; AVX1-NEXT:    retq3102;3103; AVX2OR512VL-LABEL: shuffle_v32i8_uu_14_uu_uu_00_00_00_00_00_00_00_00_00_00_00_00_16_16_uu_16_uu_uu_uu_uu_16_16_16_16_16_16_30_16:3104; AVX2OR512VL:       # %bb.0:3105; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[u,14,u,u,0,0,0,0,0,0,0,0,0,0,0,0,16,16,u,16,u,u,u,u,16,16,16,16,16,16,30,16]3106; AVX2OR512VL-NEXT:    retq3107;3108; XOPAVX1-LABEL: shuffle_v32i8_uu_14_uu_uu_00_00_00_00_00_00_00_00_00_00_00_00_16_16_uu_16_uu_uu_uu_uu_16_16_16_16_16_16_30_16:3109; XOPAVX1:       # %bb.0:3110; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[14,14,1,1,0,0,0,0,0,0,0,0,0,0,0,0]3111; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03112; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,u,0,u,u,u,u,0,0,0,0,0,0,14,0]3113; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03114; XOPAVX1-NEXT:    retq3115;3116; XOPAVX2-LABEL: shuffle_v32i8_uu_14_uu_uu_00_00_00_00_00_00_00_00_00_00_00_00_16_16_uu_16_uu_uu_uu_uu_16_16_16_16_16_16_30_16:3117; XOPAVX2:       # %bb.0:3118; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[u,14,u,u,0,0,0,0,0,0,0,0,0,0,0,0,16,16,u,16,u,u,u,u,16,16,16,16,16,16,30,16]3119; XOPAVX2-NEXT:    retq3120  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 poison, i32 14, i32 poison, i32 poison, 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 16, i32 poison, i32 16, i32 poison, i32 poison, i32 poison, i32 poison, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 30, i32 16>3121  ret <32 x i8> %shuffle3122}3123 3124define <32 x i8> @shuffle_v32i8_00_00_00_uu_uu_uu_04_uu_08_08_08_08_uu_uu_12_uu_28_28_28_28_uu_uu_uu_24_20_20_20_20_16_16_16_16(<32 x i8> %a, <32 x i8> %b) {3125; AVX1-LABEL: shuffle_v32i8_00_00_00_uu_uu_uu_04_uu_08_08_08_08_uu_uu_12_uu_28_28_28_28_uu_uu_uu_24_20_20_20_20_16_16_16_16:3126; AVX1:       # %bb.0:3127; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12]3128; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03129; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[12,12,12,12,8,8,8,8,4,4,4,4,0,0,0,0]3130; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03131; AVX1-NEXT:    retq3132;3133; AVX2OR512VL-LABEL: shuffle_v32i8_00_00_00_uu_uu_uu_04_uu_08_08_08_08_uu_uu_12_uu_28_28_28_28_uu_uu_uu_24_20_20_20_20_16_16_16_16:3134; AVX2OR512VL:       # %bb.0:3135; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,u,u,u,4,u,8,8,8,8,u,u,12,u,28,28,28,28,u,u,u,24,20,20,20,20,16,16,16,16]3136; AVX2OR512VL-NEXT:    retq3137;3138; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_uu_uu_uu_04_uu_08_08_08_08_uu_uu_12_uu_28_28_28_28_uu_uu_uu_24_20_20_20_20_16_16_16_16:3139; XOPAVX1:       # %bb.0:3140; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12]3141; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03142; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[12,12,12,12,8,8,8,8,4,4,4,4,0,0,0,0]3143; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03144; XOPAVX1-NEXT:    retq3145;3146; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_uu_uu_uu_04_uu_08_08_08_08_uu_uu_12_uu_28_28_28_28_uu_uu_uu_24_20_20_20_20_16_16_16_16:3147; XOPAVX2:       # %bb.0:3148; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,u,u,u,4,u,8,8,8,8,u,u,12,u,28,28,28,28,u,u,u,24,20,20,20,20,16,16,16,16]3149; XOPAVX2-NEXT:    retq3150  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 0, i32 0, i32 poison, i32 poison, i32 poison, i32 4, i32 poison, i32 8, i32 8, i32 8, i32 8, i32 poison, i32 poison, i32 12, i32 poison, i32 28, i32 28, i32 28, i32 28, i32 poison, i32 poison, i32 poison, i32 24, i32 20, i32 20, i32 20, i32 20, i32 16, i32 16, i32 16, i32 16>3151  ret <32 x i8> %shuffle3152}3153 3154define <32 x i8> @shuffle_v32i8_08_08_08_08_08_08_08_08_uu_uu_uu_uu_uu_uu_uu_uu_16_16_16_uu_uu_uu_uu_uu_uu_uu_24_24_24_24_24_24(<32 x i8> %a, <32 x i8> %b) {3155; AVX1-LABEL: shuffle_v32i8_08_08_08_08_08_08_08_08_uu_uu_uu_uu_uu_uu_uu_uu_16_16_16_uu_uu_uu_uu_uu_uu_uu_24_24_24_24_24_24:3156; AVX1:       # %bb.0:3157; AVX1-NEXT:    vpunpckhbw {{.*#+}} xmm1 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3158; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]3159; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03160; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8]3161; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03162; AVX1-NEXT:    retq3163;3164; AVX2OR512VL-LABEL: shuffle_v32i8_08_08_08_08_08_08_08_08_uu_uu_uu_uu_uu_uu_uu_uu_16_16_16_uu_uu_uu_uu_uu_uu_uu_24_24_24_24_24_24:3165; AVX2OR512VL:       # %bb.0:3166; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[8,8,8,8,8,8,8,8,u,u,u,u,u,u,u,u,16,16,16,u,u,u,u,u,u,u,24,24,24,24,24,24]3167; AVX2OR512VL-NEXT:    retq3168;3169; XOPAVX1-LABEL: shuffle_v32i8_08_08_08_08_08_08_08_08_uu_uu_uu_uu_uu_uu_uu_uu_16_16_16_uu_uu_uu_uu_uu_uu_uu_24_24_24_24_24_24:3170; XOPAVX1:       # %bb.0:3171; XOPAVX1-NEXT:    vpunpckhbw {{.*#+}} xmm1 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3172; XOPAVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]3173; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03174; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8]3175; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03176; XOPAVX1-NEXT:    retq3177;3178; XOPAVX2-LABEL: shuffle_v32i8_08_08_08_08_08_08_08_08_uu_uu_uu_uu_uu_uu_uu_uu_16_16_16_uu_uu_uu_uu_uu_uu_uu_24_24_24_24_24_24:3179; XOPAVX2:       # %bb.0:3180; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[8,8,8,8,8,8,8,8,u,u,u,u,u,u,u,u,16,16,16,u,u,u,u,u,u,u,24,24,24,24,24,24]3181; XOPAVX2-NEXT:    retq3182  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 16, i32 16, i32 16, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24>3183  ret <32 x i8> %shuffle3184}3185 3186define <32 x i8> @shuffle_v32i8_42_45_12_13_35_35_60_40_17_22_29_44_33_12_48_51_20_19_52_19_49_54_37_32_48_42_59_07_36_34_36_39(<32 x i8> %a, <32 x i8> %b) {3187; AVX1-LABEL: shuffle_v32i8_42_45_12_13_35_35_60_40_17_22_29_44_33_12_48_51_20_19_52_19_49_54_37_32_48_42_59_07_36_34_36_39:3188; AVX1:       # %bb.0:3189; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm23190; AVX1-NEXT:    vpshufb {{.*#+}} xmm3 = xmm2[u,u,4,u,1,6],zero,zero,xmm2[0],zero,xmm2[11,u],zero,zero,zero,zero3191; AVX1-NEXT:    vpshufb {{.*#+}} xmm4 = xmm1[u,u],zero,xmm1[u],zero,zero,xmm1[5,0],zero,xmm1[10],zero,xmm1[u,4,2,4,7]3192; AVX1-NEXT:    vpor %xmm3, %xmm4, %xmm33193; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm43194; AVX1-NEXT:    vpunpcklbw {{.*#+}} xmm5 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3],xmm4[4],xmm0[4],xmm4[5],xmm0[5],xmm4[6],xmm0[6],xmm4[7],xmm0[7]3195; AVX1-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[8,6,u,6,u,u,u,u,u,u,u,15,u,u,u,u]3196; AVX1-NEXT:    vmovdqa {{.*#+}} xmm6 = [0,0,255,0,255,255,255,255,255,255,255,0,255,255,255,255]3197; AVX1-NEXT:    vpblendvb %xmm6, %xmm3, %xmm5, %xmm33198; AVX1-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[u,u],zero,zero,xmm2[12],zero,xmm2[u,u,u],zero,zero,xmm2[u,0,3]3199; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[10,13,u,u,3,3],zero,xmm1[8,u,u,u,12,1,u],zero,zero3200; AVX1-NEXT:    vpor %xmm2, %xmm1, %xmm13201; AVX1-NEXT:    vpshufb {{.*#+}} xmm2 = xmm4[u,u],zero,zero,xmm4[u,u,u,u,1,6,13,u,u],zero,xmm4[u,u]3202; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,12,13,u,u,u,u],zero,zero,zero,xmm0[u,u,12,u,u]3203; AVX1-NEXT:    vpor %xmm2, %xmm0, %xmm03204; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [255,255,0,0,255,255,255,255,0,0,0,255,255,0,255,255]3205; AVX1-NEXT:    vpblendvb %xmm2, %xmm1, %xmm0, %xmm03206; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm03207; AVX1-NEXT:    retq3208;3209; AVX2-LABEL: shuffle_v32i8_42_45_12_13_35_35_60_40_17_22_29_44_33_12_48_51_20_19_52_19_49_54_37_32_48_42_59_07_36_34_36_39:3210; AVX2:       # %bb.0:3211; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[u,12,12,13,1,6,13,7,u,u,u,u,u,u,u,u,u,u,u,u,17,22,29,23,20,19,u,19,u,u,u,u]3212; AVX2-NEXT:    vpmovsxbq {{.*#+}} ymm2 = [0,5,6,1]3213; AVX2-NEXT:    vpermd %ymm0, %ymm2, %ymm03214; AVX2-NEXT:    vpshufb {{.*#+}} ymm2 = ymm1[10,13],zero,zero,ymm1[3,3],zero,ymm1[8],zero,zero,zero,ymm1[12,1],zero,zero,zero,zero,zero,ymm1[20],zero,ymm1[17,22],zero,zero,ymm1[16],zero,ymm1[27],zero,zero,zero,zero,zero3215; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,0,1]3216; AVX2-NEXT:    vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,zero,zero,ymm1[12],zero,zero,zero,zero,zero,zero,zero,ymm1[0,3],zero,zero,zero,zero,zero,zero,ymm1[21,16],zero,ymm1[26],zero,zero,ymm1[20,18,20,23]3217; AVX2-NEXT:    vpor %ymm1, %ymm2, %ymm13218; AVX2-NEXT:    vmovdqa {{.*#+}} ymm2 = [255,255,0,0,255,255,255,255,0,0,0,255,255,0,255,255,0,0,255,0,255,255,255,255,255,255,255,0,255,255,255,255]3219; AVX2-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm03220; AVX2-NEXT:    retq3221;3222; AVX512VLBW-LABEL: shuffle_v32i8_42_45_12_13_35_35_60_40_17_22_29_44_33_12_48_51_20_19_52_19_49_54_37_32_48_42_59_07_36_34_36_39:3223; AVX512VLBW:       # %bb.0:3224; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[u,12,12,13,1,6,13,7,u,u,u,u,u,u,u,u,u,u,u,u,17,22,29,23,20,19,u,19,u,u,u,u]3225; AVX512VLBW-NEXT:    vpmovsxbq {{.*#+}} ymm2 = [0,5,6,1]3226; AVX512VLBW-NEXT:    vpermd %ymm0, %ymm2, %ymm23227; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm1[10,13],zero,zero,ymm1[3,3],zero,ymm1[8],zero,zero,zero,ymm1[12,1],zero,zero,zero,zero,zero,ymm1[20],zero,ymm1[17,22],zero,zero,ymm1[16],zero,ymm1[27],zero,zero,zero,zero,zero3228; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,0,1]3229; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,zero,zero,ymm1[12],zero,zero,zero,zero,zero,zero,zero,ymm1[0,3],zero,zero,zero,zero,zero,zero,ymm1[21,16],zero,ymm1[26],zero,zero,ymm1[20,18,20,23]3230; AVX512VLBW-NEXT:    vpor %ymm0, %ymm1, %ymm03231; AVX512VLBW-NEXT:    movl $134948620, %eax # imm = 0x80B270C3232; AVX512VLBW-NEXT:    kmovd %eax, %k13233; AVX512VLBW-NEXT:    vmovdqu8 %ymm2, %ymm0 {%k1}3234; AVX512VLBW-NEXT:    retq3235;3236; AVX512VLVBMI-LABEL: shuffle_v32i8_42_45_12_13_35_35_60_40_17_22_29_44_33_12_48_51_20_19_52_19_49_54_37_32_48_42_59_07_36_34_36_39:3237; AVX512VLVBMI:       # %bb.0:3238; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [10,13,44,45,3,3,28,8,49,54,61,12,1,44,16,19,52,51,20,51,17,22,5,0,16,10,27,39,4,2,4,7]3239; AVX512VLVBMI-NEXT:    vpermi2b %ymm0, %ymm1, %ymm23240; AVX512VLVBMI-NEXT:    vmovdqa %ymm2, %ymm03241; AVX512VLVBMI-NEXT:    retq3242;3243; XOPAVX1-LABEL: shuffle_v32i8_42_45_12_13_35_35_60_40_17_22_29_44_33_12_48_51_20_19_52_19_49_54_37_32_48_42_59_07_36_34_36_39:3244; XOPAVX1:       # %bb.0:3245; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm23246; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm3 = xmm1[u,u],xmm2[4],xmm1[u],xmm2[1,6],xmm1[5,0],xmm2[0],xmm1[10],xmm2[11],xmm1[u,4,2,4,7]3247; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm43248; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm5 = xmm4[4,3,u,3,u,u,u,u,u,u,u],xmm0[7],xmm4[u,u,u,u]3249; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm6 = [0,0,255,0,255,255,255,255,255,255,255,0,255,255,255,255]3250; XOPAVX1-NEXT:    vpblendvb %xmm6, %xmm3, %xmm5, %xmm33251; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm1 = xmm1[10,13,u,u,3,3],xmm2[12],xmm1[8,u,u,u,12,1,u],xmm2[0,3]3252; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[u,u,12,13,u,u,u,u],xmm4[1,6,13],xmm0[u,u,12,u,u]3253; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [255,255,0,0,255,255,255,255,0,0,0,255,255,0,255,255]3254; XOPAVX1-NEXT:    vpblendvb %xmm2, %xmm1, %xmm0, %xmm03255; XOPAVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm03256; XOPAVX1-NEXT:    retq3257;3258; XOPAVX2-LABEL: shuffle_v32i8_42_45_12_13_35_35_60_40_17_22_29_44_33_12_48_51_20_19_52_19_49_54_37_32_48_42_59_07_36_34_36_39:3259; XOPAVX2:       # %bb.0:3260; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[u,12,12,13,1,6,13,7,u,u,u,u,u,u,u,u,u,u,u,u,17,22,29,23,20,19,u,19,u,u,u,u]3261; XOPAVX2-NEXT:    vpmovsxbq {{.*#+}} ymm2 = [0,5,6,1]3262; XOPAVX2-NEXT:    vpermd %ymm0, %ymm2, %ymm03263; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm2 = ymm1[10,13],zero,zero,ymm1[3,3],zero,ymm1[8],zero,zero,zero,ymm1[12,1],zero,zero,zero,zero,zero,ymm1[20],zero,ymm1[17,22],zero,zero,ymm1[16],zero,ymm1[27],zero,zero,zero,zero,zero3264; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,0,1]3265; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,zero,zero,ymm1[12],zero,zero,zero,zero,zero,zero,zero,ymm1[0,3],zero,zero,zero,zero,zero,zero,ymm1[21,16],zero,ymm1[26],zero,zero,ymm1[20,18,20,23]3266; XOPAVX2-NEXT:    vpor %ymm1, %ymm2, %ymm13267; XOPAVX2-NEXT:    vmovdqa {{.*#+}} ymm2 = [255,255,0,0,255,255,255,255,0,0,0,255,255,0,255,255,0,0,255,0,255,255,255,255,255,255,255,0,255,255,255,255]3268; XOPAVX2-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm03269; XOPAVX2-NEXT:    retq3270  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 42, i32 45, i32 12, i32 13, i32 35, i32 35, i32 60, i32 40, i32 17, i32 22, i32 29, i32 44, i32 33, i32 12, i32 48, i32 51, i32 20, i32 19, i32 52, i32 19, i32 49, i32 54, i32 37, i32 32, i32 48, i32 42, i32 59, i32 7, i32 36, i32 34, i32 36, i32 39>3271  ret <32 x i8> %shuffle3272}3273 3274define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_32_32_32_32_32_32_32_32_40_40_40_40_40_40_40_40(<32 x i8> %a, <32 x i8> %b) {3275; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_32_32_32_32_32_32_32_32_40_40_40_40_40_40_40_40:3276; AVX1:       # %bb.0:3277; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8]3278; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm13279; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm03280; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03281; AVX1-NEXT:    retq3282;3283; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_32_32_32_32_32_32_32_32_40_40_40_40_40_40_40_40:3284; AVX2:       # %bb.0:3285; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm03286; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]3287; AVX2-NEXT:    retq3288;3289; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_32_32_32_32_32_32_32_32_40_40_40_40_40_40_40_40:3290; AVX512VLBW:       # %bb.0:3291; AVX512VLBW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm03292; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]3293; AVX512VLBW-NEXT:    retq3294;3295; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_32_32_32_32_32_32_32_32_40_40_40_40_40_40_40_40:3296; AVX512VLVBMI:       # %bb.0:3297; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40]3298; AVX512VLVBMI-NEXT:    vpermt2b %ymm1, %ymm2, %ymm03299; AVX512VLVBMI-NEXT:    retq3300;3301; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_32_32_32_32_32_32_32_32_40_40_40_40_40_40_40_40:3302; XOPAVX1:       # %bb.0:3303; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8]3304; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm13305; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm03306; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03307; XOPAVX1-NEXT:    retq3308;3309; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_32_32_32_32_32_32_32_32_40_40_40_40_40_40_40_40:3310; XOPAVX2:       # %bb.0:3311; XOPAVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm03312; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]3313; XOPAVX2-NEXT:    retq3314  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 40, i32 40, i32 40, i32 40, i32 40, i32 40, i32 40, i32 40>3315  ret <32 x i8> %shuffle3316}3317 3318define <32 x i8> @shuffle_v32i8_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24_32_32_32_32_32_32_32_32_40_40_40_40_40_40_40_40(<32 x i8> %a, <32 x i8> %b) {3319; AVX1-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24_32_32_32_32_32_32_32_32_40_40_40_40_40_40_40_40:3320; AVX1:       # %bb.0:3321; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8]3322; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm13323; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03324; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm03325; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03326; AVX1-NEXT:    retq3327;3328; AVX2-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24_32_32_32_32_32_32_32_32_40_40_40_40_40_40_40_40:3329; AVX2:       # %bb.0:3330; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[0,1]3331; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]3332; AVX2-NEXT:    retq3333;3334; AVX512VLBW-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24_32_32_32_32_32_32_32_32_40_40_40_40_40_40_40_40:3335; AVX512VLBW:       # %bb.0:3336; AVX512VLBW-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[0,1]3337; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]3338; AVX512VLBW-NEXT:    retq3339;3340; AVX512VLVBMI-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24_32_32_32_32_32_32_32_32_40_40_40_40_40_40_40_40:3341; AVX512VLVBMI:       # %bb.0:3342; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40]3343; AVX512VLVBMI-NEXT:    vpermt2b %ymm1, %ymm2, %ymm03344; AVX512VLVBMI-NEXT:    retq3345;3346; XOPAVX1-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24_32_32_32_32_32_32_32_32_40_40_40_40_40_40_40_40:3347; XOPAVX1:       # %bb.0:3348; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8]3349; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm13350; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03351; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm03352; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03353; XOPAVX1-NEXT:    retq3354;3355; XOPAVX2-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24_32_32_32_32_32_32_32_32_40_40_40_40_40_40_40_40:3356; XOPAVX2:       # %bb.0:3357; XOPAVX2-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[0,1]3358; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]3359; XOPAVX2-NEXT:    retq3360  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 40, i32 40, i32 40, i32 40, i32 40, i32 40, i32 40, i32 40>3361  ret <32 x i8> %shuffle3362}3363 3364define <32 x i8> @shuffle_v32i8_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24_48_48_48_48_48_48_48_48_56_56_56_56_56_56_56_56(<32 x i8> %a, <32 x i8> %b) {3365; AVX1-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24_48_48_48_48_48_48_48_48_56_56_56_56_56_56_56_56:3366; AVX1:       # %bb.0:3367; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm13368; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8]3369; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm13370; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03371; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm03372; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03373; AVX1-NEXT:    retq3374;3375; AVX2-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24_48_48_48_48_48_48_48_48_56_56_56_56_56_56_56_56:3376; AVX2:       # %bb.0:3377; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[2,3]3378; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]3379; AVX2-NEXT:    retq3380;3381; AVX512VLBW-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24_48_48_48_48_48_48_48_48_56_56_56_56_56_56_56_56:3382; AVX512VLBW:       # %bb.0:3383; AVX512VLBW-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[2,3]3384; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]3385; AVX512VLBW-NEXT:    retq3386;3387; AVX512VLVBMI-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24_48_48_48_48_48_48_48_48_56_56_56_56_56_56_56_56:3388; AVX512VLVBMI:       # %bb.0:3389; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,48,48,48,48,48,48,48,48,56,56,56,56,56,56,56,56]3390; AVX512VLVBMI-NEXT:    vpermt2b %ymm1, %ymm2, %ymm03391; AVX512VLVBMI-NEXT:    retq3392;3393; XOPAVX1-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24_48_48_48_48_48_48_48_48_56_56_56_56_56_56_56_56:3394; XOPAVX1:       # %bb.0:3395; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm13396; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8]3397; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm13398; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03399; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm03400; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03401; XOPAVX1-NEXT:    retq3402;3403; XOPAVX2-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_24_24_24_24_24_24_24_24_48_48_48_48_48_48_48_48_56_56_56_56_56_56_56_56:3404; XOPAVX2:       # %bb.0:3405; XOPAVX2-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[2,3]3406; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]3407; XOPAVX2-NEXT:    retq3408  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48, i32 56, i32 56, i32 56, i32 56, i32 56, i32 56, i32 56, i32 56>3409  ret <32 x i8> %shuffle3410}3411 3412define <32 x i8> @shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_48_48_48_48_48_48_48_48_56_56_56_56_56_56_56_56(<32 x i8> %a, <32 x i8> %b) {3413; AVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_48_48_48_48_48_48_48_48_56_56_56_56_56_56_56_56:3414; AVX1:       # %bb.0:3415; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm13416; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8]3417; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm13418; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm03419; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03420; AVX1-NEXT:    retq3421;3422; AVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_48_48_48_48_48_48_48_48_56_56_56_56_56_56_56_56:3423; AVX2:       # %bb.0:3424; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]3425; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]3426; AVX2-NEXT:    retq3427;3428; AVX512VLBW-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_48_48_48_48_48_48_48_48_56_56_56_56_56_56_56_56:3429; AVX512VLBW:       # %bb.0:3430; AVX512VLBW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]3431; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]3432; AVX512VLBW-NEXT:    retq3433;3434; AVX512VLVBMI-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_48_48_48_48_48_48_48_48_56_56_56_56_56_56_56_56:3435; AVX512VLVBMI:       # %bb.0:3436; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,48,48,48,48,48,48,48,48,56,56,56,56,56,56,56,56]3437; AVX512VLVBMI-NEXT:    vpermt2b %ymm1, %ymm2, %ymm03438; AVX512VLVBMI-NEXT:    retq3439;3440; XOPAVX1-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_48_48_48_48_48_48_48_48_56_56_56_56_56_56_56_56:3441; XOPAVX1:       # %bb.0:3442; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm13443; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8]3444; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm13445; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm03446; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03447; XOPAVX1-NEXT:    retq3448;3449; XOPAVX2-LABEL: shuffle_v32i8_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_48_48_48_48_48_48_48_48_56_56_56_56_56_56_56_56:3450; XOPAVX2:       # %bb.0:3451; XOPAVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]3452; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24]3453; XOPAVX2-NEXT:    retq3454  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48, i32 56, i32 56, i32 56, i32 56, i32 56, i32 56, i32 56, i32 56>3455  ret <32 x i8> %shuffle3456}3457 3458define <32 x i8> @shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47(<32 x i8> %a, <32 x i8> %b) {3459; AVX1-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47:3460; AVX1:       # %bb.0:3461; AVX1-NEXT:    vpunpckhbw {{.*#+}} xmm2 = 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]3462; AVX1-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]3463; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm03464; AVX1-NEXT:    retq3465;3466; AVX2-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47:3467; AVX2:       # %bb.0:3468; AVX2-NEXT:    vpunpckhbw {{.*#+}} xmm2 = 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]3469; AVX2-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]3470; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm03471; AVX2-NEXT:    retq3472;3473; AVX512VLBW-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47:3474; AVX512VLBW:       # %bb.0:3475; AVX512VLBW-NEXT:    vpunpckhbw {{.*#+}} xmm2 = 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]3476; AVX512VLBW-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]3477; AVX512VLBW-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm03478; AVX512VLBW-NEXT:    retq3479;3480; AVX512VLVBMI-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47:3481; AVX512VLVBMI:       # %bb.0:3482; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,32,1,33,2,34,3,35,4,36,5,37,6,38,7,39,8,40,9,41,10,42,11,43,12,44,13,45,14,46,15,47]3483; AVX512VLVBMI-NEXT:    vpermt2b %ymm1, %ymm2, %ymm03484; AVX512VLVBMI-NEXT:    retq3485;3486; XOPAVX1-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47:3487; XOPAVX1:       # %bb.0:3488; XOPAVX1-NEXT:    vpunpckhbw {{.*#+}} xmm2 = 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]3489; XOPAVX1-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]3490; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm03491; XOPAVX1-NEXT:    retq3492;3493; XOPAVX2-LABEL: shuffle_v32i8_00_32_01_33_02_34_03_35_04_36_05_37_06_38_07_39_08_40_09_41_10_42_11_43_12_44_13_45_14_46_15_47:3494; XOPAVX2:       # %bb.0:3495; XOPAVX2-NEXT:    vpunpckhbw {{.*#+}} xmm2 = 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]3496; XOPAVX2-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]3497; XOPAVX2-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm03498; XOPAVX2-NEXT:    retq3499  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47>3500  ret <32 x i8> %shuffle3501}3502 3503define <32 x i8> @shuffle_v32i8_15_14_13_12_11_10_09_08_07_06_05_04_03_02_01_00_32_34_36_38_40_42_44_46_33_35_37_39_41_43_45_47(<32 x i8> %a, <32 x i8> %b) {3504; AVX1-LABEL: shuffle_v32i8_15_14_13_12_11_10_09_08_07_06_05_04_03_02_01_00_32_34_36_38_40_42_44_46_33_35_37_39_41_43_45_47:3505; AVX1:       # %bb.0:3506; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0]3507; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,2,4,6,8,10,12,14,1,3,5,7,9,11,13,15]3508; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03509; AVX1-NEXT:    retq3510;3511; AVX2-LABEL: shuffle_v32i8_15_14_13_12_11_10_09_08_07_06_05_04_03_02_01_00_32_34_36_38_40_42_44_46_33_35_37_39_41_43_45_47:3512; AVX2:       # %bb.0:3513; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm03514; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,16,18,20,22,24,26,28,30,17,19,21,23,25,27,29,31]3515; AVX2-NEXT:    retq3516;3517; AVX512VLBW-LABEL: shuffle_v32i8_15_14_13_12_11_10_09_08_07_06_05_04_03_02_01_00_32_34_36_38_40_42_44_46_33_35_37_39_41_43_45_47:3518; AVX512VLBW:       # %bb.0:3519; AVX512VLBW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm03520; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,16,18,20,22,24,26,28,30,17,19,21,23,25,27,29,31]3521; AVX512VLBW-NEXT:    retq3522;3523; AVX512VLVBMI-LABEL: shuffle_v32i8_15_14_13_12_11_10_09_08_07_06_05_04_03_02_01_00_32_34_36_38_40_42_44_46_33_35_37_39_41_43_45_47:3524; AVX512VLVBMI:       # %bb.0:3525; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,32,34,36,38,40,42,44,46,33,35,37,39,41,43,45,47]3526; AVX512VLVBMI-NEXT:    vpermt2b %ymm1, %ymm2, %ymm03527; AVX512VLVBMI-NEXT:    retq3528;3529; XOPAVX1-LABEL: shuffle_v32i8_15_14_13_12_11_10_09_08_07_06_05_04_03_02_01_00_32_34_36_38_40_42_44_46_33_35_37_39_41_43_45_47:3530; XOPAVX1:       # %bb.0:3531; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0]3532; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,2,4,6,8,10,12,14,1,3,5,7,9,11,13,15]3533; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03534; XOPAVX1-NEXT:    retq3535;3536; XOPAVX2-LABEL: shuffle_v32i8_15_14_13_12_11_10_09_08_07_06_05_04_03_02_01_00_32_34_36_38_40_42_44_46_33_35_37_39_41_43_45_47:3537; XOPAVX2:       # %bb.0:3538; XOPAVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm03539; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,16,18,20,22,24,26,28,30,17,19,21,23,25,27,29,31]3540; XOPAVX2-NEXT:    retq3541  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 32, i32 34, i32 36, i32 38, i32 40, i32 42, i32 44, i32 46, i32 33, i32 35, i32 37, i32 39, i32 41, i32 43, i32 45, i32 47>3542  ret <32 x i8> %shuffle3543}3544 3545define <32 x i8> @shuffle_v32i8_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_32_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_48(<32 x i8> %a) {3546; AVX1-LABEL: shuffle_v32i8_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_32_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_48:3547; AVX1:       # %bb.0:3548; AVX1-NEXT:    vpslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0]3549; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03550; AVX1-NEXT:    vpslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0]3551; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03552; AVX1-NEXT:    retq3553;3554; AVX2OR512VL-LABEL: shuffle_v32i8_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_32_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_48:3555; AVX2OR512VL:       # %bb.0:3556; AVX2OR512VL-NEXT:    vpslldq {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[16]3557; AVX2OR512VL-NEXT:    retq3558;3559; XOPAVX1-LABEL: shuffle_v32i8_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_32_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_48:3560; XOPAVX1:       # %bb.0:3561; XOPAVX1-NEXT:    vpslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0]3562; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03563; XOPAVX1-NEXT:    vpslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0]3564; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03565; XOPAVX1-NEXT:    retq3566;3567; XOPAVX2-LABEL: shuffle_v32i8_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_32_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_48:3568; XOPAVX2:       # %bb.0:3569; XOPAVX2-NEXT:    vpslldq {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[16]3570; XOPAVX2-NEXT:    retq3571  %shuffle = shufflevector <32 x i8> zeroinitializer, <32 x i8> %a, <32 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 32, 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 48>3572  ret <32 x i8> %shuffle3573}3574 3575define <32 x i8> @shuffle_v32i8_47_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_63_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz(<32 x i8> %a) {3576; AVX1-LABEL: shuffle_v32i8_47_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_63_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz:3577; AVX1:       # %bb.0:3578; AVX1-NEXT:    vpsrldq {{.*#+}} xmm1 = xmm0[15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero3579; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03580; AVX1-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero3581; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03582; AVX1-NEXT:    retq3583;3584; AVX2OR512VL-LABEL: shuffle_v32i8_47_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_63_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz:3585; AVX2OR512VL:       # %bb.0:3586; AVX2OR512VL-NEXT:    vpsrldq {{.*#+}} ymm0 = ymm0[15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero3587; AVX2OR512VL-NEXT:    retq3588;3589; XOPAVX1-LABEL: shuffle_v32i8_47_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_63_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz:3590; XOPAVX1:       # %bb.0:3591; XOPAVX1-NEXT:    vpsrldq {{.*#+}} xmm1 = xmm0[15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero3592; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03593; XOPAVX1-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero3594; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03595; XOPAVX1-NEXT:    retq3596;3597; XOPAVX2-LABEL: shuffle_v32i8_47_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_63_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz_zz:3598; XOPAVX2:       # %bb.0:3599; XOPAVX2-NEXT:    vpsrldq {{.*#+}} ymm0 = ymm0[15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero3600; XOPAVX2-NEXT:    retq3601  %shuffle = shufflevector <32 x i8> zeroinitializer, <32 x i8> %a, <32 x i32> <i32 47, 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 63, 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>3602  ret <32 x i8> %shuffle3603}3604 3605;3606; Shuffle to logical bit shifts3607;3608 3609define <32 x i8> @shuffle_v32i8_zz_00_zz_02_zz_04_zz_06_zz_08_zz_10_zz_12_zz_14_zz_16_zz_18_zz_20_zz_22_zz_24_zz_26_zz_28_zz_30(<32 x i8> %a) {3610; AVX1-LABEL: shuffle_v32i8_zz_00_zz_02_zz_04_zz_06_zz_08_zz_10_zz_12_zz_14_zz_16_zz_18_zz_20_zz_22_zz_24_zz_26_zz_28_zz_30:3611; AVX1:       # %bb.0:3612; AVX1-NEXT:    vpsllw $8, %xmm0, %xmm13613; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03614; AVX1-NEXT:    vpsllw $8, %xmm0, %xmm03615; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03616; AVX1-NEXT:    retq3617;3618; AVX2OR512VL-LABEL: shuffle_v32i8_zz_00_zz_02_zz_04_zz_06_zz_08_zz_10_zz_12_zz_14_zz_16_zz_18_zz_20_zz_22_zz_24_zz_26_zz_28_zz_30:3619; AVX2OR512VL:       # %bb.0:3620; AVX2OR512VL-NEXT:    vpsllw $8, %ymm0, %ymm03621; AVX2OR512VL-NEXT:    retq3622;3623; XOPAVX1-LABEL: shuffle_v32i8_zz_00_zz_02_zz_04_zz_06_zz_08_zz_10_zz_12_zz_14_zz_16_zz_18_zz_20_zz_22_zz_24_zz_26_zz_28_zz_30:3624; XOPAVX1:       # %bb.0:3625; XOPAVX1-NEXT:    vpsllw $8, %xmm0, %xmm13626; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03627; XOPAVX1-NEXT:    vpsllw $8, %xmm0, %xmm03628; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03629; XOPAVX1-NEXT:    retq3630;3631; XOPAVX2-LABEL: shuffle_v32i8_zz_00_zz_02_zz_04_zz_06_zz_08_zz_10_zz_12_zz_14_zz_16_zz_18_zz_20_zz_22_zz_24_zz_26_zz_28_zz_30:3632; XOPAVX2:       # %bb.0:3633; XOPAVX2-NEXT:    vpsllw $8, %ymm0, %ymm03634; XOPAVX2-NEXT:    retq3635  %shuffle = shufflevector <32 x i8> %a, <32 x i8> zeroinitializer, <32 x i32> <i32 32, i32 0, i32 32, i32 2, i32 32, i32 4, i32 32, i32 6, i32 32, i32 8, i32 32, i32 10, i32 32, i32 12, i32 32, i32 14, i32 32, i32 16, i32 32, i32 18, i32 32, i32 20, i32 32, i32 22, i32 32, i32 24, i32 32, i32 26, i32 32, i32 28, i32 32, i32 30>3636  ret <32 x i8> %shuffle3637}3638 3639define <32 x i8> @shuffle_v32i8_zz_zz_00_01_zz_zz_04_05_zz_zz_08_09_zz_zz_12_13_zz_zz_16_17_zz_zz_20_21_zz_zz_24_25_zz_zz_28_29(<32 x i8> %a) {3640; AVX1-LABEL: shuffle_v32i8_zz_zz_00_01_zz_zz_04_05_zz_zz_08_09_zz_zz_12_13_zz_zz_16_17_zz_zz_20_21_zz_zz_24_25_zz_zz_28_29:3641; AVX1:       # %bb.0:3642; AVX1-NEXT:    vpslld $16, %xmm0, %xmm13643; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03644; AVX1-NEXT:    vpslld $16, %xmm0, %xmm03645; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03646; AVX1-NEXT:    retq3647;3648; AVX2OR512VL-LABEL: shuffle_v32i8_zz_zz_00_01_zz_zz_04_05_zz_zz_08_09_zz_zz_12_13_zz_zz_16_17_zz_zz_20_21_zz_zz_24_25_zz_zz_28_29:3649; AVX2OR512VL:       # %bb.0:3650; AVX2OR512VL-NEXT:    vpslld $16, %ymm0, %ymm03651; AVX2OR512VL-NEXT:    retq3652;3653; XOPAVX1-LABEL: shuffle_v32i8_zz_zz_00_01_zz_zz_04_05_zz_zz_08_09_zz_zz_12_13_zz_zz_16_17_zz_zz_20_21_zz_zz_24_25_zz_zz_28_29:3654; XOPAVX1:       # %bb.0:3655; XOPAVX1-NEXT:    vpslld $16, %xmm0, %xmm13656; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03657; XOPAVX1-NEXT:    vpslld $16, %xmm0, %xmm03658; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03659; XOPAVX1-NEXT:    retq3660;3661; XOPAVX2-LABEL: shuffle_v32i8_zz_zz_00_01_zz_zz_04_05_zz_zz_08_09_zz_zz_12_13_zz_zz_16_17_zz_zz_20_21_zz_zz_24_25_zz_zz_28_29:3662; XOPAVX2:       # %bb.0:3663; XOPAVX2-NEXT:    vpslld $16, %ymm0, %ymm03664; XOPAVX2-NEXT:    retq3665  %shuffle = shufflevector <32 x i8> %a, <32 x i8> zeroinitializer, <32 x i32> <i32 32, i32 32, i32 0, i32 1, i32 32, i32 32, i32 4, i32 5, i32 32, i32 32, i32 8, i32 9, i32 32, i32 32, i32 12, i32 13, i32 32, i32 32, i32 16, i32 17, i32 32, i32 32, i32 20, i32 21, i32 32, i32 32, i32 24, i32 25, i32 32, i32 32, i32 28, i32 29>3666  ret <32 x i8> %shuffle3667}3668 3669define <32 x i8> @shuffle_v32i8_zz_zz_zz_zz_zz_zz_00_01_zz_zz_zz_zz_zz_zz_08_09_zz_zz_zz_zz_zz_zz_16_17_zz_zz_zz_zz_zz_zz_24_25(<32 x i8> %a) {3670; AVX1-LABEL: shuffle_v32i8_zz_zz_zz_zz_zz_zz_00_01_zz_zz_zz_zz_zz_zz_08_09_zz_zz_zz_zz_zz_zz_16_17_zz_zz_zz_zz_zz_zz_24_25:3671; AVX1:       # %bb.0:3672; AVX1-NEXT:    vpsllq $48, %xmm0, %xmm13673; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03674; AVX1-NEXT:    vpsllq $48, %xmm0, %xmm03675; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03676; AVX1-NEXT:    retq3677;3678; AVX2OR512VL-LABEL: shuffle_v32i8_zz_zz_zz_zz_zz_zz_00_01_zz_zz_zz_zz_zz_zz_08_09_zz_zz_zz_zz_zz_zz_16_17_zz_zz_zz_zz_zz_zz_24_25:3679; AVX2OR512VL:       # %bb.0:3680; AVX2OR512VL-NEXT:    vpsllq $48, %ymm0, %ymm03681; AVX2OR512VL-NEXT:    retq3682;3683; XOPAVX1-LABEL: shuffle_v32i8_zz_zz_zz_zz_zz_zz_00_01_zz_zz_zz_zz_zz_zz_08_09_zz_zz_zz_zz_zz_zz_16_17_zz_zz_zz_zz_zz_zz_24_25:3684; XOPAVX1:       # %bb.0:3685; XOPAVX1-NEXT:    vpsllq $48, %xmm0, %xmm13686; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03687; XOPAVX1-NEXT:    vpsllq $48, %xmm0, %xmm03688; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03689; XOPAVX1-NEXT:    retq3690;3691; XOPAVX2-LABEL: shuffle_v32i8_zz_zz_zz_zz_zz_zz_00_01_zz_zz_zz_zz_zz_zz_08_09_zz_zz_zz_zz_zz_zz_16_17_zz_zz_zz_zz_zz_zz_24_25:3692; XOPAVX2:       # %bb.0:3693; XOPAVX2-NEXT:    vpsllq $48, %ymm0, %ymm03694; XOPAVX2-NEXT:    retq3695  %shuffle = shufflevector <32 x i8> %a, <32 x i8> zeroinitializer, <32 x i32> <i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 0, i32 1, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 8, i32 9, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 16, i32 17, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 24, i32 25>3696  ret <32 x i8> %shuffle3697}3698 3699define <32 x i8> @shuffle_v32i8_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz_17_zz_19_zz_21_zz_23_zz_25_zz_27_zz_29_zz_31_zz(<32 x i8> %a) {3700; AVX1-LABEL: shuffle_v32i8_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz_17_zz_19_zz_21_zz_23_zz_25_zz_27_zz_29_zz_31_zz:3701; AVX1:       # %bb.0:3702; AVX1-NEXT:    vpsrlw $8, %xmm0, %xmm13703; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03704; AVX1-NEXT:    vpsrlw $8, %xmm0, %xmm03705; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03706; AVX1-NEXT:    retq3707;3708; AVX2OR512VL-LABEL: shuffle_v32i8_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz_17_zz_19_zz_21_zz_23_zz_25_zz_27_zz_29_zz_31_zz:3709; AVX2OR512VL:       # %bb.0:3710; AVX2OR512VL-NEXT:    vpsrlw $8, %ymm0, %ymm03711; AVX2OR512VL-NEXT:    retq3712;3713; XOPAVX1-LABEL: shuffle_v32i8_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz_17_zz_19_zz_21_zz_23_zz_25_zz_27_zz_29_zz_31_zz:3714; XOPAVX1:       # %bb.0:3715; XOPAVX1-NEXT:    vpsrlw $8, %xmm0, %xmm13716; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03717; XOPAVX1-NEXT:    vpsrlw $8, %xmm0, %xmm03718; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03719; XOPAVX1-NEXT:    retq3720;3721; XOPAVX2-LABEL: shuffle_v32i8_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz_17_zz_19_zz_21_zz_23_zz_25_zz_27_zz_29_zz_31_zz:3722; XOPAVX2:       # %bb.0:3723; XOPAVX2-NEXT:    vpsrlw $8, %ymm0, %ymm03724; XOPAVX2-NEXT:    retq3725  %shuffle = shufflevector <32 x i8> %a, <32 x i8> zeroinitializer, <32 x i32> <i32 1, i32 32, i32 3, i32 32, i32 5, i32 32, i32 7, i32 32, i32 9, i32 32, i32 11, i32 32, i32 13, i32 32, i32 15, i32 32, i32 17, i32 32, i32 19, i32 32, i32 21, i32 32, i32 23, i32 32, i32 25, i32 32, i32 27, i32 32, i32 29, i32 32, i32 31, i32 32>3726  ret <32 x i8> %shuffle3727}3728 3729define <32 x i8> @shuffle_v32i8_02_03_zz_zz_06_07_zz_zz_10_11_zz_zz_14_15_zz_zz_18_19_zz_zz_22_23_zz_zz_26_27_zz_zz_30_31_zz_zz(<32 x i8> %a) {3730; AVX1-LABEL: shuffle_v32i8_02_03_zz_zz_06_07_zz_zz_10_11_zz_zz_14_15_zz_zz_18_19_zz_zz_22_23_zz_zz_26_27_zz_zz_30_31_zz_zz:3731; AVX1:       # %bb.0:3732; AVX1-NEXT:    vpsrld $16, %xmm0, %xmm13733; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03734; AVX1-NEXT:    vpsrld $16, %xmm0, %xmm03735; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03736; AVX1-NEXT:    retq3737;3738; AVX2OR512VL-LABEL: shuffle_v32i8_02_03_zz_zz_06_07_zz_zz_10_11_zz_zz_14_15_zz_zz_18_19_zz_zz_22_23_zz_zz_26_27_zz_zz_30_31_zz_zz:3739; AVX2OR512VL:       # %bb.0:3740; AVX2OR512VL-NEXT:    vpsrld $16, %ymm0, %ymm03741; AVX2OR512VL-NEXT:    retq3742;3743; XOPAVX1-LABEL: shuffle_v32i8_02_03_zz_zz_06_07_zz_zz_10_11_zz_zz_14_15_zz_zz_18_19_zz_zz_22_23_zz_zz_26_27_zz_zz_30_31_zz_zz:3744; XOPAVX1:       # %bb.0:3745; XOPAVX1-NEXT:    vpsrld $16, %xmm0, %xmm13746; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03747; XOPAVX1-NEXT:    vpsrld $16, %xmm0, %xmm03748; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03749; XOPAVX1-NEXT:    retq3750;3751; XOPAVX2-LABEL: shuffle_v32i8_02_03_zz_zz_06_07_zz_zz_10_11_zz_zz_14_15_zz_zz_18_19_zz_zz_22_23_zz_zz_26_27_zz_zz_30_31_zz_zz:3752; XOPAVX2:       # %bb.0:3753; XOPAVX2-NEXT:    vpsrld $16, %ymm0, %ymm03754; XOPAVX2-NEXT:    retq3755  %shuffle = shufflevector <32 x i8> %a, <32 x i8> zeroinitializer, <32 x i32> <i32 2, i32 3, i32 32, i32 32, i32 6, i32 7, i32 32, i32 32, i32 10, i32 11, i32 32, i32 32, i32 14, i32 15, i32 32, i32 32, i32 18, i32 19, i32 32, i32 32, i32 22, i32 23, i32 32, i32 32, i32 26, i32 27, i32 32, i32 32, i32 30, i32 31, i32 32, i32 32>3756  ret <32 x i8> %shuffle3757}3758 3759define <32 x i8> @shuffle_v32i8_07_zz_zz_zz_zz_zz_zz_zz_15_zz_zz_zz_zz_z_zz_zz_23_zz_zz_zz_zz_zz_zz_zz_31_zz_zz_zz_zz_zz_zz_zz(<32 x i8> %a) {3760; AVX1-LABEL: shuffle_v32i8_07_zz_zz_zz_zz_zz_zz_zz_15_zz_zz_zz_zz_z_zz_zz_23_zz_zz_zz_zz_zz_zz_zz_31_zz_zz_zz_zz_zz_zz_zz:3761; AVX1:       # %bb.0:3762; AVX1-NEXT:    vpsrlq $56, %xmm0, %xmm13763; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03764; AVX1-NEXT:    vpsrlq $56, %xmm0, %xmm03765; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03766; AVX1-NEXT:    retq3767;3768; AVX2OR512VL-LABEL: shuffle_v32i8_07_zz_zz_zz_zz_zz_zz_zz_15_zz_zz_zz_zz_z_zz_zz_23_zz_zz_zz_zz_zz_zz_zz_31_zz_zz_zz_zz_zz_zz_zz:3769; AVX2OR512VL:       # %bb.0:3770; AVX2OR512VL-NEXT:    vpsrlq $56, %ymm0, %ymm03771; AVX2OR512VL-NEXT:    retq3772;3773; XOPAVX1-LABEL: shuffle_v32i8_07_zz_zz_zz_zz_zz_zz_zz_15_zz_zz_zz_zz_z_zz_zz_23_zz_zz_zz_zz_zz_zz_zz_31_zz_zz_zz_zz_zz_zz_zz:3774; XOPAVX1:       # %bb.0:3775; XOPAVX1-NEXT:    vpsrlq $56, %xmm0, %xmm13776; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03777; XOPAVX1-NEXT:    vpsrlq $56, %xmm0, %xmm03778; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03779; XOPAVX1-NEXT:    retq3780;3781; XOPAVX2-LABEL: shuffle_v32i8_07_zz_zz_zz_zz_zz_zz_zz_15_zz_zz_zz_zz_z_zz_zz_23_zz_zz_zz_zz_zz_zz_zz_31_zz_zz_zz_zz_zz_zz_zz:3782; XOPAVX2:       # %bb.0:3783; XOPAVX2-NEXT:    vpsrlq $56, %ymm0, %ymm03784; XOPAVX2-NEXT:    retq3785  %shuffle = shufflevector <32 x i8> %a, <32 x i8> zeroinitializer, <32 x i32> <i32 7, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 15, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 23, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 31, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32>3786  ret <32 x i8> %shuffle3787}3788 3789define <32 x i8> @shuffle_v32i8_32_zz_zz_zz_zz_zz_zz_zz_33_zz_zz_zz_zz_zz_zz_zz_34_zz_zz_zz_zz_zz_zz_zz_35_zz_zz_zz_zz_zz_zz_zz(<32 x i8> %a) {3790; AVX1-LABEL: shuffle_v32i8_32_zz_zz_zz_zz_zz_zz_zz_33_zz_zz_zz_zz_zz_zz_zz_34_zz_zz_zz_zz_zz_zz_zz_35_zz_zz_zz_zz_zz_zz_zz:3791; AVX1:       # %bb.0:3792; AVX1-NEXT:    vpmovzxbq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero3793; AVX1-NEXT:    vpsrld $16, %xmm0, %xmm03794; AVX1-NEXT:    vpmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero3795; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03796; AVX1-NEXT:    retq3797;3798; AVX2OR512VL-LABEL: shuffle_v32i8_32_zz_zz_zz_zz_zz_zz_zz_33_zz_zz_zz_zz_zz_zz_zz_34_zz_zz_zz_zz_zz_zz_zz_35_zz_zz_zz_zz_zz_zz_zz:3799; AVX2OR512VL:       # %bb.0:3800; AVX2OR512VL-NEXT:    vpmovzxbq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero,xmm0[2],zero,zero,zero,zero,zero,zero,zero,xmm0[3],zero,zero,zero,zero,zero,zero,zero3801; AVX2OR512VL-NEXT:    retq3802;3803; XOPAVX1-LABEL: shuffle_v32i8_32_zz_zz_zz_zz_zz_zz_zz_33_zz_zz_zz_zz_zz_zz_zz_34_zz_zz_zz_zz_zz_zz_zz_35_zz_zz_zz_zz_zz_zz_zz:3804; XOPAVX1:       # %bb.0:3805; XOPAVX1-NEXT:    vpmovzxbq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero3806; XOPAVX1-NEXT:    vpsrld $16, %xmm0, %xmm03807; XOPAVX1-NEXT:    vpmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero3808; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03809; XOPAVX1-NEXT:    retq3810;3811; XOPAVX2-LABEL: shuffle_v32i8_32_zz_zz_zz_zz_zz_zz_zz_33_zz_zz_zz_zz_zz_zz_zz_34_zz_zz_zz_zz_zz_zz_zz_35_zz_zz_zz_zz_zz_zz_zz:3812; XOPAVX2:       # %bb.0:3813; XOPAVX2-NEXT:    vpmovzxbq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero,xmm0[2],zero,zero,zero,zero,zero,zero,zero,xmm0[3],zero,zero,zero,zero,zero,zero,zero3814; XOPAVX2-NEXT:    retq3815  %shuffle = shufflevector <32 x i8> zeroinitializer, <32 x i8> %a, <32 x i32> <i32 32, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 33, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 34, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 35, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>3816  ret <32 x i8> %shuffle3817}3818 3819define <32 x i8> @shuffle_v32i8_32_zz_zz_zz_33_zz_zz_zz_34_zz_zz_zz_35_zz_zz_zz_36_zz_zz_zz_37_zz_zz_zz_38_zz_zz_zz_39_zz_zz_zz(<32 x i8> %a) {3820; AVX1-LABEL: shuffle_v32i8_32_zz_zz_zz_33_zz_zz_zz_34_zz_zz_zz_35_zz_zz_zz_36_zz_zz_zz_37_zz_zz_zz_38_zz_zz_zz_39_zz_zz_zz:3821; AVX1:       # %bb.0:3822; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero3823; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]3824; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero3825; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03826; AVX1-NEXT:    retq3827;3828; AVX2OR512VL-LABEL: shuffle_v32i8_32_zz_zz_zz_33_zz_zz_zz_34_zz_zz_zz_35_zz_zz_zz_36_zz_zz_zz_37_zz_zz_zz_38_zz_zz_zz_39_zz_zz_zz:3829; AVX2OR512VL:       # %bb.0:3830; AVX2OR512VL-NEXT:    vpmovzxbd {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero3831; AVX2OR512VL-NEXT:    retq3832;3833; XOPAVX1-LABEL: shuffle_v32i8_32_zz_zz_zz_33_zz_zz_zz_34_zz_zz_zz_35_zz_zz_zz_36_zz_zz_zz_37_zz_zz_zz_38_zz_zz_zz_39_zz_zz_zz:3834; XOPAVX1:       # %bb.0:3835; XOPAVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero3836; XOPAVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]3837; XOPAVX1-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero3838; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03839; XOPAVX1-NEXT:    retq3840;3841; XOPAVX2-LABEL: shuffle_v32i8_32_zz_zz_zz_33_zz_zz_zz_34_zz_zz_zz_35_zz_zz_zz_36_zz_zz_zz_37_zz_zz_zz_38_zz_zz_zz_39_zz_zz_zz:3842; XOPAVX2:       # %bb.0:3843; XOPAVX2-NEXT:    vpmovzxbd {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero3844; XOPAVX2-NEXT:    retq3845  %shuffle = shufflevector <32 x i8> zeroinitializer, <32 x i8> %a, <32 x i32> <i32 32, i32 0, i32 0, i32 0, i32 33, i32 0, i32 0, i32 0, i32 34, i32 0, i32 0, i32 0, i32 35, i32 0, i32 0, i32 0, i32 36, i32 0, i32 0, i32 0, i32 37, i32 0, i32 0, i32 0, i32 38, i32 0, i32 0, i32 0, i32 39, i32 0, i32 0, i32 0>3846  ret <32 x i8> %shuffle3847}3848 3849define <32 x i8> @shuffle_v32i8_32_zz_33_zz_34_zz_35_zz_36_zz_37_zz_38_zz_39_zz_40_zz_41_zz_42_zz_43_zz_44_zz_45_zz_46_zz_47_zz(<32 x i8> %a) {3850; AVX1-LABEL: shuffle_v32i8_32_zz_33_zz_34_zz_35_zz_36_zz_37_zz_38_zz_39_zz_40_zz_41_zz_42_zz_43_zz_44_zz_45_zz_46_zz_47_zz:3851; AVX1:       # %bb.0:3852; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm13853; AVX1-NEXT:    vpunpckhbw {{.*#+}} xmm1 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]3854; AVX1-NEXT:    vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero3855; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03856; AVX1-NEXT:    retq3857;3858; AVX2OR512VL-LABEL: shuffle_v32i8_32_zz_33_zz_34_zz_35_zz_36_zz_37_zz_38_zz_39_zz_40_zz_41_zz_42_zz_43_zz_44_zz_45_zz_46_zz_47_zz:3859; AVX2OR512VL:       # %bb.0:3860; AVX2OR512VL-NEXT:    vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero3861; AVX2OR512VL-NEXT:    retq3862;3863; XOPAVX1-LABEL: shuffle_v32i8_32_zz_33_zz_34_zz_35_zz_36_zz_37_zz_38_zz_39_zz_40_zz_41_zz_42_zz_43_zz_44_zz_45_zz_46_zz_47_zz:3864; XOPAVX1:       # %bb.0:3865; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm13866; XOPAVX1-NEXT:    vpunpckhbw {{.*#+}} xmm1 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]3867; XOPAVX1-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],zero3868; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03869; XOPAVX1-NEXT:    retq3870;3871; XOPAVX2-LABEL: shuffle_v32i8_32_zz_33_zz_34_zz_35_zz_36_zz_37_zz_38_zz_39_zz_40_zz_41_zz_42_zz_43_zz_44_zz_45_zz_46_zz_47_zz:3872; XOPAVX2:       # %bb.0:3873; XOPAVX2-NEXT:    vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero3874; XOPAVX2-NEXT:    retq3875  %shuffle = shufflevector <32 x i8> zeroinitializer, <32 x i8> %a, <32 x i32> <i32 32, i32 0, i32 33, i32 0, i32 34, i32 0, i32 35, i32 0, i32 36, i32 0, i32 37, i32 0, i32 38, i32 0, i32 39, i32 0, i32 40, i32 0, i32 41, i32 0, i32 42, i32 0, i32 43, i32 0, i32 44, i32 0, i32 45, i32 0, i32 46, i32 0, i32 47, i32 0>3876  ret <32 x i8> %shuffle3877}3878 3879define <32 x i8> @shuffle_v32i8_56_zz_zz_zz_57_zz_zz_zz_58_zz_zz_zz__zz_59_zz_zz_zz_60_zz_zz_zz_61_zz_zz_zz_62_zz_zz_zz_63_zz_zz_zz(<32 x i8> %a) {3880; AVX1-LABEL: shuffle_v32i8_56_zz_zz_zz_57_zz_zz_zz_58_zz_zz_zz__zz_59_zz_zz_zz_60_zz_zz_zz_61_zz_zz_zz_62_zz_zz_zz_63_zz_zz_zz:3881; AVX1:       # %bb.0:3882; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03883; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]3884; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero3885; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]3886; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero3887; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03888; AVX1-NEXT:    retq3889;3890; AVX2-LABEL: shuffle_v32i8_56_zz_zz_zz_57_zz_zz_zz_58_zz_zz_zz__zz_59_zz_zz_zz_60_zz_zz_zz_61_zz_zz_zz_62_zz_zz_zz_63_zz_zz_zz:3891; AVX2:       # %bb.0:3892; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[3,3,3,3]3893; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[8],zero,zero,zero,ymm0[9],zero,zero,zero,ymm0[10],zero,zero,zero,ymm0[11],zero,zero,zero,ymm0[28],zero,zero,zero,ymm0[29],zero,zero,zero,ymm0[30],zero,zero,zero,ymm0[31],zero,zero,zero3894; AVX2-NEXT:    retq3895;3896; AVX512VLBW-LABEL: shuffle_v32i8_56_zz_zz_zz_57_zz_zz_zz_58_zz_zz_zz__zz_59_zz_zz_zz_60_zz_zz_zz_61_zz_zz_zz_62_zz_zz_zz_63_zz_zz_zz:3897; AVX512VLBW:       # %bb.0:3898; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[3,3,3,3]3899; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[8],zero,zero,zero,ymm0[9],zero,zero,zero,ymm0[10],zero,zero,zero,ymm0[11],zero,zero,zero,ymm0[28],zero,zero,zero,ymm0[29],zero,zero,zero,ymm0[30],zero,zero,zero,ymm0[31],zero,zero,zero3900; AVX512VLBW-NEXT:    retq3901;3902; AVX512VLVBMI-LABEL: shuffle_v32i8_56_zz_zz_zz_57_zz_zz_zz_58_zz_zz_zz__zz_59_zz_zz_zz_60_zz_zz_zz_61_zz_zz_zz_62_zz_zz_zz_63_zz_zz_zz:3903; AVX512VLVBMI:       # %bb.0:3904; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [56,1,2,3,57,5,6,7,58,9,10,11,59,13,14,15,60,17,18,19,61,21,22,23,62,25,26,27,63,29,30,31]3905; AVX512VLVBMI-NEXT:    vpxor %xmm1, %xmm1, %xmm13906; AVX512VLVBMI-NEXT:    vpermt2b %ymm0, %ymm2, %ymm13907; AVX512VLVBMI-NEXT:    vmovdqa %ymm1, %ymm03908; AVX512VLVBMI-NEXT:    retq3909;3910; XOPAVX1-LABEL: shuffle_v32i8_56_zz_zz_zz_57_zz_zz_zz_58_zz_zz_zz__zz_59_zz_zz_zz_60_zz_zz_zz_61_zz_zz_zz_62_zz_zz_zz_63_zz_zz_zz:3911; XOPAVX1:       # %bb.0:3912; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03913; XOPAVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]3914; XOPAVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero3915; XOPAVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]3916; XOPAVX1-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero3917; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm03918; XOPAVX1-NEXT:    retq3919;3920; XOPAVX2-LABEL: shuffle_v32i8_56_zz_zz_zz_57_zz_zz_zz_58_zz_zz_zz__zz_59_zz_zz_zz_60_zz_zz_zz_61_zz_zz_zz_62_zz_zz_zz_63_zz_zz_zz:3921; XOPAVX2:       # %bb.0:3922; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[3,3,3,3]3923; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[8],zero,zero,zero,ymm0[9],zero,zero,zero,ymm0[10],zero,zero,zero,ymm0[11],zero,zero,zero,ymm0[28],zero,zero,zero,ymm0[29],zero,zero,zero,ymm0[30],zero,zero,zero,ymm0[31],zero,zero,zero3924; XOPAVX2-NEXT:    retq3925  %shuffle = shufflevector <32 x i8> zeroinitializer, <32 x i8> %a, <32 x i32> <i32 56, i32 1, i32 2, i32 3, i32 57, i32 5, i32 6, i32 7, i32 58, i32 9, i32 10, i32 11, i32 59, i32 13, i32 14, i32 15, i32 60, i32 17, i32 18, i32 19, i32 61, i32 21, i32 22, i32 23, i32 62, i32 25, i32 26, i32 27, i32 63, i32 29, i32 30, i32 31>3926  ret <32 x i8> %shuffle3927}3928 3929; PR1218233930define <32 x i8> @shuffle_v32i8_01_09_00_03_11_02_05_13_04_07_15_06_17_25_16_19_27_18_21_29_20_23_31_22_zz_zz_zz_zz_zz_zz_zz_zz(<32 x i8> %a)  {3931; AVX1-LABEL: shuffle_v32i8_01_09_00_03_11_02_05_13_04_07_15_06_17_25_16_19_27_18_21_29_20_23_31_22_zz_zz_zz_zz_zz_zz_zz_zz:3932; AVX1:       # %bb.0:3933; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm13934; AVX1-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[1,9,0,3]3935; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[1,9,0,3,11,2,5,13,4,7,15,6],zero,zero,zero,zero3936; AVX1-NEXT:    vpor %xmm2, %xmm0, %xmm03937; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[11,2,5,13,4,7,15,6],zero,zero,zero,zero,zero,zero,zero,zero3938; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03939; AVX1-NEXT:    retq3940;3941; AVX2-LABEL: shuffle_v32i8_01_09_00_03_11_02_05_13_04_07_15_06_17_25_16_19_27_18_21_29_20_23_31_22_zz_zz_zz_zz_zz_zz_zz_zz:3942; AVX2:       # %bb.0:3943; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[1,9,0,3,11,2,5,13,4,7,15,6,u,u,u,u,17,25,16,19,27,18,21,29,20,23,31,22,u,u,u,u]3944; AVX2-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [0,1,2,4,5,6,0,0]3945; AVX2-NEXT:    vpermd %ymm0, %ymm1, %ymm03946; AVX2-NEXT:    vpxor %xmm1, %xmm1, %xmm13947; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6,7]3948; AVX2-NEXT:    retq3949;3950; AVX512VLBW-LABEL: shuffle_v32i8_01_09_00_03_11_02_05_13_04_07_15_06_17_25_16_19_27_18_21_29_20_23_31_22_zz_zz_zz_zz_zz_zz_zz_zz:3951; AVX512VLBW:       # %bb.0:3952; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm1 = ymm0[1,9,0,3,11,2,5,13,4,7,15,6,u,u,u,u,17,25,16,19,27,18,21,29,20,23,31,22,u,u,u,u]3953; AVX512VLBW-NEXT:    vpxor %xmm2, %xmm2, %xmm23954; AVX512VLBW-NEXT:    vpmovsxbd {{.*#+}} ymm0 = [0,1,2,4,5,6,14,15]3955; AVX512VLBW-NEXT:    vpermi2d %ymm2, %ymm1, %ymm03956; AVX512VLBW-NEXT:    retq3957;3958; AVX512VLVBMI-LABEL: shuffle_v32i8_01_09_00_03_11_02_05_13_04_07_15_06_17_25_16_19_27_18_21_29_20_23_31_22_zz_zz_zz_zz_zz_zz_zz_zz:3959; AVX512VLVBMI:       # %bb.0:3960; AVX512VLVBMI-NEXT:    vpxor %xmm1, %xmm1, %xmm13961; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [1,9,0,3,11,2,5,13,4,7,15,6,17,25,16,19,27,18,21,29,20,23,31,22,56,57,58,59,60,61,62,63]3962; AVX512VLVBMI-NEXT:    vpermt2b %ymm1, %ymm2, %ymm03963; AVX512VLVBMI-NEXT:    retq3964;3965; XOPAVX1-LABEL: shuffle_v32i8_01_09_00_03_11_02_05_13_04_07_15_06_17_25_16_19_27_18_21_29_20_23_31_22_zz_zz_zz_zz_zz_zz_zz_zz:3966; XOPAVX1:       # %bb.0:3967; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm13968; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[1,9,0,3,11,2,5,13,4,7,15,6],xmm1[1,9,0,3]3969; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[11,2,5,13,4,7,15,6],zero,zero,zero,zero,zero,zero,zero,zero3970; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03971; XOPAVX1-NEXT:    retq3972;3973; XOPAVX2-LABEL: shuffle_v32i8_01_09_00_03_11_02_05_13_04_07_15_06_17_25_16_19_27_18_21_29_20_23_31_22_zz_zz_zz_zz_zz_zz_zz_zz:3974; XOPAVX2:       # %bb.0:3975; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[1,9,0,3,11,2,5,13,4,7,15,6,u,u,u,u,17,25,16,19,27,18,21,29,20,23,31,22,u,u,u,u]3976; XOPAVX2-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [0,1,2,4,5,6,0,0]3977; XOPAVX2-NEXT:    vpermd %ymm0, %ymm1, %ymm03978; XOPAVX2-NEXT:    vpxor %xmm1, %xmm1, %xmm13979; XOPAVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6,7]3980; XOPAVX2-NEXT:    retq3981  %r = shufflevector <32 x i8> %a, <32 x i8> zeroinitializer, <32 x i32> <i32 1, i32 9, i32 0, i32 3, i32 11, i32 2, i32 5, i32 13, i32 4, i32 7, i32 15, i32 6, i32 17, i32 25, i32 16, i32 19, i32 27, i32 18, i32 21, i32 29, i32 20, i32 23, i32 31, i32 22, i32 32, i32 32, i32 32, i32 32, i32 48, i32 48, i32 48, i32 48>3982  ret <32 x i8> %r3983}3984 3985define <32 x i8> @shuffle_v32i8_47_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30(<32 x i8> %a, <32 x i8> %b) {3986; AVX1-LABEL: shuffle_v32i8_47_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:3987; AVX1:       # %bb.0:3988; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm23989; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm33990; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[15],xmm3[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]3991; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm1[15],xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]3992; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm03993; AVX1-NEXT:    retq3994;3995; AVX2OR512VL-LABEL: shuffle_v32i8_47_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:3996; AVX2OR512VL:       # %bb.0:3997; AVX2OR512VL-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[15],ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm1[31],ymm0[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]3998; AVX2OR512VL-NEXT:    retq3999;4000; XOPAVX1-LABEL: shuffle_v32i8_47_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4001; XOPAVX1:       # %bb.0:4002; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24003; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm34004; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[15],xmm3[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4005; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm1[15],xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4006; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04007; XOPAVX1-NEXT:    retq4008;4009; XOPAVX2-LABEL: shuffle_v32i8_47_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4010; XOPAVX2:       # %bb.0:4011; XOPAVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[15],ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm1[31],ymm0[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4012; XOPAVX2-NEXT:    retq4013  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 47, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 63, 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>4014  ret <32 x i8> %shuffle4015}4016 4017define <32 x i8> @shuffle_v32i8_uu_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30(<32 x i8> %a, <32 x i8> %b) {4018; AVX1-LABEL: shuffle_v32i8_uu_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4019; AVX1:       # %bb.0:4020; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm14021; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm24022; AVX1-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[15],xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4023; AVX1-NEXT:    vpslldq {{.*#+}} xmm0 = zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4024; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm04025; AVX1-NEXT:    retq4026;4027; AVX2OR512VL-LABEL: shuffle_v32i8_uu_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4028; AVX2OR512VL:       # %bb.0:4029; AVX2OR512VL-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[15],ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm1[31],ymm0[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4030; AVX2OR512VL-NEXT:    retq4031;4032; XOPAVX1-LABEL: shuffle_v32i8_uu_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4033; XOPAVX1:       # %bb.0:4034; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm14035; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm24036; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[15],xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4037; XOPAVX1-NEXT:    vpslldq {{.*#+}} xmm0 = zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4038; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm04039; XOPAVX1-NEXT:    retq4040;4041; XOPAVX2-LABEL: shuffle_v32i8_uu_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4042; XOPAVX2:       # %bb.0:4043; XOPAVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[15],ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm1[31],ymm0[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4044; XOPAVX2-NEXT:    retq4045  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 poison, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 63, 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>4046  ret <32 x i8> %shuffle4047}4048 4049define <32 x i8> @shuffle_v32i8_47_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_uu_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30(<32 x i8> %a, <32 x i8> %b) {4050; AVX1-LABEL: shuffle_v32i8_47_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_uu_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4051; AVX1:       # %bb.0:4052; AVX1-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[15],xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4053; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04054; AVX1-NEXT:    vpslldq {{.*#+}} xmm0 = zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4055; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm04056; AVX1-NEXT:    retq4057;4058; AVX2OR512VL-LABEL: shuffle_v32i8_47_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_uu_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4059; AVX2OR512VL:       # %bb.0:4060; AVX2OR512VL-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[15],ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm1[31],ymm0[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4061; AVX2OR512VL-NEXT:    retq4062;4063; XOPAVX1-LABEL: shuffle_v32i8_47_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_uu_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4064; XOPAVX1:       # %bb.0:4065; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[15],xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4066; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04067; XOPAVX1-NEXT:    vpslldq {{.*#+}} xmm0 = zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4068; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm04069; XOPAVX1-NEXT:    retq4070;4071; XOPAVX2-LABEL: shuffle_v32i8_47_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_uu_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4072; XOPAVX2:       # %bb.0:4073; XOPAVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[15],ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm1[31],ymm0[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4074; XOPAVX2-NEXT:    retq4075  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 47, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 poison, 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>4076  ret <32 x i8> %shuffle4077}4078 4079define <32 x i8> @shuffle_v32i8_uu_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu(<32 x i8> %a, <32 x i8> %b) {4080; AVX1-LABEL: shuffle_v32i8_uu_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4081; AVX1:       # %bb.0:4082; AVX1-NEXT:    vpslldq {{.*#+}} xmm0 = zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4083; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm14084; AVX1-NEXT:    vpsrldq {{.*#+}} xmm1 = xmm1[15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero4085; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm04086; AVX1-NEXT:    retq4087;4088; AVX2OR512VL-LABEL: shuffle_v32i8_uu_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4089; AVX2OR512VL:       # %bb.0:4090; AVX2OR512VL-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[15],ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm1[31],ymm0[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4091; AVX2OR512VL-NEXT:    retq4092;4093; XOPAVX1-LABEL: shuffle_v32i8_uu_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4094; XOPAVX1:       # %bb.0:4095; XOPAVX1-NEXT:    vpslldq {{.*#+}} xmm0 = zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4096; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm14097; XOPAVX1-NEXT:    vpsrldq {{.*#+}} xmm1 = xmm1[15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero4098; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm04099; XOPAVX1-NEXT:    retq4100;4101; XOPAVX2-LABEL: shuffle_v32i8_uu_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4102; XOPAVX2:       # %bb.0:4103; XOPAVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[15],ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm1[31],ymm0[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4104; XOPAVX2-NEXT:    retq4105  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 poison, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 63, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>4106  ret <32 x i8> %shuffle4107}4108 4109define <32 x i8> @shuffle_v32i8_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30(<32 x i8> %a, <32 x i8> %b) {4110; AVX1-LABEL: shuffle_v32i8_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4111; AVX1:       # %bb.0:4112; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm14113; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04114; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm1[15],xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4115; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm04116; AVX1-NEXT:    retq4117;4118; AVX2OR512VL-LABEL: shuffle_v32i8_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4119; AVX2OR512VL:       # %bb.0:4120; AVX2OR512VL-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[15],ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm1[31],ymm0[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4121; AVX2OR512VL-NEXT:    retq4122;4123; XOPAVX1-LABEL: shuffle_v32i8_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4124; XOPAVX1:       # %bb.0:4125; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm14126; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04127; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm1[15],xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4128; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm04129; XOPAVX1-NEXT:    retq4130;4131; XOPAVX2-LABEL: shuffle_v32i8_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4132; XOPAVX2:       # %bb.0:4133; XOPAVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[15],ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm1[31],ymm0[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4134; XOPAVX2-NEXT:    retq4135  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 63, 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>4136  ret <32 x i8> %shuffle4137}4138 4139define <32 x i8> @shuffle_v32i8_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15_32_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31_48(<32 x i8> %a, <32 x i8> %b) {4140; AVX1-LABEL: shuffle_v32i8_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15_32_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31_48:4141; AVX1:       # %bb.0:4142; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm24143; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm34144; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm3[0]4145; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm1[0]4146; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04147; AVX1-NEXT:    retq4148;4149; AVX2OR512VL-LABEL: shuffle_v32i8_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15_32_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31_48:4150; AVX2OR512VL:       # %bb.0:4151; AVX2OR512VL-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm1[0],ymm0[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm1[16]4152; AVX2OR512VL-NEXT:    retq4153;4154; XOPAVX1-LABEL: shuffle_v32i8_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15_32_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31_48:4155; XOPAVX1:       # %bb.0:4156; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm24157; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm34158; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm3[0]4159; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm1[0]4160; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04161; XOPAVX1-NEXT:    retq4162;4163; XOPAVX2-LABEL: shuffle_v32i8_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15_32_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31_48:4164; XOPAVX2:       # %bb.0:4165; XOPAVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm1[0],ymm0[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm1[16]4166; XOPAVX2-NEXT:    retq4167  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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 32, 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 48>4168  ret <32 x i8> %shuffle4169}4170 4171define <32 x i8> @shuffle_v32i8_33_34_35_36_37_38_39_40_41_42_43_44_45_46_47_00_49_50_51_52_53_54_55_56_57_58_59_60_61_62_63_16(<32 x i8> %a, <32 x i8> %b) {4172; AVX1-LABEL: shuffle_v32i8_33_34_35_36_37_38_39_40_41_42_43_44_45_46_47_00_49_50_51_52_53_54_55_56_57_58_59_60_61_62_63_16:4173; AVX1:       # %bb.0:4174; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24175; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm34176; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm3[0]4177; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm1[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm0[0]4178; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04179; AVX1-NEXT:    retq4180;4181; AVX2OR512VL-LABEL: shuffle_v32i8_33_34_35_36_37_38_39_40_41_42_43_44_45_46_47_00_49_50_51_52_53_54_55_56_57_58_59_60_61_62_63_16:4182; AVX2OR512VL:       # %bb.0:4183; AVX2OR512VL-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm0[0],ymm1[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm0[16]4184; AVX2OR512VL-NEXT:    retq4185;4186; XOPAVX1-LABEL: shuffle_v32i8_33_34_35_36_37_38_39_40_41_42_43_44_45_46_47_00_49_50_51_52_53_54_55_56_57_58_59_60_61_62_63_16:4187; XOPAVX1:       # %bb.0:4188; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24189; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm34190; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm3[0]4191; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm1[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm0[0]4192; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04193; XOPAVX1-NEXT:    retq4194;4195; XOPAVX2-LABEL: shuffle_v32i8_33_34_35_36_37_38_39_40_41_42_43_44_45_46_47_00_49_50_51_52_53_54_55_56_57_58_59_60_61_62_63_16:4196; XOPAVX2:       # %bb.0:4197; XOPAVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm0[0],ymm1[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm0[16]4198; XOPAVX2-NEXT:    retq4199  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 00, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 16>4200  ret <32 x i8> %shuffle4201}4202 4203define <32 x i8> @shuffle_v32i8_15_32_33_34_35_36_37_38_39_40_41_42_43_44_45_46_31_48_49_50_51_52_53_54_55_56_57_58_59_60_61_62(<32 x i8> %a, <32 x i8> %b) {4204; AVX1-LABEL: shuffle_v32i8_15_32_33_34_35_36_37_38_39_40_41_42_43_44_45_46_31_48_49_50_51_52_53_54_55_56_57_58_59_60_61_62:4205; AVX1:       # %bb.0:4206; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm24207; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm34208; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[15],xmm3[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4209; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[15],xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4210; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04211; AVX1-NEXT:    retq4212;4213; AVX2OR512VL-LABEL: shuffle_v32i8_15_32_33_34_35_36_37_38_39_40_41_42_43_44_45_46_31_48_49_50_51_52_53_54_55_56_57_58_59_60_61_62:4214; AVX2OR512VL:       # %bb.0:4215; AVX2OR512VL-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[15],ymm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm0[31],ymm1[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4216; AVX2OR512VL-NEXT:    retq4217;4218; XOPAVX1-LABEL: shuffle_v32i8_15_32_33_34_35_36_37_38_39_40_41_42_43_44_45_46_31_48_49_50_51_52_53_54_55_56_57_58_59_60_61_62:4219; XOPAVX1:       # %bb.0:4220; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm24221; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm34222; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[15],xmm3[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4223; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[15],xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4224; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04225; XOPAVX1-NEXT:    retq4226;4227; XOPAVX2-LABEL: shuffle_v32i8_15_32_33_34_35_36_37_38_39_40_41_42_43_44_45_46_31_48_49_50_51_52_53_54_55_56_57_58_59_60_61_62:4228; XOPAVX2:       # %bb.0:4229; XOPAVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[15],ymm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm0[31],ymm1[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4230; XOPAVX2-NEXT:    retq4231  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 15, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 31, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62>4232  ret <32 x i8> %shuffle4233}4234 4235define <32 x i8> @shuffle_v32i8_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15_00_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31_16(<32 x i8> %a, <32 x i8> %b) {4236; AVX1-LABEL: shuffle_v32i8_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15_00_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31_16:4237; AVX1:       # %bb.0:4238; AVX1-NEXT:    vpalignr {{.*#+}} xmm1 = xmm0[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0]4239; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04240; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0]4241; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm04242; AVX1-NEXT:    retq4243;4244; AVX2OR512VL-LABEL: shuffle_v32i8_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15_00_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31_16:4245; AVX2OR512VL:       # %bb.0:4246; AVX2OR512VL-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,16]4247; AVX2OR512VL-NEXT:    retq4248;4249; XOPAVX1-LABEL: shuffle_v32i8_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15_00_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31_16:4250; XOPAVX1:       # %bb.0:4251; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm1 = xmm0[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0]4252; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04253; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0]4254; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm04255; XOPAVX1-NEXT:    retq4256;4257; XOPAVX2-LABEL: shuffle_v32i8_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15_00_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31_16:4258; XOPAVX2:       # %bb.0:4259; XOPAVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,16]4260; XOPAVX2-NEXT:    retq4261  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, 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 16>4262  ret <32 x i8> %shuffle4263}4264 4265define <32 x i8> @shuffle_v32i8_15_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_31_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30(<32 x i8> %a, <32 x i8> %b) {4266; AVX1-LABEL: shuffle_v32i8_15_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_31_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4267; AVX1:       # %bb.0:4268; AVX1-NEXT:    vpalignr {{.*#+}} xmm1 = xmm0[15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4269; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04270; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4271; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm04272; AVX1-NEXT:    retq4273;4274; AVX2OR512VL-LABEL: shuffle_v32i8_15_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_31_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4275; AVX2OR512VL:       # %bb.0:4276; AVX2OR512VL-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,31,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4277; AVX2OR512VL-NEXT:    retq4278;4279; XOPAVX1-LABEL: shuffle_v32i8_15_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_31_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4280; XOPAVX1:       # %bb.0:4281; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm1 = xmm0[15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4282; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04283; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4284; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm04285; XOPAVX1-NEXT:    retq4286;4287; XOPAVX2-LABEL: shuffle_v32i8_15_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_31_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:4288; XOPAVX2:       # %bb.0:4289; XOPAVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,31,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4290; XOPAVX2-NEXT:    retq4291  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 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, i32 31, 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>4292  ret <32 x i8> %shuffle4293}4294 4295; PR337404296define <32 x i8> @shuffle_v32i8_00_01_16_17_02_03_18_19_04_05_20_21_06_07_22_23_08_09_24_25_10_11_26_27_12_13_28_29_14_15_30_31(<32 x i8> %a, <32 x i8> %b) {4297; AVX1-LABEL: shuffle_v32i8_00_01_16_17_02_03_18_19_04_05_20_21_06_07_22_23_08_09_24_25_10_11_26_27_12_13_28_29_14_15_30_31:4298; AVX1:       # %bb.0:4299; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm14300; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm2 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]4301; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]4302; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04303; AVX1-NEXT:    retq4304;4305; AVX2-LABEL: shuffle_v32i8_00_01_16_17_02_03_18_19_04_05_20_21_06_07_22_23_08_09_24_25_10_11_26_27_12_13_28_29_14_15_30_31:4306; AVX2:       # %bb.0:4307; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]4308; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,8,9,2,3,10,11,4,5,12,13,6,7,14,15,16,17,24,25,18,19,26,27,20,21,28,29,22,23,30,31]4309; AVX2-NEXT:    retq4310;4311; AVX512VL-LABEL: shuffle_v32i8_00_01_16_17_02_03_18_19_04_05_20_21_06_07_22_23_08_09_24_25_10_11_26_27_12_13_28_29_14_15_30_31:4312; AVX512VL:       # %bb.0:4313; AVX512VL-NEXT:    vpmovsxbw {{.*#+}} ymm1 = [0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15]4314; AVX512VL-NEXT:    vpermw %ymm0, %ymm1, %ymm04315; AVX512VL-NEXT:    retq4316;4317; XOPAVX1-LABEL: shuffle_v32i8_00_01_16_17_02_03_18_19_04_05_20_21_06_07_22_23_08_09_24_25_10_11_26_27_12_13_28_29_14_15_30_31:4318; XOPAVX1:       # %bb.0:4319; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm14320; XOPAVX1-NEXT:    vpunpckhwd {{.*#+}} xmm2 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]4321; XOPAVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]4322; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04323; XOPAVX1-NEXT:    retq4324;4325; XOPAVX2-LABEL: shuffle_v32i8_00_01_16_17_02_03_18_19_04_05_20_21_06_07_22_23_08_09_24_25_10_11_26_27_12_13_28_29_14_15_30_31:4326; XOPAVX2:       # %bb.0:4327; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]4328; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,8,9,2,3,10,11,4,5,12,13,6,7,14,15,16,17,24,25,18,19,26,27,20,21,28,29,22,23,30,31]4329; XOPAVX2-NEXT:    retq4330  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 0, i32 1, i32 16, i32 17, i32 2, i32 3, i32 18, i32 19, i32 4, i32 5, i32 20, i32 21, i32 6, i32 7, i32 22, i32 23, i32 8, i32 9, i32 24, i32 25, i32 10, i32 11, i32 26, i32 27, i32 12, i32 13, i32 28, i32 29, i32 14, i32 15, i32 30, i32 31>4331  ret <32 x i8> %shuffle4332}4333 4334define <32 x i8> @shuffle_v32i8_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_10_10_10_10_10_10_10_10_10_10_10_10_10_10_10_10(<32 x i8> %a, <32 x i8> %b) {4335; AVX1-LABEL: shuffle_v32i8_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_10_10_10_10_10_10_10_10_10_10_10_10_10_10_10_10:4336; AVX1:       # %bb.0:4337; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]4338; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm04339; AVX1-NEXT:    retq4340;4341; AVX2OR512VL-LABEL: shuffle_v32i8_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_10_10_10_10_10_10_10_10_10_10_10_10_10_10_10_10:4342; AVX2OR512VL:       # %bb.0:4343; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]4344; AVX2OR512VL-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm04345; AVX2OR512VL-NEXT:    retq4346;4347; XOPAVX1-LABEL: shuffle_v32i8_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_10_10_10_10_10_10_10_10_10_10_10_10_10_10_10_10:4348; XOPAVX1:       # %bb.0:4349; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]4350; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm04351; XOPAVX1-NEXT:    retq4352;4353; XOPAVX2-LABEL: shuffle_v32i8_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_10_10_10_10_10_10_10_10_10_10_10_10_10_10_10_10:4354; XOPAVX2:       # %bb.0:4355; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]4356; XOPAVX2-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm04357; XOPAVX2-NEXT:    retq4358  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10>4359  ret <32 x i8> %shuffle4360}4361 4362define <32 x i8> @shuffle_v32i8_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16(<32 x i8> %a, <32 x i8> %b) {4363; AVX1-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:4364; AVX1:       # %bb.0:4365; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04366; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm14367; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm04368; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm04369; AVX1-NEXT:    retq4370;4371; AVX2-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:4372; AVX2:       # %bb.0:4373; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm04374; AVX2-NEXT:    vpbroadcastb %xmm0, %ymm04375; AVX2-NEXT:    retq4376;4377; AVX512VLBW-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:4378; AVX512VLBW:       # %bb.0:4379; AVX512VLBW-NEXT:    vextracti128 $1, %ymm0, %xmm04380; AVX512VLBW-NEXT:    vpbroadcastb %xmm0, %ymm04381; AVX512VLBW-NEXT:    retq4382;4383; AVX512VLVBMI-SLOW-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:4384; AVX512VLVBMI-SLOW:       # %bb.0:4385; AVX512VLVBMI-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm04386; AVX512VLVBMI-SLOW-NEXT:    vpbroadcastb %xmm0, %ymm04387; AVX512VLVBMI-SLOW-NEXT:    retq4388;4389; AVX512VLVBMI-FAST-ALL-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:4390; AVX512VLVBMI-FAST-ALL:       # %bb.0:4391; AVX512VLVBMI-FAST-ALL-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]4392; AVX512VLVBMI-FAST-ALL-NEXT:    vpermb %ymm0, %ymm1, %ymm04393; AVX512VLVBMI-FAST-ALL-NEXT:    retq4394;4395; AVX512VLVBMI-FAST-PERLANE-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:4396; AVX512VLVBMI-FAST-PERLANE:       # %bb.0:4397; AVX512VLVBMI-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm0, %xmm04398; AVX512VLVBMI-FAST-PERLANE-NEXT:    vpbroadcastb %xmm0, %ymm04399; AVX512VLVBMI-FAST-PERLANE-NEXT:    retq4400;4401; XOPAVX1-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:4402; XOPAVX1:       # %bb.0:4403; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04404; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm14405; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm04406; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm04407; XOPAVX1-NEXT:    retq4408;4409; XOPAVX2-LABEL: shuffle_v32i8_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16_16:4410; XOPAVX2:       # %bb.0:4411; XOPAVX2-NEXT:    vextracti128 $1, %ymm0, %xmm04412; XOPAVX2-NEXT:    vpbroadcastb %xmm0, %ymm04413; XOPAVX2-NEXT:    retq4414  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>4415  ret <32 x i8> %shuffle4416}4417 4418define <32 x i8> @shuffle_v32i8_15_15_15_15_15_15_15_15_32_32_32_32_32_32_32_32_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu(<32 x i8> %a, <32 x i8> %b) {4419; AVX1-LABEL: shuffle_v32i8_15_15_15_15_15_15_15_15_32_32_32_32_32_32_32_32_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4420; AVX1:       # %bb.0:4421; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,15,15,15,15,15,15,15,u,u,u,u,u,u,u,u]4422; AVX1-NEXT:    vpunpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]4423; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]4424; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]4425; AVX1-NEXT:    retq4426;4427; AVX2-LABEL: shuffle_v32i8_15_15_15_15_15_15_15_15_32_32_32_32_32_32_32_32_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4428; AVX2:       # %bb.0:4429; AVX2-NEXT:    vpbroadcastb %xmm1, %xmm14430; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,15,15,15,15,15,15,15,u,u,u,u,u,u,u,u]4431; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]4432; AVX2-NEXT:    retq4433;4434; AVX512VLBW-LABEL: shuffle_v32i8_15_15_15_15_15_15_15_15_32_32_32_32_32_32_32_32_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4435; AVX512VLBW:       # %bb.0:4436; AVX512VLBW-NEXT:    vpbroadcastb %xmm1, %xmm14437; AVX512VLBW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,15,15,15,15,15,15,15,u,u,u,u,u,u,u,u]4438; AVX512VLBW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]4439; AVX512VLBW-NEXT:    retq4440;4441; AVX512VLVBMI-SLOW-LABEL: shuffle_v32i8_15_15_15_15_15_15_15_15_32_32_32_32_32_32_32_32_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4442; AVX512VLVBMI-SLOW:       # %bb.0:4443; AVX512VLVBMI-SLOW-NEXT:    vpbroadcastb %xmm1, %xmm14444; AVX512VLVBMI-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,15,15,15,15,15,15,15,u,u,u,u,u,u,u,u]4445; AVX512VLVBMI-SLOW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]4446; AVX512VLVBMI-SLOW-NEXT:    retq4447;4448; AVX512VLVBMI-FAST-ALL-LABEL: shuffle_v32i8_15_15_15_15_15_15_15_15_32_32_32_32_32_32_32_32_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4449; AVX512VLVBMI-FAST-ALL:       # %bb.0:4450; AVX512VLVBMI-FAST-ALL-NEXT:    vmovdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16]4451; AVX512VLVBMI-FAST-ALL-NEXT:    vpermt2b %xmm1, %xmm2, %xmm04452; AVX512VLVBMI-FAST-ALL-NEXT:    retq4453;4454; AVX512VLVBMI-FAST-PERLANE-LABEL: shuffle_v32i8_15_15_15_15_15_15_15_15_32_32_32_32_32_32_32_32_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4455; AVX512VLVBMI-FAST-PERLANE:       # %bb.0:4456; AVX512VLVBMI-FAST-PERLANE-NEXT:    vpbroadcastb %xmm1, %xmm14457; AVX512VLVBMI-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,15,15,15,15,15,15,15,u,u,u,u,u,u,u,u]4458; AVX512VLVBMI-FAST-PERLANE-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]4459; AVX512VLVBMI-FAST-PERLANE-NEXT:    retq4460;4461; XOP-LABEL: shuffle_v32i8_15_15_15_15_15_15_15_15_32_32_32_32_32_32_32_32_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4462; XOP:       # %bb.0:4463; XOP-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[15,15,15,15,15,15,15,15],xmm1[0,0,0,0,0,0,0,0]4464; XOP-NEXT:    retq4465; AVX-LABEL: shuffle_v32i8_15_15_15_15_15_15_15_15_32_32_32_32_32_32_32_32_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4466; AVX:       # %bb.0:4467; AVX-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[15,15,15,15,15,15,15,15],xmm1[0,0,0,0,0,0,0,0]4468; AVX-NEXT:    retq4469  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>4470  ret <32 x i8> %shuffle4471}4472 4473define <32 x i8> @shuffle_v32i8_15_15_15_15_15_15_15_15_15_15_15_15_15_15_15_15_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu(<32 x i8> %a, <32 x i8> %b) {4474; ALL-LABEL: shuffle_v32i8_15_15_15_15_15_15_15_15_15_15_15_15_15_15_15_15_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4475; ALL:       # %bb.0:4476; ALL-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4477; ALL-NEXT:    retq4478  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>4479  ret <32 x i8> %shuffle4480}4481 4482define <32 x i8> @shuffle_v32i8_22_22_22_22_22_22_22_22_22_22_22_22_22_22_22_22_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu(<32 x i8> %a, <32 x i8> %b) {4483; AVX1-LABEL: shuffle_v32i8_22_22_22_22_22_22_22_22_22_22_22_22_22_22_22_22_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4484; AVX1:       # %bb.0:4485; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04486; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6]4487; AVX1-NEXT:    retq4488;4489; AVX2OR512VL-LABEL: shuffle_v32i8_22_22_22_22_22_22_22_22_22_22_22_22_22_22_22_22_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4490; AVX2OR512VL:       # %bb.0:4491; AVX2OR512VL-NEXT:    vextracti128 $1, %ymm0, %xmm04492; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6]4493; AVX2OR512VL-NEXT:    retq4494;4495; XOPAVX1-LABEL: shuffle_v32i8_22_22_22_22_22_22_22_22_22_22_22_22_22_22_22_22_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4496; XOPAVX1:       # %bb.0:4497; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04498; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6]4499; XOPAVX1-NEXT:    retq4500;4501; XOPAVX2-LABEL: shuffle_v32i8_22_22_22_22_22_22_22_22_22_22_22_22_22_22_22_22_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu_uu:4502; XOPAVX2:       # %bb.0:4503; XOPAVX2-NEXT:    vextracti128 $1, %ymm0, %xmm04504; XOPAVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6]4505; XOPAVX2-NEXT:    retq4506  %shuffle = shufflevector <32 x i8> %a, <32 x i8> %b, <32 x i32> <i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>4507  ret <32 x i8> %shuffle4508}4509 4510; PR369334511define <32 x i8> @shuffle_v32i8_31_32_33_34_35_36_37_38_39_40_41_42_43_44_45_46_47_48_49_50_51_52_53_54_55_56_57_58_59_60_61_62(<32 x i8> %a0, <32 x i8> %a1) {4512; AVX1-LABEL: shuffle_v32i8_31_32_33_34_35_36_37_38_39_40_41_42_43_44_45_46_47_48_49_50_51_52_53_54_55_56_57_58_59_60_61_62:4513; AVX1:       # %bb.0:4514; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24515; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm1[15],xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4516; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04517; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[15],xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4518; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04519; AVX1-NEXT:    retq4520;4521; AVX2-LABEL: shuffle_v32i8_31_32_33_34_35_36_37_38_39_40_41_42_43_44_45_46_47_48_49_50_51_52_53_54_55_56_57_58_59_60_61_62:4522; AVX2:       # %bb.0:4523; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[0,1]4524; AVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[15],ymm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm0[31],ymm1[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4525; AVX2-NEXT:    retq4526;4527; AVX512VLBW-LABEL: shuffle_v32i8_31_32_33_34_35_36_37_38_39_40_41_42_43_44_45_46_47_48_49_50_51_52_53_54_55_56_57_58_59_60_61_62:4528; AVX512VLBW:       # %bb.0:4529; AVX512VLBW-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[0,1]4530; AVX512VLBW-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[15],ymm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm0[31],ymm1[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4531; AVX512VLBW-NEXT:    retq4532;4533; AVX512VLVBMI-LABEL: shuffle_v32i8_31_32_33_34_35_36_37_38_39_40_41_42_43_44_45_46_47_48_49_50_51_52_53_54_55_56_57_58_59_60_61_62:4534; AVX512VLVBMI:       # %bb.0:4535; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4536; AVX512VLVBMI-NEXT:    vpermi2b %ymm0, %ymm1, %ymm24537; AVX512VLVBMI-NEXT:    vmovdqa %ymm2, %ymm04538; AVX512VLVBMI-NEXT:    retq4539;4540; XOPAVX1-LABEL: shuffle_v32i8_31_32_33_34_35_36_37_38_39_40_41_42_43_44_45_46_47_48_49_50_51_52_53_54_55_56_57_58_59_60_61_62:4541; XOPAVX1:       # %bb.0:4542; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24543; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm1[15],xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4544; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04545; XOPAVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[15],xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]4546; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04547; XOPAVX1-NEXT:    retq4548;4549; XOPAVX2-LABEL: shuffle_v32i8_31_32_33_34_35_36_37_38_39_40_41_42_43_44_45_46_47_48_49_50_51_52_53_54_55_56_57_58_59_60_61_62:4550; XOPAVX2:       # %bb.0:4551; XOPAVX2-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[0,1]4552; XOPAVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[15],ymm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm0[31],ymm1[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]4553; XOPAVX2-NEXT:    retq4554  %shuffle = shufflevector <32 x i8> %a0, <32 x i8> %a1, <32 x i32> <i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62>4555  ret <32 x i8> %shuffle4556}4557 4558define <32 x i8> @shuffle_v32i8_03_00_01_02_07_04_05_06_11_08_09_10_15_12_13_14_19_16_17_18_23_20_21_22_27_24_25_26_31_28_29_30(<32 x i8> %a) {4559; AVX1-LABEL: shuffle_v32i8_03_00_01_02_07_04_05_06_11_08_09_10_15_12_13_14_19_16_17_18_23_20_21_22_27_24_25_26_31_28_29_30:4560; AVX1:       # %bb.0:4561; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm14562; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14]4563; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm14564; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm04565; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm04566; AVX1-NEXT:    retq4567;4568; AVX2-LABEL: shuffle_v32i8_03_00_01_02_07_04_05_06_11_08_09_10_15_12_13_14_19_16_17_18_23_20_21_22_27_24_25_26_31_28_29_30:4569; AVX2:       # %bb.0:4570; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14,19,16,17,18,23,20,21,22,27,24,25,26,31,28,29,30]4571; AVX2-NEXT:    retq4572;4573; AVX512VL-LABEL: shuffle_v32i8_03_00_01_02_07_04_05_06_11_08_09_10_15_12_13_14_19_16_17_18_23_20_21_22_27_24_25_26_31_28_29_30:4574; AVX512VL:       # %bb.0:4575; AVX512VL-NEXT:    vprold $8, %ymm0, %ymm04576; AVX512VL-NEXT:    retq4577;4578; XOPAVX1-LABEL: shuffle_v32i8_03_00_01_02_07_04_05_06_11_08_09_10_15_12_13_14_19_16_17_18_23_20_21_22_27_24_25_26_31_28_29_30:4579; XOPAVX1:       # %bb.0:4580; XOPAVX1-NEXT:    vprotd $8, %xmm0, %xmm14581; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04582; XOPAVX1-NEXT:    vprotd $8, %xmm0, %xmm04583; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm04584; XOPAVX1-NEXT:    retq4585;4586; XOPAVX2-LABEL: shuffle_v32i8_03_00_01_02_07_04_05_06_11_08_09_10_15_12_13_14_19_16_17_18_23_20_21_22_27_24_25_26_31_28_29_30:4587; XOPAVX2:       # %bb.0:4588; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14,19,16,17,18,23,20,21,22,27,24,25,26,31,28,29,30]4589; XOPAVX2-NEXT:    retq4590  %shuffle = shufflevector <32 x i8> %a, <32 x i8> poison, <32 x i32> <i32 3, i32 0, i32 1, i32 2, i32 7, i32 4, i32 5, i32 6, i32 11, i32 8, i32 9, i32 10, i32 15, i32 12, i32 13, i32 14, i32 19, i32 16, i32 17, i32 18, i32 23, i32 20, i32 21, i32 22, i32 27, i32 24, i32 25, i32 26, i32 31, i32 28, i32 29, i32 30>4591  ret <32 x i8> %shuffle4592}4593 4594; PR443794595define <32 x i8> @shuffle_v32i8_02_03_04_05_06_07_00_01_10_11_12_13_14_15_08_09_18_19_20_21_22_23_16_17_26_27_28_29_30_31_24_25(<32 x i8> %a) {4596; AVX1-LABEL: shuffle_v32i8_02_03_04_05_06_07_00_01_10_11_12_13_14_15_08_09_18_19_20_21_22_23_16_17_26_27_28_29_30_31_24_25:4597; AVX1:       # %bb.0:4598; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[1,2,3,0,4,5,6,7]4599; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,6,7,4]4600; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04601; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[1,2,3,0,4,5,6,7]4602; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,6,7,4]4603; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm04604; AVX1-NEXT:    retq4605;4606; AVX2-SLOW-LABEL: shuffle_v32i8_02_03_04_05_06_07_00_01_10_11_12_13_14_15_08_09_18_19_20_21_22_23_16_17_26_27_28_29_30_31_24_25:4607; AVX2-SLOW:       # %bb.0:4608; AVX2-SLOW-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[1,2,3,0,4,5,6,7,9,10,11,8,12,13,14,15]4609; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,5,6,7,4,8,9,10,11,13,14,15,12]4610; AVX2-SLOW-NEXT:    retq4611;4612; AVX2-FAST-LABEL: shuffle_v32i8_02_03_04_05_06_07_00_01_10_11_12_13_14_15_08_09_18_19_20_21_22_23_16_17_26_27_28_29_30_31_24_25:4613; AVX2-FAST:       # %bb.0:4614; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[2,3,4,5,6,7,0,1,10,11,12,13,14,15,8,9,18,19,20,21,22,23,16,17,26,27,28,29,30,31,24,25]4615; AVX2-FAST-NEXT:    retq4616;4617; AVX512VL-LABEL: shuffle_v32i8_02_03_04_05_06_07_00_01_10_11_12_13_14_15_08_09_18_19_20_21_22_23_16_17_26_27_28_29_30_31_24_25:4618; AVX512VL:       # %bb.0:4619; AVX512VL-NEXT:    vprolq $48, %ymm0, %ymm04620; AVX512VL-NEXT:    retq4621;4622; XOPAVX1-LABEL: shuffle_v32i8_02_03_04_05_06_07_00_01_10_11_12_13_14_15_08_09_18_19_20_21_22_23_16_17_26_27_28_29_30_31_24_25:4623; XOPAVX1:       # %bb.0:4624; XOPAVX1-NEXT:    vprotq $48, %xmm0, %xmm14625; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04626; XOPAVX1-NEXT:    vprotq $48, %xmm0, %xmm04627; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm04628; XOPAVX1-NEXT:    retq4629;4630; XOPAVX2-LABEL: shuffle_v32i8_02_03_04_05_06_07_00_01_10_11_12_13_14_15_08_09_18_19_20_21_22_23_16_17_26_27_28_29_30_31_24_25:4631; XOPAVX2:       # %bb.0:4632; XOPAVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[1,2,3,0,4,5,6,7,9,10,11,8,12,13,14,15]4633; XOPAVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,5,6,7,4,8,9,10,11,13,14,15,12]4634; XOPAVX2-NEXT:    retq4635  %shuffle = shufflevector <32 x i8> %a, <32 x i8> poison, <32 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 16, i32 17, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 24, i32 25>4636  ret <32 x i8> %shuffle4637}4638 4639; PR471944640define <32 x i8> @shuffle_v32i8_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31(<32 x i8> %a) {4641; AVX1-LABEL: shuffle_v32i8_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31:4642; AVX1:       # %bb.0:4643; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04644; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,7,7,7]4645; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]4646; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm04647; AVX1-NEXT:    retq4648;4649; AVX2-LABEL: shuffle_v32i8_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31:4650; AVX2:       # %bb.0:4651; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,7,7,7,7,8,9,10,11,15,15,15,15]4652; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[3,3,3,3]4653; AVX2-NEXT:    retq4654;4655; AVX512VL-LABEL: shuffle_v32i8_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31:4656; AVX512VL:       # %bb.0:4657; AVX512VL-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4658; AVX512VL-NEXT:    vpermw %ymm0, %ymm1, %ymm04659; AVX512VL-NEXT:    retq4660;4661; XOPAVX1-LABEL: shuffle_v32i8_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31:4662; XOPAVX1:       # %bb.0:4663; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm04664; XOPAVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,7,7,7]4665; XOPAVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]4666; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm04667; XOPAVX1-NEXT:    retq4668;4669; XOPAVX2-LABEL: shuffle_v32i8_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31_30_31:4670; XOPAVX2:       # %bb.0:4671; XOPAVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,7,7,7,7,8,9,10,11,15,15,15,15]4672; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[3,3,3,3]4673; XOPAVX2-NEXT:    retq4674  %shuffle = shufflevector <32 x i8> %a, <32 x i8> poison, <32 x i32> <i32 30, i32 31, i32 30, i32 31, i32 30, i32 31, i32 30, i32 31, i32 30, i32 31, i32 30, i32 31, i32 30, i32 31, i32 30, i32 31, i32 30, i32 31, i32 30, i32 31, i32 30, i32 31, i32 30, i32 31, i32 30, i32 31, i32 30, i32 31, i32 30, i32 31, i32 30, i32 31>4675  ret <32 x i8> %shuffle4676}4677 4678define <32 x i8> @shuffle_v32i8_00_02_04_06_08_10_12_14_32_34_36_38_40_42_44_46_16_18_20_22_24_26_28_30_48_50_52_54_56_58_60_62(<32 x i8> %a0, <32 x i8> %a1) {4679; AVX1-LABEL: shuffle_v32i8_00_02_04_06_08_10_12_14_32_34_36_38_40_42_44_46_16_18_20_22_24_26_28_30_48_50_52_54_56_58_60_62:4680; AVX1:       # %bb.0:4681; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24682; AVX1-NEXT:    vbroadcastss {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255]4683; AVX1-NEXT:    vpand %xmm3, %xmm2, %xmm24684; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm44685; AVX1-NEXT:    vpand %xmm3, %xmm4, %xmm44686; AVX1-NEXT:    vpackuswb %xmm2, %xmm4, %xmm24687; AVX1-NEXT:    vpand %xmm3, %xmm1, %xmm14688; AVX1-NEXT:    vpand %xmm3, %xmm0, %xmm04689; AVX1-NEXT:    vpackuswb %xmm1, %xmm0, %xmm04690; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04691; AVX1-NEXT:    retq4692;4693; AVX2-LABEL: shuffle_v32i8_00_02_04_06_08_10_12_14_32_34_36_38_40_42_44_46_16_18_20_22_24_26_28_30_48_50_52_54_56_58_60_62:4694; AVX2:       # %bb.0:4695; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14]4696; AVX2-NEXT:    vpshufb %ymm2, %ymm1, %ymm14697; AVX2-NEXT:    vpshufb %ymm2, %ymm0, %ymm04698; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]4699; AVX2-NEXT:    retq4700;4701; AVX512VLBW-LABEL: shuffle_v32i8_00_02_04_06_08_10_12_14_32_34_36_38_40_42_44_46_16_18_20_22_24_26_28_30_48_50_52_54_56_58_60_62:4702; AVX512VLBW:       # %bb.0:4703; AVX512VLBW-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14]4704; AVX512VLBW-NEXT:    vpshufb %ymm2, %ymm1, %ymm14705; AVX512VLBW-NEXT:    vpshufb %ymm2, %ymm0, %ymm04706; AVX512VLBW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]4707; AVX512VLBW-NEXT:    retq4708;4709; AVX512VLVBMI-LABEL: shuffle_v32i8_00_02_04_06_08_10_12_14_32_34_36_38_40_42_44_46_16_18_20_22_24_26_28_30_48_50_52_54_56_58_60_62:4710; AVX512VLVBMI:       # %bb.0:4711; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,2,4,6,8,10,12,14,32,34,36,38,40,42,44,46,16,18,20,22,24,26,28,30,48,50,52,54,56,58,60,62]4712; AVX512VLVBMI-NEXT:    vpermt2b %ymm1, %ymm2, %ymm04713; AVX512VLVBMI-NEXT:    retq4714;4715; XOPAVX1-LABEL: shuffle_v32i8_00_02_04_06_08_10_12_14_32_34_36_38_40_42_44_46_16_18_20_22_24_26_28_30_48_50_52_54_56_58_60_62:4716; XOPAVX1:       # %bb.0:4717; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24718; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm34719; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm4 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]4720; XOPAVX1-NEXT:    vpperm %xmm4, %xmm2, %xmm3, %xmm24721; XOPAVX1-NEXT:    vpperm %xmm4, %xmm1, %xmm0, %xmm04722; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04723; XOPAVX1-NEXT:    retq4724;4725; XOPAVX2-LABEL: shuffle_v32i8_00_02_04_06_08_10_12_14_32_34_36_38_40_42_44_46_16_18_20_22_24_26_28_30_48_50_52_54_56_58_60_62:4726; XOPAVX2:       # %bb.0:4727; XOPAVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14]4728; XOPAVX2-NEXT:    vpshufb %ymm2, %ymm1, %ymm14729; XOPAVX2-NEXT:    vpshufb %ymm2, %ymm0, %ymm04730; XOPAVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]4731; XOPAVX2-NEXT:    retq4732  %1 = shufflevector <32 x i8> %a0, <32 x i8> %a1, <32 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 32, i32 34, i32 36, i32 38, i32 40, i32 42, i32 44, i32 46, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30, i32 48, i32 50, i32 52, i32 54, i32 56, i32 58, i32 60, i32 62>4733  ret <32 x i8> %14734}4735 4736define <32 x i8> @shuffle_v32i8_00_02_04_06_08_10_12_14_16_18_20_22_24_26_28_30_32_34_36_38_40_42_44_46_48_50_52_54_56_58_60_62(<32 x i8> %a0, <32 x i8> %a1) {4737; AVX1-LABEL: shuffle_v32i8_00_02_04_06_08_10_12_14_16_18_20_22_24_26_28_30_32_34_36_38_40_42_44_46_48_50_52_54_56_58_60_62:4738; AVX1:       # %bb.0:4739; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24740; AVX1-NEXT:    vbroadcastss {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255]4741; AVX1-NEXT:    vpand %xmm3, %xmm2, %xmm24742; AVX1-NEXT:    vpand %xmm3, %xmm1, %xmm14743; AVX1-NEXT:    vpackuswb %xmm2, %xmm1, %xmm14744; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm24745; AVX1-NEXT:    vpand %xmm3, %xmm2, %xmm24746; AVX1-NEXT:    vpand %xmm3, %xmm0, %xmm04747; AVX1-NEXT:    vpackuswb %xmm2, %xmm0, %xmm04748; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm04749; AVX1-NEXT:    retq4750;4751; AVX2-LABEL: shuffle_v32i8_00_02_04_06_08_10_12_14_16_18_20_22_24_26_28_30_32_34_36_38_40_42_44_46_48_50_52_54_56_58_60_62:4752; AVX2:       # %bb.0:4753; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14]4754; AVX2-NEXT:    vpshufb %ymm2, %ymm1, %ymm14755; AVX2-NEXT:    vpshufb %ymm2, %ymm0, %ymm04756; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]4757; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]4758; AVX2-NEXT:    retq4759;4760; AVX512VL-LABEL: shuffle_v32i8_00_02_04_06_08_10_12_14_16_18_20_22_24_26_28_30_32_34_36_38_40_42_44_46_48_50_52_54_56_58_60_62:4761; AVX512VL:       # %bb.0:4762; AVX512VL-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm04763; AVX512VL-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04764; AVX512VL-NEXT:    vpmovwb %zmm0, %ymm04765; AVX512VL-NEXT:    retq4766;4767; XOPAVX1-LABEL: shuffle_v32i8_00_02_04_06_08_10_12_14_16_18_20_22_24_26_28_30_32_34_36_38_40_42_44_46_48_50_52_54_56_58_60_62:4768; XOPAVX1:       # %bb.0:4769; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24770; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm3 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]4771; XOPAVX1-NEXT:    vpperm %xmm3, %xmm2, %xmm1, %xmm14772; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm24773; XOPAVX1-NEXT:    vpperm %xmm3, %xmm2, %xmm0, %xmm04774; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm04775; XOPAVX1-NEXT:    retq4776;4777; XOPAVX2-LABEL: shuffle_v32i8_00_02_04_06_08_10_12_14_16_18_20_22_24_26_28_30_32_34_36_38_40_42_44_46_48_50_52_54_56_58_60_62:4778; XOPAVX2:       # %bb.0:4779; XOPAVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14]4780; XOPAVX2-NEXT:    vpshufb %ymm2, %ymm1, %ymm14781; XOPAVX2-NEXT:    vpshufb %ymm2, %ymm0, %ymm04782; XOPAVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]4783; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]4784; XOPAVX2-NEXT:    retq4785  %1 = shufflevector <32 x i8> %a0, <32 x i8> %a1, <32 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, i32 32, i32 34, i32 36, i32 38, i32 40, i32 42, i32 44, i32 46, i32 48, i32 50, i32 52, i32 54, i32 56, i32 58, i32 60, i32 62>4786  ret <32 x i8> %14787}4788 4789define <32 x i8> @shuffle_v32i8_shift_00_02_04_06_08_10_12_14_16_18_20_22_24_26_28_30_32_34_36_38_40_42_44_46_48_50_52_54_56_58_60_62(<16 x i16> %a0, <16 x i16> %a1) {4790; AVX1-LABEL: shuffle_v32i8_shift_00_02_04_06_08_10_12_14_16_18_20_22_24_26_28_30_32_34_36_38_40_42_44_46_48_50_52_54_56_58_60_62:4791; AVX1:       # %bb.0:4792; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm24793; AVX1-NEXT:    vpsrlw $8, %xmm2, %xmm24794; AVX1-NEXT:    vpsrlw $8, %xmm0, %xmm04795; AVX1-NEXT:    vpackuswb %xmm2, %xmm0, %xmm04796; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24797; AVX1-NEXT:    vpsrlw $8, %xmm2, %xmm24798; AVX1-NEXT:    vpsrlw $8, %xmm1, %xmm14799; AVX1-NEXT:    vpackuswb %xmm2, %xmm1, %xmm14800; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm04801; AVX1-NEXT:    retq4802;4803; AVX2-LABEL: shuffle_v32i8_shift_00_02_04_06_08_10_12_14_16_18_20_22_24_26_28_30_32_34_36_38_40_42_44_46_48_50_52_54_56_58_60_62:4804; AVX2:       # %bb.0:4805; AVX2-NEXT:    vpsrlw $8, %ymm0, %ymm04806; AVX2-NEXT:    vpsrlw $8, %ymm1, %ymm14807; AVX2-NEXT:    vpackuswb %ymm1, %ymm0, %ymm04808; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]4809; AVX2-NEXT:    retq4810;4811; AVX512VL-LABEL: shuffle_v32i8_shift_00_02_04_06_08_10_12_14_16_18_20_22_24_26_28_30_32_34_36_38_40_42_44_46_48_50_52_54_56_58_60_62:4812; AVX512VL:       # %bb.0:4813; AVX512VL-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm04814; AVX512VL-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04815; AVX512VL-NEXT:    vpsrlw $8, %zmm0, %zmm04816; AVX512VL-NEXT:    vpmovwb %zmm0, %ymm04817; AVX512VL-NEXT:    retq4818;4819; XOPAVX1-LABEL: shuffle_v32i8_shift_00_02_04_06_08_10_12_14_16_18_20_22_24_26_28_30_32_34_36_38_40_42_44_46_48_50_52_54_56_58_60_62:4820; XOPAVX1:       # %bb.0:4821; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm24822; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm34823; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm4 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]4824; XOPAVX1-NEXT:    vpperm %xmm4, %xmm3, %xmm1, %xmm14825; XOPAVX1-NEXT:    vpperm %xmm4, %xmm2, %xmm0, %xmm04826; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm04827; XOPAVX1-NEXT:    retq4828;4829; XOPAVX2-LABEL: shuffle_v32i8_shift_00_02_04_06_08_10_12_14_16_18_20_22_24_26_28_30_32_34_36_38_40_42_44_46_48_50_52_54_56_58_60_62:4830; XOPAVX2:       # %bb.0:4831; XOPAVX2-NEXT:    vpsrlw $8, %ymm0, %ymm04832; XOPAVX2-NEXT:    vpsrlw $8, %ymm1, %ymm14833; XOPAVX2-NEXT:    vpackuswb %ymm1, %ymm0, %ymm04834; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]4835; XOPAVX2-NEXT:    retq4836  %1 = lshr <16 x i16> %a0, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>4837  %2 = lshr <16 x i16> %a1, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>4838  %3 = bitcast <16 x i16> %1 to <32 x i8>4839  %4 = bitcast <16 x i16> %2 to <32 x i8>4840  %5 = shufflevector <32 x i8> %3, <32 x i8> %4, <32 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, i32 32, i32 34, i32 36, i32 38, i32 40, i32 42, i32 44, i32 46, i32 48, i32 50, i32 52, i32 54, i32 56, i32 58, i32 60, i32 62>4841  ret <32 x i8> %54842}4843 4844; PR1169314845define void @shuffle_v32i8_store_00_08_16_24_01_09_17_25_02_10_18_26_03_11_19_27_04_12_20_28_05_13_21_29_06_14_22_30_07_15_23_31(ptr %out, <32 x i8> %a0) {4846; AVX1-LABEL: shuffle_v32i8_store_00_08_16_24_01_09_17_25_02_10_18_26_03_11_19_27_04_12_20_28_05_13_21_29_06_14_22_30_07_15_23_31:4847; AVX1:       # %bb.0:4848; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm14849; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15]4850; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm04851; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm14852; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]4853; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]4854; AVX1-NEXT:    vmovdqa %xmm0, 16(%rdi)4855; AVX1-NEXT:    vmovdqa %xmm2, (%rdi)4856; AVX1-NEXT:    vzeroupper4857; AVX1-NEXT:    retq4858;4859; AVX2-LABEL: shuffle_v32i8_store_00_08_16_24_01_09_17_25_02_10_18_26_03_11_19_27_04_12_20_28_05_13_21_29_06_14_22_30_07_15_23_31:4860; AVX2:       # %bb.0:4861; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm14862; AVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15]4863; AVX2-NEXT:    vpshufb %xmm2, %xmm0, %xmm04864; AVX2-NEXT:    vpshufb %xmm2, %xmm1, %xmm14865; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]4866; AVX2-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]4867; AVX2-NEXT:    vmovdqa %xmm0, 16(%rdi)4868; AVX2-NEXT:    vmovdqa %xmm2, (%rdi)4869; AVX2-NEXT:    vzeroupper4870; AVX2-NEXT:    retq4871;4872; AVX512VLBW-LABEL: shuffle_v32i8_store_00_08_16_24_01_09_17_25_02_10_18_26_03_11_19_27_04_12_20_28_05_13_21_29_06_14_22_30_07_15_23_31:4873; AVX512VLBW:       # %bb.0:4874; AVX512VLBW-NEXT:    vextracti128 $1, %ymm0, %xmm14875; AVX512VLBW-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15]4876; AVX512VLBW-NEXT:    vpshufb %xmm2, %xmm0, %xmm04877; AVX512VLBW-NEXT:    vpshufb %xmm2, %xmm1, %xmm14878; AVX512VLBW-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]4879; AVX512VLBW-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]4880; AVX512VLBW-NEXT:    vmovdqa %xmm0, 16(%rdi)4881; AVX512VLBW-NEXT:    vmovdqa %xmm2, (%rdi)4882; AVX512VLBW-NEXT:    vzeroupper4883; AVX512VLBW-NEXT:    retq4884;4885; AVX512VLVBMI-LABEL: shuffle_v32i8_store_00_08_16_24_01_09_17_25_02_10_18_26_03_11_19_27_04_12_20_28_05_13_21_29_06_14_22_30_07_15_23_31:4886; AVX512VLVBMI:       # %bb.0:4887; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm1 = [0,8,16,24,1,9,17,25,2,10,18,26,3,11,19,27,4,12,20,28,5,13,21,29,6,14,22,30,7,15,23,31]4888; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm04889; AVX512VLVBMI-NEXT:    vmovdqa %ymm0, (%rdi)4890; AVX512VLVBMI-NEXT:    vzeroupper4891; AVX512VLVBMI-NEXT:    retq4892;4893; XOPAVX1-LABEL: shuffle_v32i8_store_00_08_16_24_01_09_17_25_02_10_18_26_03_11_19_27_04_12_20_28_05_13_21_29_06_14_22_30_07_15_23_31:4894; XOPAVX1:       # %bb.0:4895; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm14896; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15]4897; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm04898; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm14899; XOPAVX1-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]4900; XOPAVX1-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]4901; XOPAVX1-NEXT:    vmovdqa %xmm0, 16(%rdi)4902; XOPAVX1-NEXT:    vmovdqa %xmm2, (%rdi)4903; XOPAVX1-NEXT:    vzeroupper4904; XOPAVX1-NEXT:    retq4905;4906; XOPAVX2-LABEL: shuffle_v32i8_store_00_08_16_24_01_09_17_25_02_10_18_26_03_11_19_27_04_12_20_28_05_13_21_29_06_14_22_30_07_15_23_31:4907; XOPAVX2:       # %bb.0:4908; XOPAVX2-NEXT:    vextracti128 $1, %ymm0, %xmm14909; XOPAVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15]4910; XOPAVX2-NEXT:    vpshufb %xmm2, %xmm0, %xmm04911; XOPAVX2-NEXT:    vpshufb %xmm2, %xmm1, %xmm14912; XOPAVX2-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]4913; XOPAVX2-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]4914; XOPAVX2-NEXT:    vmovdqa %xmm0, 16(%rdi)4915; XOPAVX2-NEXT:    vmovdqa %xmm2, (%rdi)4916; XOPAVX2-NEXT:    vzeroupper4917; XOPAVX2-NEXT:    retq4918  %r = shufflevector <32 x i8> %a0, <32 x i8> poison, <32 x i32> <i32 0, i32 8, i32 16, i32 24, i32 1, i32 9, i32 17, i32 25, i32 2, i32 10, i32 18, i32 26, i32 3, i32 11, i32 19, i32 27, i32 4, i32 12, i32 20, i32 28, i32 5, i32 13, i32 21, i32 29, i32 6, i32 14, i32 22, i32 30, i32 7, i32 15, i32 23, i32 31>4919  store <32 x i8> %r, ptr %out, align 324920  ret void4921}4922 4923define <4 x i64> @PR28136(<32 x i8> %a0, <32 x i8> %a1) {4924; AVX1-LABEL: PR28136:4925; AVX1:       # %bb.0:4926; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24927; AVX1-NEXT:    vpunpcklbw {{.*#+}} 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]4928; AVX1-NEXT:    vpshufb {{.*#+}} xmm2 = zero,xmm1[8],zero,xmm1[10],zero,xmm1[12],zero,xmm1[14],zero,xmm1[9],zero,xmm1[11],zero,xmm1[13],zero,xmm1[15]4929; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm34930; AVX1-NEXT:    vpunpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]4931; AVX1-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[8],zero,xmm0[10],zero,xmm0[12],zero,xmm0[14],zero,xmm0[9],zero,xmm0[11],zero,xmm0[13],zero,xmm0[15],zero4932; AVX1-NEXT:    vpor %xmm2, %xmm3, %xmm24933; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = zero,xmm1[0],zero,xmm1[2],zero,xmm1[4],zero,xmm1[6],zero,xmm1[1],zero,xmm1[3],zero,xmm1[5],zero,xmm1[7]4934; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0],zero,xmm0[2],zero,xmm0[4],zero,xmm0[6],zero,xmm0[1],zero,xmm0[3],zero,xmm0[5],zero,xmm0[7],zero4935; AVX1-NEXT:    vpor %xmm1, %xmm0, %xmm04936; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04937; AVX1-NEXT:    retq4938;4939; AVX2OR512VL-LABEL: PR28136:4940; AVX2OR512VL:       # %bb.0:4941; AVX2OR512VL-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]4942; AVX2OR512VL-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]4943; AVX2OR512VL-NEXT:    retq4944;4945; XOPAVX1-LABEL: PR28136:4946; XOPAVX1:       # %bb.0:4947; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24948; XOPAVX1-NEXT:    vpunpcklbw {{.*#+}} 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]4949; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm24950; XOPAVX1-NEXT:    vpunpcklbw {{.*#+}} 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]4951; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm2 = xmm0[8],xmm1[8],xmm0[10],xmm1[10],xmm0[12],xmm1[12],xmm0[14],xmm1[14],xmm0[9],xmm1[9],xmm0[11],xmm1[11],xmm0[13],xmm1[13],xmm0[15],xmm1[15]4952; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[2],xmm1[2],xmm0[4],xmm1[4],xmm0[6],xmm1[6],xmm0[1],xmm1[1],xmm0[3],xmm1[3],xmm0[5],xmm1[5],xmm0[7],xmm1[7]4953; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04954; XOPAVX1-NEXT:    retq4955;4956; XOPAVX2-LABEL: PR28136:4957; XOPAVX2:       # %bb.0:4958; XOPAVX2-NEXT:    vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]4959; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]4960; XOPAVX2-NEXT:    retq4961  %1 = shufflevector <32 x i8> %a0, <32 x i8> %a1, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50,i32 19, i32 51, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55>4962  %2 = bitcast <32 x i8> %1 to <4 x i64>4963  %3 = shufflevector <4 x i64> %2, <4 x i64> poison, <4 x i32> <i32 0, i32 2, i32 1, i32 3>4964  ret <4 x i64> %34965}4966 4967define <32 x i8> @PR47262(<4 x i64> %a0) {4968; AVX1-LABEL: PR47262:4969; AVX1:       # %bb.0:4970; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm14971; AVX1-NEXT:    vpunpckhbw {{.*#+}} xmm2 = 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]4972; AVX1-NEXT:    vmovdqa {{.*#+}} xmm3 = [0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15]4973; AVX1-NEXT:    vpshufb %xmm3, %xmm2, %xmm24974; AVX1-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]4975; AVX1-NEXT:    vpshufb %xmm3, %xmm0, %xmm04976; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm04977; AVX1-NEXT:    retq4978;4979; AVX2-LABEL: PR47262:4980; AVX2:       # %bb.0:4981; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]4982; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15,16,20,24,28,17,21,25,29,18,22,26,30,19,23,27,31]4983; AVX2-NEXT:    retq4984;4985; AVX512VLBW-LABEL: PR47262:4986; AVX512VLBW:       # %bb.0:4987; AVX512VLBW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]4988; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15,16,20,24,28,17,21,25,29,18,22,26,30,19,23,27,31]4989; AVX512VLBW-NEXT:    retq4990;4991; AVX512VLVBMI-LABEL: PR47262:4992; AVX512VLVBMI:       # %bb.0:4993; AVX512VLVBMI-NEXT:    vmovdqa {{.*#+}} ymm1 = [0,4,16,20,1,5,17,21,2,6,18,22,3,7,19,23,8,12,24,28,9,13,25,29,10,14,26,30,11,15,27,31]4994; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm04995; AVX512VLVBMI-NEXT:    retq4996;4997; XOPAVX1-LABEL: PR47262:4998; XOPAVX1:       # %bb.0:4999; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm15000; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm2 = xmm0[8,12],xmm1[8,12],xmm0[9,13],xmm1[9,13],xmm0[10,14],xmm1[10,14],xmm0[11,15],xmm1[11,15]5001; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,4],xmm1[0,4],xmm0[1,5],xmm1[1,5],xmm0[2,6],xmm1[2,6],xmm0[3,7],xmm1[3,7]5002; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm05003; XOPAVX1-NEXT:    retq5004;5005; XOPAVX2-LABEL: PR47262:5006; XOPAVX2:       # %bb.0:5007; XOPAVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]5008; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15,16,20,24,28,17,21,25,29,18,22,26,30,19,23,27,31]5009; XOPAVX2-NEXT:    retq5010  %t1 = shufflevector <4 x i64> %a0, <4 x i64> poison, <4 x i32> <i32 0, i32 2, i32 1, i32 3>5011  %t2 = bitcast <4 x i64> %t1 to <32 x i8>5012  %t3 = shufflevector <32 x i8> %t2, <32 x i8> poison, <32 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13, i32 2, i32 6, i32 10, i32 14, i32 3, i32 7, i32 11, i32 15, i32 16, i32 20, i32 24, i32 28, i32 17, i32 21, i32 25, i32 29, i32 18, i32 22, i32 26, i32 30, i32 19, i32 23, i32 27, i32 31>5013    ret <32 x i8> %t35014}5015 5016define <32 x i8> @PR55066(<32 x i8> %a0) {5017; AVX1-LABEL: PR55066:5018; AVX1:       # %bb.0:5019; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm15020; AVX1-NEXT:    vbroadcastss {{.*#+}} xmm2 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]5021; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm15022; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm05023; AVX1-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]5024; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm05025; AVX1-NEXT:    retq5026;5027; AVX2-LABEL: PR55066:5028; AVX2:       # %bb.0:5029; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u,16,20,24,28,u,u,u,u,u,u,u,u,u,u,u,u]5030; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm1 = [0,4,0,4,0,4,0,4]5031; AVX2-NEXT:    vpermd %ymm0, %ymm1, %ymm05032; AVX2-NEXT:    retq5033;5034; AVX512VLBW-LABEL: PR55066:5035; AVX512VLBW:       # %bb.0:5036; AVX512VLBW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u,16,20,24,28,u,u,u,u,u,u,u,u,u,u,u,u]5037; AVX512VLBW-NEXT:    vpbroadcastq {{.*#+}} ymm1 = [0,4,0,4,0,4,0,4]5038; AVX512VLBW-NEXT:    vpermd %ymm0, %ymm1, %ymm05039; AVX512VLBW-NEXT:    retq5040;5041; AVX512VLVBMI-LABEL: PR55066:5042; AVX512VLVBMI:       # %bb.0:5043; AVX512VLVBMI-NEXT:    vpbroadcastq {{.*#+}} ymm1 = [0,4,8,12,16,20,24,28,0,4,8,12,16,20,24,28,0,4,8,12,16,20,24,28,0,4,8,12,16,20,24,28]5044; AVX512VLVBMI-NEXT:    vpermb %ymm0, %ymm1, %ymm05045; AVX512VLVBMI-NEXT:    retq5046;5047; XOPAVX1-LABEL: PR55066:5048; XOPAVX1:       # %bb.0:5049; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm15050; XOPAVX1-NEXT:    vpperm {{.*#+}} xmm0 = xmm0[0,4,8,12],xmm1[0,4,8,12],xmm0[0,4,8,12],xmm1[0,4,8,12]5051; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm05052; XOPAVX1-NEXT:    retq5053;5054; XOPAVX2-LABEL: PR55066:5055; XOPAVX2:       # %bb.0:5056; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u,16,20,24,28,u,u,u,u,u,u,u,u,u,u,u,u]5057; XOPAVX2-NEXT:    vpbroadcastq {{.*#+}} ymm1 = [0,4,0,4,0,4,0,4]5058; XOPAVX2-NEXT:    vpermd %ymm0, %ymm1, %ymm05059; XOPAVX2-NEXT:    retq5060  %shuffle = shufflevector <32 x i8> %a0, <32 x i8> poison, <32 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 28, i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 28, i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 28, i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 28>5061  ret <32 x i8> %shuffle5062}5063 5064define <4 x i64> @PR66150(ptr %b) {5065; AVX1-LABEL: PR66150:5066; AVX1:       # %bb.0:5067; AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero5068; AVX1-NEXT:    vpunpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]5069; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,0,1,1,4,5,6,7]5070; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[2,2,3,3,4,5,6,7]5071; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm05072; AVX1-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[0,0,1,1,4,4,5,5]5073; AVX1-NEXT:    retq5074;5075; AVX2OR512VL-LABEL: PR66150:5076; AVX2OR512VL:       # %bb.0:5077; AVX2OR512VL-NEXT:    vpbroadcastd (%rdi), %ymm05078; AVX2OR512VL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19]5079; AVX2OR512VL-NEXT:    retq5080;5081; XOPAVX1-LABEL: PR66150:5082; XOPAVX1:       # %bb.0:5083; XOPAVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero5084; XOPAVX1-NEXT:    vpunpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]5085; XOPAVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,0,1,1,4,5,6,7]5086; XOPAVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[2,2,3,3,4,5,6,7]5087; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm05088; XOPAVX1-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[0,0,1,1,4,4,5,5]5089; XOPAVX1-NEXT:    retq5090;5091; XOPAVX2-LABEL: PR66150:5092; XOPAVX2:       # %bb.0:5093; XOPAVX2-NEXT:    vpbroadcastd (%rdi), %ymm05094; XOPAVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19]5095; XOPAVX2-NEXT:    retq5096  %tmp1 = load i32, ptr %b, align 45097  %tmp2 = insertelement <8 x i32> poison, i32 %tmp1, i64 05098  %tmp3 = shufflevector <8 x i32> %tmp2, <8 x i32> poison, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 0, i32 poison, i32 poison, i32 poison>5099  %tmp4 = bitcast <8 x i32> %tmp3 to <32 x i8>5100  %tmp5 = shufflevector <32 x i8> %tmp4, <32 x i8> poison, <32 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, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19>5101  %tmp6 = bitcast <32 x i8> %tmp5 to <4 x i64>5102  ret <4 x i64> %tmp65103}5104 5105define <64 x i8> @PR103564(<32 x i8> %a0, <32 x i8> %a1) {5106; AVX1-LABEL: PR103564:5107; AVX1:       # %bb.0:5108; AVX1-NEXT:    vpunpckhbw {{.*#+}} xmm2 = 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]5109; AVX1-NEXT:    vpunpcklbw {{.*#+}} xmm3 = 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]5110; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm25111; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm15112; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm05113; AVX1-NEXT:    vpunpckhbw {{.*#+}} xmm3 = 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]5114; AVX1-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]5115; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm15116; AVX1-NEXT:    vmovaps %ymm2, %ymm05117; AVX1-NEXT:    retq5118;5119; AVX2-LABEL: PR103564:5120; AVX2:       # %bb.0:5121; AVX2-NEXT:    vpunpckhbw {{.*#+}} ymm2 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31]5122; AVX2-NEXT:    vpunpcklbw {{.*#+}} ymm1 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]5123; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm1[0,1],ymm2[0,1]5124; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm1 = ymm1[2,3],ymm2[2,3]5125; AVX2-NEXT:    retq5126;5127; AVX512VLBW-LABEL: PR103564:5128; AVX512VLBW:       # %bb.0:5129; AVX512VLBW-NEXT:    vextracti128 $1, %ymm1, %xmm25130; AVX512VLBW-NEXT:    vextracti128 $1, %ymm0, %xmm35131; AVX512VLBW-NEXT:    vpunpckhbw {{.*#+}} xmm4 = 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]5132; AVX512VLBW-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]5133; AVX512VLBW-NEXT:    vinserti128 $1, %xmm4, %ymm2, %ymm25134; AVX512VLBW-NEXT:    vpunpckhbw {{.*#+}} xmm3 = 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]5135; AVX512VLBW-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]5136; AVX512VLBW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm05137; AVX512VLBW-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm05138; AVX512VLBW-NEXT:    retq5139;5140; AVX512VLVBMI-LABEL: PR103564:5141; AVX512VLVBMI:       # %bb.0:5142; AVX512VLVBMI-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm15143; AVX512VLVBMI-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm05144; AVX512VLVBMI-NEXT:    vmovdqa64 {{.*#+}} zmm2 = [0,64,1,65,2,66,3,67,4,68,5,69,6,70,7,71,8,72,9,73,10,74,11,75,12,76,13,77,14,78,15,79,16,80,17,81,18,82,19,83,20,84,21,85,22,86,23,87,24,88,25,89,26,90,27,91,28,92,29,93,30,94,31,95]5145; AVX512VLVBMI-NEXT:    vpermt2b %zmm1, %zmm2, %zmm05146; AVX512VLVBMI-NEXT:    retq5147;5148; XOPAVX1-LABEL: PR103564:5149; XOPAVX1:       # %bb.0:5150; XOPAVX1-NEXT:    vpunpckhbw {{.*#+}} xmm2 = 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]5151; XOPAVX1-NEXT:    vpunpcklbw {{.*#+}} xmm3 = 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]5152; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm25153; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm15154; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm05155; XOPAVX1-NEXT:    vpunpckhbw {{.*#+}} xmm3 = 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]5156; XOPAVX1-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]5157; XOPAVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm15158; XOPAVX1-NEXT:    vmovaps %ymm2, %ymm05159; XOPAVX1-NEXT:    retq5160;5161; XOPAVX2-LABEL: PR103564:5162; XOPAVX2:       # %bb.0:5163; XOPAVX2-NEXT:    vpunpckhbw {{.*#+}} ymm2 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31]5164; XOPAVX2-NEXT:    vpunpcklbw {{.*#+}} ymm1 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]5165; XOPAVX2-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm1[0,1],ymm2[0,1]5166; XOPAVX2-NEXT:    vperm2i128 {{.*#+}} ymm1 = ymm1[2,3],ymm2[2,3]5167; XOPAVX2-NEXT:    retq5168  %r = shufflevector <32 x i8> %a0, <32 x i8> %a1, <64 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>5169  ret <64 x i8> %r5170}5171 5172define <32 x i8> @insert_dup_mem_v32i8_i32(ptr %ptr) {5173; AVX1-LABEL: insert_dup_mem_v32i8_i32:5174; AVX1:       # %bb.0:5175; AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero5176; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm15177; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm05178; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm05179; AVX1-NEXT:    retq5180;5181; AVX2OR512VL-LABEL: insert_dup_mem_v32i8_i32:5182; AVX2OR512VL:       # %bb.0:5183; AVX2OR512VL-NEXT:    vpbroadcastb (%rdi), %ymm05184; AVX2OR512VL-NEXT:    retq5185;5186; XOPAVX1-LABEL: insert_dup_mem_v32i8_i32:5187; XOPAVX1:       # %bb.0:5188; XOPAVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero5189; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm15190; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm05191; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm05192; XOPAVX1-NEXT:    retq5193;5194; XOPAVX2-LABEL: insert_dup_mem_v32i8_i32:5195; XOPAVX2:       # %bb.0:5196; XOPAVX2-NEXT:    vpbroadcastb (%rdi), %ymm05197; XOPAVX2-NEXT:    retq5198  %tmp = load i32, ptr %ptr, align 45199  %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 05200  %tmp2 = bitcast <4 x i32> %tmp1 to <16 x i8>5201  %tmp3 = shufflevector <16 x i8> %tmp2, <16 x i8> poison, <32 x i32> zeroinitializer5202  ret <32 x i8> %tmp35203}5204 5205define <32 x i8> @insert_dup_mem_v32i8_sext_i8(ptr %ptr) {5206; AVX1-LABEL: insert_dup_mem_v32i8_sext_i8:5207; AVX1:       # %bb.0:5208; AVX1-NEXT:    movzbl (%rdi), %eax5209; AVX1-NEXT:    vmovd %eax, %xmm05210; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm15211; AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm05212; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm05213; AVX1-NEXT:    retq5214;5215; AVX2OR512VL-LABEL: insert_dup_mem_v32i8_sext_i8:5216; AVX2OR512VL:       # %bb.0:5217; AVX2OR512VL-NEXT:    vpbroadcastb (%rdi), %ymm05218; AVX2OR512VL-NEXT:    retq5219;5220; XOPAVX1-LABEL: insert_dup_mem_v32i8_sext_i8:5221; XOPAVX1:       # %bb.0:5222; XOPAVX1-NEXT:    movzbl (%rdi), %eax5223; XOPAVX1-NEXT:    vmovd %eax, %xmm05224; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm15225; XOPAVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm05226; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm05227; XOPAVX1-NEXT:    retq5228;5229; XOPAVX2-LABEL: insert_dup_mem_v32i8_sext_i8:5230; XOPAVX2:       # %bb.0:5231; XOPAVX2-NEXT:    vpbroadcastb (%rdi), %ymm05232; XOPAVX2-NEXT:    retq5233  %tmp = load i8, ptr %ptr, align 15234  %tmp1 = sext i8 %tmp to i325235  %tmp2 = insertelement <4 x i32> zeroinitializer, i32 %tmp1, i32 05236  %tmp3 = bitcast <4 x i32> %tmp2 to <16 x i8>5237  %tmp4 = shufflevector <16 x i8> %tmp3, <16 x i8> poison, <32 x i32> zeroinitializer5238  ret <32 x i8> %tmp45239}5240 5241define <32 x i8> @insert_dup_elt1_mem_v32i8_i32(ptr %ptr) {5242; AVX1-LABEL: insert_dup_elt1_mem_v32i8_i32:5243; AVX1:       # %bb.0:5244; AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero5245; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]5246; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm05247; AVX1-NEXT:    retq5248;5249; AVX2OR512VL-LABEL: insert_dup_elt1_mem_v32i8_i32:5250; AVX2OR512VL:       # %bb.0:5251; AVX2OR512VL-NEXT:    vpbroadcastb 1(%rdi), %ymm05252; AVX2OR512VL-NEXT:    retq5253;5254; XOPAVX1-LABEL: insert_dup_elt1_mem_v32i8_i32:5255; XOPAVX1:       # %bb.0:5256; XOPAVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero5257; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]5258; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm05259; XOPAVX1-NEXT:    retq5260;5261; XOPAVX2-LABEL: insert_dup_elt1_mem_v32i8_i32:5262; XOPAVX2:       # %bb.0:5263; XOPAVX2-NEXT:    vpbroadcastb 1(%rdi), %ymm05264; XOPAVX2-NEXT:    retq5265  %tmp = load i32, ptr %ptr, align 45266  %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 05267  %tmp2 = bitcast <4 x i32> %tmp1 to <16 x i8>5268  %tmp3 = shufflevector <16 x i8> %tmp2, <16 x i8> poison, <32 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, 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>5269  ret <32 x i8> %tmp35270}5271 5272define <32 x i8> @insert_dup_elt3_mem_v32i8_i32(ptr %ptr) {5273; AVX1-LABEL: insert_dup_elt3_mem_v32i8_i32:5274; AVX1:       # %bb.0:5275; AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero5276; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]5277; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm05278; AVX1-NEXT:    retq5279;5280; AVX2OR512VL-LABEL: insert_dup_elt3_mem_v32i8_i32:5281; AVX2OR512VL:       # %bb.0:5282; AVX2OR512VL-NEXT:    vpbroadcastb 3(%rdi), %ymm05283; AVX2OR512VL-NEXT:    retq5284;5285; XOPAVX1-LABEL: insert_dup_elt3_mem_v32i8_i32:5286; XOPAVX1:       # %bb.0:5287; XOPAVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero5288; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]5289; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm05290; XOPAVX1-NEXT:    retq5291;5292; XOPAVX2-LABEL: insert_dup_elt3_mem_v32i8_i32:5293; XOPAVX2:       # %bb.0:5294; XOPAVX2-NEXT:    vpbroadcastb 3(%rdi), %ymm05295; XOPAVX2-NEXT:    retq5296  %tmp = load i32, ptr %ptr, align 45297  %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 05298  %tmp2 = bitcast <4 x i32> %tmp1 to <16 x i8>5299  %tmp3 = shufflevector <16 x i8> %tmp2, <16 x i8> poison, <32 x i32> <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>5300  ret <32 x i8> %tmp35301}5302 5303define <32 x i8> @insert_dup_elt1_mem_v32i8_sext_i8(ptr %ptr) {5304; AVX1-LABEL: insert_dup_elt1_mem_v32i8_sext_i8:5305; AVX1:       # %bb.0:5306; AVX1-NEXT:    movsbl (%rdi), %eax5307; AVX1-NEXT:    vmovd %eax, %xmm05308; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]5309; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm05310; AVX1-NEXT:    retq5311;5312; AVX2-LABEL: insert_dup_elt1_mem_v32i8_sext_i8:5313; AVX2:       # %bb.0:5314; AVX2-NEXT:    movsbl (%rdi), %eax5315; AVX2-NEXT:    shrl $8, %eax5316; AVX2-NEXT:    vmovd %eax, %xmm05317; AVX2-NEXT:    vpbroadcastb %xmm0, %ymm05318; AVX2-NEXT:    retq5319;5320; AVX512VL-LABEL: insert_dup_elt1_mem_v32i8_sext_i8:5321; AVX512VL:       # %bb.0:5322; AVX512VL-NEXT:    movsbl (%rdi), %eax5323; AVX512VL-NEXT:    shrl $8, %eax5324; AVX512VL-NEXT:    vpbroadcastb %eax, %ymm05325; AVX512VL-NEXT:    retq5326;5327; XOPAVX1-LABEL: insert_dup_elt1_mem_v32i8_sext_i8:5328; XOPAVX1:       # %bb.0:5329; XOPAVX1-NEXT:    movsbl (%rdi), %eax5330; XOPAVX1-NEXT:    vmovd %eax, %xmm05331; XOPAVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]5332; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm05333; XOPAVX1-NEXT:    retq5334;5335; XOPAVX2-LABEL: insert_dup_elt1_mem_v32i8_sext_i8:5336; XOPAVX2:       # %bb.0:5337; XOPAVX2-NEXT:    movsbl (%rdi), %eax5338; XOPAVX2-NEXT:    shrl $8, %eax5339; XOPAVX2-NEXT:    vmovd %eax, %xmm05340; XOPAVX2-NEXT:    vpbroadcastb %xmm0, %ymm05341; XOPAVX2-NEXT:    retq5342  %tmp = load i8, ptr %ptr, align 15343  %tmp1 = sext i8 %tmp to i325344  %tmp2 = insertelement <4 x i32> zeroinitializer, i32 %tmp1, i32 05345  %tmp3 = bitcast <4 x i32> %tmp2 to <16 x i8>5346  %tmp4 = shufflevector <16 x i8> %tmp3, <16 x i8> poison, <32 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, 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>5347  ret <32 x i8> %tmp45348}5349 5350define <32 x i8> @zeroable_src_to_zext(<32 x i8> %a0) {5351; AVX1-LABEL: zeroable_src_to_zext:5352; AVX1:       # %bb.0:5353; AVX1-NEXT:    vpmovzxwq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero5354; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]5355; AVX1-NEXT:    vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero5356; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm05357; AVX1-NEXT:    retq5358;5359; AVX2OR512VL-LABEL: zeroable_src_to_zext:5360; AVX2OR512VL:       # %bb.0:5361; AVX2OR512VL-NEXT:    vpmovzxwq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero5362; AVX2OR512VL-NEXT:    retq5363;5364; XOPAVX1-LABEL: zeroable_src_to_zext:5365; XOPAVX1:       # %bb.0:5366; XOPAVX1-NEXT:    vpmovzxwq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero5367; XOPAVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]5368; XOPAVX1-NEXT:    vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero5369; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm05370; XOPAVX1-NEXT:    retq5371;5372; XOPAVX2-LABEL: zeroable_src_to_zext:5373; XOPAVX2:       # %bb.0:5374; XOPAVX2-NEXT:    vpmovzxwq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero5375; XOPAVX2-NEXT:    retq5376  %1 = shufflevector <32 x i8> %a0, <32 x i8> poison, <32 x i32> <i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>5377  %2 = shufflevector <32 x i8> %1, <32 x i8> <i8 0, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 0, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison>, <32 x i32> <i32 8, i32 9, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 10, i32 11, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 20, i32 21, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48, i32 22, i32 23, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48>5378  ret <32 x i8> %25379}5380 5381define <32 x i8> @unpckh_v32i8(<32 x i8> %x, <32 x i8> %y) {5382; AVX1-LABEL: unpckh_v32i8:5383; AVX1:       # %bb.0:5384; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm15385; AVX1-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]5386; AVX1-NEXT:    retq5387;5388; AVX2OR512VL-LABEL: unpckh_v32i8:5389; AVX2OR512VL:       # %bb.0:5390; AVX2OR512VL-NEXT:    vextracti128 $1, %ymm1, %xmm15391; AVX2OR512VL-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]5392; AVX2OR512VL-NEXT:    retq5393;5394; XOPAVX1-LABEL: unpckh_v32i8:5395; XOPAVX1:       # %bb.0:5396; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm15397; XOPAVX1-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]5398; XOPAVX1-NEXT:    retq5399;5400; XOPAVX2-LABEL: unpckh_v32i8:5401; XOPAVX2:       # %bb.0:5402; XOPAVX2-NEXT:    vextracti128 $1, %ymm1, %xmm15403; XOPAVX2-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]5404; XOPAVX2-NEXT:    retq5405  %unpckh = shufflevector <32 x i8> %x, <32 x i8> %y, <32 x i32> <i32 8, i32 56, i32 9, i32 57, i32 10, i32 58, i32 11, i32 59, i32 12, i32 60, i32 13, i32 61, i32 14, i32 62, i32 15, i32 63, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>5406  ret <32 x i8> %unpckh5407}5408 5409define <32 x i8> @shuffle_v16i16_zextinreg_to_v8i32(<32 x i8> %a)  {5410; AVX1-LABEL: shuffle_v16i16_zextinreg_to_v8i32:5411; AVX1:       # %bb.0:5412; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm15413; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]5414; AVX1-NEXT:    vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero5415; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm05416; AVX1-NEXT:    retq5417;5418; AVX2OR512VL-LABEL: shuffle_v16i16_zextinreg_to_v8i32:5419; AVX2OR512VL:       # %bb.0:5420; AVX2OR512VL-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero5421; AVX2OR512VL-NEXT:    retq5422;5423; XOPAVX1-LABEL: shuffle_v16i16_zextinreg_to_v8i32:5424; XOPAVX1:       # %bb.0:5425; XOPAVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm15426; XOPAVX1-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]5427; XOPAVX1-NEXT:    vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero5428; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm05429; XOPAVX1-NEXT:    retq5430;5431; XOPAVX2-LABEL: shuffle_v16i16_zextinreg_to_v8i32:5432; XOPAVX2:       # %bb.0:5433; XOPAVX2-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero5434; XOPAVX2-NEXT:    retq5435  %b = shufflevector <32 x i8> %a, <32 x i8> <i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 0, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison>, <32 x i32> <i32 0, i32 1, i32 42, i32 42, i32 2, i32 3, i32 42, i32 42, i32 4, i32 5, i32 42, i32 42, i32 6, i32 7, i32 42, i32 42, i32 8, i32 9, i32 42, i32 42, i32 10, i32 11, i32 42, i32 42, i32 12, i32 13, i32 42, i32 42, i32 14, i32 15, i32 42, i32 42>5436  ret <32 x i8> %b5437}5438