brintos

brintos / llvm-project-archived public Read only

0
0
Text · 31.4 KiB · 2d2bd38 Raw
518 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl | FileCheck --check-prefixes=ALL,KNL %s3; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=skx | FileCheck --check-prefixes=ALL,SKX %s4 5target triple = "x86_64-unknown-unknown"6 7define <32 x i16> @shuffle_v32i16(<32 x i16> %a)  {8; KNL-LABEL: shuffle_v32i16:9; KNL:       ## %bb.0:10; KNL-NEXT:    vpbroadcastw %xmm0, %ymm011; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm012; KNL-NEXT:    retq13;14; SKX-LABEL: shuffle_v32i16:15; SKX:       ## %bb.0:16; SKX-NEXT:    vpbroadcastw %xmm0, %zmm017; SKX-NEXT:    retq18  %c = shufflevector <32 x i16> %a, <32 x i16> poison, <32 x i32> zeroinitializer19  ret <32 x i16> %c20}21 22define <32 x i16> @shuffle_v32i16_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08(<32 x i16> %a)  {23; KNL-LABEL: shuffle_v32i16_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08:24; KNL:       ## %bb.0:25; KNL-NEXT:    vextracti128 $1, %ymm0, %xmm026; KNL-NEXT:    vpbroadcastw %xmm0, %ymm027; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm028; KNL-NEXT:    retq29;30; SKX-LABEL: shuffle_v32i16_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08_08:31; SKX:       ## %bb.0:32; SKX-NEXT:    vpbroadcastd {{.*#+}} zmm1 = [8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]33; SKX-NEXT:    vpermw %zmm0, %zmm1, %zmm034; SKX-NEXT:    retq35  %c = shufflevector <32 x i16> %a, <32 x i16> poison, <32 x i32> <i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>36  ret <32 x i16> %c37}38 39define <32 x i16> @shuffle_v32i16_02_05_u_u_07_u_0a_01_00_05_u_04_07_u_0a_01_02_05_u_u_07_u_0a_01_00_05_u_04_07_u_0a_1f(<32 x i16> %a)  {40; KNL-LABEL: shuffle_v32i16_02_05_u_u_07_u_0a_01_00_05_u_04_07_u_0a_01_02_05_u_u_07_u_0a_01_00_05_u_04_07_u_0a_1f:41; KNL:       ## %bb.0:42; KNL-NEXT:    vpshufb {{.*#+}} ymm1 = ymm0[4,5,10,11,4,5,6,7,14,15,2,3,4,5,2,3,20,21,26,27,20,21,22,23,30,31,18,19,20,21,18,19]43; KNL-NEXT:    vpermq {{.*#+}} ymm2 = ymm0[2,3,0,1]44; KNL-NEXT:    vpshufb {{.*#+}} ymm3 = ymm2[0,1,10,11,8,9,8,9,14,15,6,7,4,5,14,15,16,17,26,27,24,25,24,25,30,31,22,23,20,21,30,31]45; KNL-NEXT:    vmovdqa {{.*#+}} ymm4 = [255,255,255,255,u,u,u,u,255,255,u,u,0,0,255,255,0,0,0,0,u,u,0,0,0,0,u,u,255,255,u,u]46; KNL-NEXT:    vpblendvb %ymm4, %ymm1, %ymm3, %ymm347; KNL-NEXT:    vextracti64x4 $1, %zmm0, %ymm048; KNL-NEXT:    vpblendw {{.*#+}} ymm0 = ymm3[0,1,2,3,4,5,6],ymm0[7],ymm3[8,9,10,11,12,13,14],ymm0[15]49; KNL-NEXT:    vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]50; KNL-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[0,1,10,11,8,9,8,9,14,15,2,3,4,5,2,3,16,17,26,27,24,25,24,25,30,31,18,19,20,21,18,19]51; KNL-NEXT:    vmovdqa {{.*#+}} ymm3 = [0,0,0,0,u,u,u,u,0,0,u,u,255,255,0,0,255,255,255,255,u,u,255,255,255,255,u,u,0,0,255,255]52; KNL-NEXT:    vpblendvb %ymm3, %ymm2, %ymm1, %ymm153; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm054; KNL-NEXT:    retq55;56; SKX-LABEL: shuffle_v32i16_02_05_u_u_07_u_0a_01_00_05_u_04_07_u_0a_01_02_05_u_u_07_u_0a_01_00_05_u_04_07_u_0a_1f:57; SKX:       ## %bb.0:58; SKX-NEXT:    vmovdqa64 {{.*#+}} zmm1 = [2,5,u,u,7,u,10,1,0,5,u,4,7,u,10,1,2,5,u,u,7,u,10,1,0,5,u,4,7,u,10,31]59; SKX-NEXT:    vpermw %zmm0, %zmm1, %zmm060; SKX-NEXT:    retq61  %c = shufflevector <32 x i16> %a, <32 x i16> poison, <32 x i32> <i32 2, i32 5, i32 poison, i32 poison, i32 7, i32 poison, i32 10, i32 1,  i32 0, i32 5, i32 poison, i32 4, i32 7, i32 poison, i32 10, i32 1, i32 2, i32 5, i32 poison, i32 poison, i32 7, i32 poison, i32 10, i32 1,  i32 0, i32 5, i32 poison, i32 4, i32 7, i32 poison, i32 10, i32 31>62  ret <32 x i16> %c63}64 65define <32 x i16> @shuffle_v32i16_0f_1f_0e_16_0d_1d_04_1e_0b_1b_0a_1a_09_19_08_18_0f_1f_0e_16_0d_1d_04_1e_0b_1b_0a_1a_09_19_08_38(<32 x i16> %a, <32 x i16> %b)  {66; KNL-LABEL: shuffle_v32i16_0f_1f_0e_16_0d_1d_04_1e_0b_1b_0a_1a_09_19_08_18_0f_1f_0e_16_0d_1d_04_1e_0b_1b_0a_1a_09_19_08_38:67; KNL:       ## %bb.0:68; KNL-NEXT:    vextracti64x4 $1, %zmm0, %ymm269; KNL-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[3,1,2,3]70; KNL-NEXT:    vpshufb {{.*#+}} ymm3 = ymm2[6,7,12,13,2,3,0,1,u,u,u,u,u,u,u,u,22,23,20,21,18,19,u,u,u,u,u,u,u,u,u,u]71; KNL-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[3,1,2,3]72; KNL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[6,7,4,5,2,3,8,9,u,u,u,u,u,u,u,u,22,23,20,21,18,19,16,17,u,u,u,u,u,u,u,u]73; KNL-NEXT:    vpunpcklwd {{.*#+}} ymm3 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[8],ymm3[8],ymm0[9],ymm3[9],ymm0[10],ymm3[10],ymm0[11],ymm3[11]74; KNL-NEXT:    vextracti32x4 $3, %zmm1, %xmm175; KNL-NEXT:    vpbroadcastw %xmm1, %ymm176; KNL-NEXT:    vpblendw {{.*#+}} ymm1 = ymm3[0,1,2,3,4,5,6],ymm1[7],ymm3[8,9,10,11,12,13,14],ymm1[15]77; KNL-NEXT:    vpblendd {{.*#+}} ymm1 = ymm3[0,1,2,3],ymm1[4,5,6,7]78; KNL-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[6,7,12,13,2,3,0,1,u,u,u,u,u,u,u,u,22,23,20,21,18,19,16,17,u,u,u,u,u,u,u,u]79; KNL-NEXT:    vpunpcklwd {{.*#+}} ymm0 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[2],ymm2[2],ymm0[3],ymm2[3],ymm0[8],ymm2[8],ymm0[9],ymm2[9],ymm0[10],ymm2[10],ymm0[11],ymm2[11]80; KNL-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm081; KNL-NEXT:    retq82;83; SKX-LABEL: shuffle_v32i16_0f_1f_0e_16_0d_1d_04_1e_0b_1b_0a_1a_09_19_08_18_0f_1f_0e_16_0d_1d_04_1e_0b_1b_0a_1a_09_19_08_38:84; SKX:       ## %bb.0:85; SKX-NEXT:    vmovdqa64 {{.*#+}} zmm2 = [15,31,14,22,13,29,4,28,11,27,10,26,9,25,8,24,15,31,14,22,13,29,4,28,11,27,10,26,9,25,8,56]86; SKX-NEXT:    vpermt2w %zmm1, %zmm2, %zmm087; SKX-NEXT:    retq88  %c = shufflevector <32 x i16> %a, <32 x i16> %b, <32 x i32> <i32 15, i32 31, i32 14, i32 22, i32 13, i32 29, i32 4, i32 28, i32 11, i32 27, i32 10, i32 26, i32 9, i32 25, i32 8, i32 24, i32 15, i32 31, i32 14, i32 22, i32 13, i32 29, i32 4, i32 28, i32 11, i32 27, i32 10, i32 26, i32 9, i32 25, i32 8, i32 56>89  ret <32 x i16> %c90}91 92define <32 x i16> @shuffle_v16i32_0_32_1_33_2_34_3_35_8_40_9_41_u_u_u_u(<32 x i16> %a, <32 x i16> %b)  {93; ALL-LABEL: shuffle_v16i32_0_32_1_33_2_34_3_35_8_40_9_41_u_u_u_u:94; ALL:       ## %bb.0:95; ALL-NEXT:    vpunpcklwd {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11]96; ALL-NEXT:    retq97  %c = shufflevector <32 x i16> %a, <32 x i16> %b, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, 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 poison, i32 poison, i32 poison, i32 poison>98  ret <32 x i16> %c99}100 101define <32 x i16> @shuffle_v16i32_4_36_5_37_6_38_7_39_12_44_13_45_u_u_u_u(<32 x i16> %a, <32 x i16> %b)  {102; ALL-LABEL: shuffle_v16i32_4_36_5_37_6_38_7_39_12_44_13_45_u_u_u_u:103; ALL:       ## %bb.0:104; ALL-NEXT:    vpunpckhwd {{.*#+}} ymm0 = ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15]105; ALL-NEXT:    retq106  %c = shufflevector <32 x i16> %a, <32 x i16> %b, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, 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 poison, i32 poison, i32 poison, i32 poison>107  ret <32 x i16> %c108}109 110define <32 x i16> @shuffle_v32i16_1_z_3_z_5_z_7_z_9_z_11_z_13_z_15_z_17_z_19_z_21_z_23_z_25_z_27_z_29_z_31_z(<32 x i16> %a, <32 x i16> %b)  {111; ALL-LABEL: shuffle_v32i16_1_z_3_z_5_z_7_z_9_z_11_z_13_z_15_z_17_z_19_z_21_z_23_z_25_z_27_z_29_z_31_z:112; ALL:       ## %bb.0:113; ALL-NEXT:    vpsrld $16, %zmm0, %zmm0114; ALL-NEXT:    retq115  %c = shufflevector <32 x i16> %a, <32 x i16> zeroinitializer, <32 x i32> <i32 1, i32 34, i32 3, i32 34, i32 5, i32 34, i32 7, i32 34, i32 9, i32 34, i32 11, i32 34, i32 13, i32 34, i32 15, i32 34, i32 17, i32 34, i32 19, i32 34, i32 21, i32 34, i32 23, i32 34, i32 25, i32 34, i32 27, i32 34, i32 29, i32 34, i32 31, i32 34>116  ret <32 x i16> %c117}118 119define <32 x i16> @shuffle_v32i16_z_0_z_2_z_4_z_6_z_8_z_10_z_12_z_14_z_16_z_18_z_20_z_22_z_24_z_26_z_28_z_30(<32 x i16> %a, <32 x i16> %b)  {120; ALL-LABEL: shuffle_v32i16_z_0_z_2_z_4_z_6_z_8_z_10_z_12_z_14_z_16_z_18_z_20_z_22_z_24_z_26_z_28_z_30:121; ALL:       ## %bb.0:122; ALL-NEXT:    vpslld $16, %zmm0, %zmm0123; ALL-NEXT:    retq124  %c = shufflevector <32 x i16> %a, <32 x i16> zeroinitializer, <32 x i32> <i32 34, i32 0, i32 34, i32 2, i32 34, i32 4, i32 34, i32 6, i32 34, i32 8, i32 34, i32 10, i32 34, i32 12, i32 34, i32 14, i32 34, i32 16, i32 34, i32 18, i32 34, i32 20, i32 34, i32 22, i32 34, i32 24, i32 34, i32 26, i32 34, i32 28, i32 34, i32 30>125  ret <32 x i16> %c126}127 128define <32 x i16> @shuffle_v32i16_1_1_0_0_4_5_6_7_9_9_8_8_12_13_14_15_17_17_16_16_20_21_22_23_25_25_24_24_28_29_30_31(<32 x i16> %a, <32 x i16> %b)  {129; KNL-LABEL: shuffle_v32i16_1_1_0_0_4_5_6_7_9_9_8_8_12_13_14_15_17_17_16_16_20_21_22_23_25_25_24_24_28_29_30_31:130; KNL:       ## %bb.0:131; KNL-NEXT:    vpshuflw {{.*#+}} ymm1 = ymm0[1,1,0,0,4,5,6,7,9,9,8,8,12,13,14,15]132; KNL-NEXT:    vextracti64x4 $1, %zmm0, %ymm0133; KNL-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[1,1,0,0,4,5,6,7,9,9,8,8,12,13,14,15]134; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0135; KNL-NEXT:    retq136;137; SKX-LABEL: shuffle_v32i16_1_1_0_0_4_5_6_7_9_9_8_8_12_13_14_15_17_17_16_16_20_21_22_23_25_25_24_24_28_29_30_31:138; SKX:       ## %bb.0:139; SKX-NEXT:    vpshuflw {{.*#+}} zmm0 = zmm0[1,1,0,0,4,5,6,7,9,9,8,8,12,13,14,15,17,17,16,16,20,21,22,23,25,25,24,24,28,29,30,31]140; SKX-NEXT:    retq141  %c = shufflevector <32 x i16> %a, <32 x i16> zeroinitializer, <32 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7, i32 9, i32 9, i32 8, i32 8, i32 12, i32 13, i32 14, i32 15, i32 17, i32 17, i32 16, i32 16, i32 20, i32 21, i32 22, i32 23, i32 25, i32 25, i32 24, i32 24, i32 28, i32 29, i32 30, i32 31>142  ret <32 x i16> %c143}144 145define <32 x i16> @shuffle_v32i16_0_1_2_3_5_5_4_4_8_9_10_11_13_13_12_12_16_17_18_19_21_21_20_20_24_25_26_27_29_29_28_28(<32 x i16> %a, <32 x i16> %b)  {146; KNL-LABEL: shuffle_v32i16_0_1_2_3_5_5_4_4_8_9_10_11_13_13_12_12_16_17_18_19_21_21_20_20_24_25_26_27_29_29_28_28:147; KNL:       ## %bb.0:148; KNL-NEXT:    vpshufhw {{.*#+}} ymm1 = ymm0[0,1,2,3,5,5,4,4,8,9,10,11,13,13,12,12]149; KNL-NEXT:    vextracti64x4 $1, %zmm0, %ymm0150; KNL-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,5,5,4,4,8,9,10,11,13,13,12,12]151; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0152; KNL-NEXT:    retq153;154; SKX-LABEL: shuffle_v32i16_0_1_2_3_5_5_4_4_8_9_10_11_13_13_12_12_16_17_18_19_21_21_20_20_24_25_26_27_29_29_28_28:155; SKX:       ## %bb.0:156; SKX-NEXT:    vpshufhw {{.*#+}} zmm0 = zmm0[0,1,2,3,5,5,4,4,8,9,10,11,13,13,12,12,16,17,18,19,21,21,20,20,24,25,26,27,29,29,28,28]157; SKX-NEXT:    retq158  %c = shufflevector <32 x i16> %a, <32 x i16> zeroinitializer, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4, i32 8, i32 9, i32 10, i32 11, i32 13, i32 13, i32 12, i32 12, i32 16, i32 17, i32 18, i32 19, i32 21, i32 21, i32 20, i32 20, i32 24, i32 25, i32 26, i32 27, i32 29, i32 29, i32 28, i32 28>159  ret <32 x i16> %c160}161 162define <32 x i16> @shuffle_v32i16_1_1_0_0_5_5_4_4_9_9_11_11_13_13_12_12_17_17_19_19_21_21_20_20_25_25_27_27_29_29_28_28(<32 x i16> %a, <32 x i16> %b)  {163; KNL-LABEL: shuffle_v32i16_1_1_0_0_5_5_4_4_9_9_11_11_13_13_12_12_17_17_19_19_21_21_20_20_25_25_27_27_29_29_28_28:164; KNL:       ## %bb.0:165; KNL-NEXT:    vpshuflw {{.*#+}} ymm1 = ymm0[1,1,0,0,4,5,6,7,9,9,8,8,12,13,14,15]166; KNL-NEXT:    vpshufhw {{.*#+}} ymm1 = ymm1[0,1,2,3,5,5,4,4,8,9,10,11,13,13,12,12]167; KNL-NEXT:    vextracti64x4 $1, %zmm0, %ymm0168; KNL-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[1,1,0,0,4,5,6,7,9,9,8,8,12,13,14,15]169; KNL-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,5,5,4,4,8,9,10,11,13,13,12,12]170; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0171; KNL-NEXT:    retq172;173; SKX-LABEL: shuffle_v32i16_1_1_0_0_5_5_4_4_9_9_11_11_13_13_12_12_17_17_19_19_21_21_20_20_25_25_27_27_29_29_28_28:174; SKX:       ## %bb.0:175; SKX-NEXT:    vpshufb {{.*#+}} zmm0 = zmm0[2,3,2,3,0,1,0,1,10,11,10,11,8,9,8,9,18,19,18,19,16,17,16,17,26,27,26,27,24,25,24,25,34,35,34,35,32,33,32,33,42,43,42,43,40,41,40,41,50,51,50,51,48,49,48,49,58,59,58,59,56,57,56,57]176; SKX-NEXT:    retq177  %c = shufflevector <32 x i16> %a, <32 x i16> zeroinitializer, <32 x i32> <i32 1, i32 1, i32 0, i32 0, i32 5, i32 5, i32 4, i32 4, i32 9, i32 9, i32 8, i32 8, i32 13, i32 13, i32 12, i32 12, i32 17, i32 17, i32 16, i32 16, i32 21, i32 21, i32 20, i32 20, i32 25, i32 25, i32 24, i32 24, i32 29, i32 29, i32 28, i32 28>178  ret <32 x i16> %c179}180 181define <32 x i16> @shuffle_v32i16_01_00_03_02_05_04_07_06_09_08_11_10_13_12_15_14_17_16_19_18_21_20_23_22_25_24_27_26_29_28_31_30(<32 x i16> %a) {182; ALL-LABEL: shuffle_v32i16_01_00_03_02_05_04_07_06_09_08_11_10_13_12_15_14_17_16_19_18_21_20_23_22_25_24_27_26_29_28_31_30:183; ALL:       ## %bb.0:184; ALL-NEXT:    vprold $16, %zmm0, %zmm0185; ALL-NEXT:    retq186  %shuffle = shufflevector <32 x i16> %a, <32 x i16> poison, <32 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6, i32 9, i32 8, i32 11, i32 10, i32 13, i32 12, i32 15, i32 14, i32 17, i32 16, i32 19, i32 18, i32 21, i32 20, i32 23, i32 22, i32 25, i32 24, i32 27, i32 26, i32 29, i32 28, i32 31, i32 30>187  ret <32 x i16> %shuffle188}189 190define <32 x i16> @shuffle_v32i16_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 i16> %a) {191; ALL-LABEL: shuffle_v32i16_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:192; ALL:       ## %bb.0:193; ALL-NEXT:    vprolq $16, %zmm0, %zmm0194; ALL-NEXT:    retq195  %shuffle = shufflevector <32 x i16> %a, <32 x i16> 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>196  ret <32 x i16> %shuffle197}198 199define <32 x i16> @shuffle_v32i16_0zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz(<32 x i16> %a) {200; KNL-LABEL: shuffle_v32i16_0zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz:201; KNL:       ## %bb.0:202; KNL-NEXT:    vmovd {{.*#+}} xmm1 = [65535,0,0,0]203; KNL-NEXT:    vpandq %zmm1, %zmm0, %zmm0204; KNL-NEXT:    retq205;206; SKX-LABEL: shuffle_v32i16_0zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz:207; SKX:       ## %bb.0:208; SKX-NEXT:    vmovaps {{.*#+}} xmm1 = [65535,0,0,0]209; SKX-NEXT:    vandps %zmm1, %zmm0, %zmm0210; SKX-NEXT:    retq211  %shuffle = shufflevector <32 x i16> %a, <32 x i16> zeroinitializer, <32 x i32> <i32 0, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32>212  ret <32 x i16> %shuffle213}214 215define <32 x i16> @shuffle_v32i16_ashr_00_02_04_06_32_34_36_38_08_10_12_14_40_42_44_46_16_18_20_22_48_50_52_54_24_26_28_30_56_58_60_62(<16 x i32> %a0, <16 x i32> %a1) nounwind {216; KNL-LABEL: shuffle_v32i16_ashr_00_02_04_06_32_34_36_38_08_10_12_14_40_42_44_46_16_18_20_22_48_50_52_54_24_26_28_30_56_58_60_62:217; KNL:       ## %bb.0:218; KNL-NEXT:    vpsrad $25, %zmm0, %zmm0219; KNL-NEXT:    vpsrad $25, %zmm1, %zmm1220; KNL-NEXT:    vextracti64x4 $1, %zmm1, %ymm2221; KNL-NEXT:    vextracti64x4 $1, %zmm0, %ymm3222; KNL-NEXT:    vpackssdw %ymm2, %ymm3, %ymm2223; KNL-NEXT:    vpackssdw %ymm1, %ymm0, %ymm0224; KNL-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm0225; KNL-NEXT:    retq226;227; SKX-LABEL: shuffle_v32i16_ashr_00_02_04_06_32_34_36_38_08_10_12_14_40_42_44_46_16_18_20_22_48_50_52_54_24_26_28_30_56_58_60_62:228; SKX:       ## %bb.0:229; SKX-NEXT:    vpsrad $25, %zmm0, %zmm0230; SKX-NEXT:    vpsrad $25, %zmm1, %zmm1231; SKX-NEXT:    vpackssdw %zmm1, %zmm0, %zmm0232; SKX-NEXT:    retq233  %1 = ashr <16 x i32> %a0, <i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25>234  %2 = ashr <16 x i32> %a1, <i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25>235  %3 = bitcast <16 x i32> %1 to <32 x i16>236  %4 = bitcast <16 x i32> %2 to <32 x i16>237  %5 = shufflevector <32 x i16> %3, <32 x i16> %4, <32 x i32> <i32 0, i32 2, i32 4, i32 6, i32 32, i32 34, i32 36, i32 38, i32 8, i32 10, i32 12, i32 14, i32 40, i32 42, i32 44, i32 46, i32 16, i32 18, i32 20, i32 22, i32 48, i32 50, i32 52, i32 54, i32 24, i32 26, i32 28, i32 30, i32 56, i32 58, i32 60, i32 62>238  ret <32 x i16> %5239}240 241define <32 x i16> @shuffle_v32i16_lshr_00_02_04_06_32_34_36_38_08_10_12_14_40_42_44_46_16_18_20_22_48_50_52_54_24_26_28_30_56_58_60_62(<16 x i32> %a0, <16 x i32> %a1) nounwind {242; KNL-LABEL: shuffle_v32i16_lshr_00_02_04_06_32_34_36_38_08_10_12_14_40_42_44_46_16_18_20_22_48_50_52_54_24_26_28_30_56_58_60_62:243; KNL:       ## %bb.0:244; KNL-NEXT:    vpsrld $25, %zmm0, %zmm0245; KNL-NEXT:    vpsrld $25, %zmm1, %zmm1246; KNL-NEXT:    vextracti64x4 $1, %zmm1, %ymm2247; KNL-NEXT:    vextracti64x4 $1, %zmm0, %ymm3248; KNL-NEXT:    vpackusdw %ymm2, %ymm3, %ymm2249; KNL-NEXT:    vpackusdw %ymm1, %ymm0, %ymm0250; KNL-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm0251; KNL-NEXT:    retq252;253; SKX-LABEL: shuffle_v32i16_lshr_00_02_04_06_32_34_36_38_08_10_12_14_40_42_44_46_16_18_20_22_48_50_52_54_24_26_28_30_56_58_60_62:254; SKX:       ## %bb.0:255; SKX-NEXT:    vpsrld $25, %zmm0, %zmm0256; SKX-NEXT:    vpsrld $25, %zmm1, %zmm1257; SKX-NEXT:    vpackusdw %zmm1, %zmm0, %zmm0258; SKX-NEXT:    retq259  %1 = lshr <16 x i32> %a0, <i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25>260  %2 = lshr <16 x i32> %a1, <i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25>261  %3 = bitcast <16 x i32> %1 to <32 x i16>262  %4 = bitcast <16 x i32> %2 to <32 x i16>263  %5 = shufflevector <32 x i16> %3, <32 x i16> %4, <32 x i32> <i32 0, i32 2, i32 4, i32 6, i32 32, i32 34, i32 36, i32 38, i32 8, i32 10, i32 12, i32 14, i32 40, i32 42, i32 44, i32 46, i32 16, i32 18, i32 20, i32 22, i32 48, i32 50, i32 52, i32 54, i32 24, i32 26, i32 28, i32 30, i32 56, i32 58, i32 60, i32 62>264  ret <32 x i16> %5265}266 267define <32 x i16> @shuffle_v32i16_concat_00_00_00_00_04_05_06_07_08_08_08_08_12_13_14_15_16_16_16_16_20_21_22_23_24_24_24_24_28_29_30_31(<16 x i16> %a0, <16 x i16> %a1) {268; KNL-LABEL: shuffle_v32i16_concat_00_00_00_00_04_05_06_07_08_08_08_08_12_13_14_15_16_16_16_16_20_21_22_23_24_24_24_24_28_29_30_31:269; KNL:       ## %bb.0:270; KNL-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]271; KNL-NEXT:    vpshuflw {{.*#+}} ymm1 = ymm1[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]272; KNL-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0273; KNL-NEXT:    retq274;275; SKX-LABEL: shuffle_v32i16_concat_00_00_00_00_04_05_06_07_08_08_08_08_12_13_14_15_16_16_16_16_20_21_22_23_24_24_24_24_28_29_30_31:276; SKX:       ## %bb.0:277; SKX-NEXT:    ## kill: def $ymm0 killed $ymm0 def $zmm0278; SKX-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0279; SKX-NEXT:    vpshuflw {{.*#+}} zmm0 = zmm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15,16,16,16,16,20,21,22,23,24,24,24,24,28,29,30,31]280; SKX-NEXT:    retq281  %shuffle = shufflevector <16 x i16> %a0, <16 x i16> %a1, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7, i32 8, i32 8, i32 8, i32 8, i32 12, i32 13, i32 14, i32 15, i32 16, i32 16, i32 16, i32 16, i32 20, i32 21, i32 22, i32 23, i32 24, i32 24, i32 24, i32 24, i32 28, i32 29, i32 30, i32 31>282  ret <32 x i16> %shuffle283}284 285define <32 x i16> @shuffle_v32i16_concat_00_01_02_03_04_07_06_04_08_09_10_11_12_15_14_12_16_17_18_19_20_23_22_20_24_25_26_27_28_31_30_28(<16 x i16> %a0, <16 x i16> %a1) {286; KNL-LABEL: shuffle_v32i16_concat_00_01_02_03_04_07_06_04_08_09_10_11_12_15_14_12_16_17_18_19_20_23_22_20_24_25_26_27_28_31_30_28:287; KNL:       ## %bb.0:288; KNL-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,7,6,4,8,9,10,11,12,15,14,12]289; KNL-NEXT:    vpshufhw {{.*#+}} ymm1 = ymm1[0,1,2,3,4,7,6,4,8,9,10,11,12,15,14,12]290; KNL-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0291; KNL-NEXT:    retq292;293; SKX-LABEL: shuffle_v32i16_concat_00_01_02_03_04_07_06_04_08_09_10_11_12_15_14_12_16_17_18_19_20_23_22_20_24_25_26_27_28_31_30_28:294; SKX:       ## %bb.0:295; SKX-NEXT:    ## kill: def $ymm0 killed $ymm0 def $zmm0296; SKX-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0297; SKX-NEXT:    vpshufhw {{.*#+}} zmm0 = zmm0[0,1,2,3,4,7,6,4,8,9,10,11,12,15,14,12,16,17,18,19,20,23,22,20,24,25,26,27,28,31,30,28]298; SKX-NEXT:    retq299  %shuffle = shufflevector <16 x i16> %a0, <16 x i16> %a1, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 7, i32 6, i32 4, i32 8, i32 9, i32 10, i32 11, i32 12, i32 15, i32 14, i32 12, i32 16, i32 17, i32 18, i32 19, i32 20, i32 23, i32 22, i32 20, i32 24, i32 25, i32 26, i32 27, i32 28, i32 31, i32 30, i32 28>300  ret <32 x i16> %shuffle301}302 303define <32 x i16> @insert_dup_mem_v32i16_i32(ptr %ptr) {304; KNL-LABEL: insert_dup_mem_v32i16_i32:305; KNL:       ## %bb.0:306; KNL-NEXT:    vpbroadcastw (%rdi), %ymm0307; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0308; KNL-NEXT:    retq309;310; SKX-LABEL: insert_dup_mem_v32i16_i32:311; SKX:       ## %bb.0:312; SKX-NEXT:    vpbroadcastw (%rdi), %zmm0313; SKX-NEXT:    retq314  %tmp = load i32, ptr %ptr, align 4315  %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 0316  %tmp2 = bitcast <4 x i32> %tmp1 to <8 x i16>317  %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> poison, <32 x i32> zeroinitializer318  ret <32 x i16> %tmp3319}320 321define <32 x i16> @insert_dup_mem_v32i16_sext_i16(ptr %ptr) {322; KNL-LABEL: insert_dup_mem_v32i16_sext_i16:323; KNL:       ## %bb.0:324; KNL-NEXT:    vpbroadcastw (%rdi), %ymm0325; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0326; KNL-NEXT:    retq327;328; SKX-LABEL: insert_dup_mem_v32i16_sext_i16:329; SKX:       ## %bb.0:330; SKX-NEXT:    vpbroadcastw (%rdi), %zmm0331; SKX-NEXT:    retq332  %tmp = load i16, ptr %ptr, align 2333  %tmp1 = sext i16 %tmp to i32334  %tmp2 = insertelement <4 x i32> zeroinitializer, i32 %tmp1, i32 0335  %tmp3 = bitcast <4 x i32> %tmp2 to <8 x i16>336  %tmp4 = shufflevector <8 x i16> %tmp3, <8 x i16> poison, <32 x i32> zeroinitializer337  ret <32 x i16> %tmp4338}339 340define <32 x i16> @insert_dup_elt1_mem_v32i16_i32(ptr %ptr) #0 {341; KNL-LABEL: insert_dup_elt1_mem_v32i16_i32:342; KNL:       ## %bb.0:343; KNL-NEXT:    vpbroadcastw 2(%rdi), %ymm0344; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0345; KNL-NEXT:    retq346;347; SKX-LABEL: insert_dup_elt1_mem_v32i16_i32:348; SKX:       ## %bb.0:349; SKX-NEXT:    vpbroadcastw 2(%rdi), %zmm0350; SKX-NEXT:    retq351  %tmp = load i32, ptr %ptr, align 4352  %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 0353  %tmp2 = bitcast <4 x i32> %tmp1 to <8 x i16>354  %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> 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>355  ret <32 x i16> %tmp3356}357 358define <32 x i16> @insert_dup_elt3_mem_v32i16_i32(ptr %ptr) #0 {359; KNL-LABEL: insert_dup_elt3_mem_v32i16_i32:360; KNL:       ## %bb.0:361; KNL-NEXT:    vpbroadcastw 2(%rdi), %ymm0362; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0363; KNL-NEXT:    retq364;365; SKX-LABEL: insert_dup_elt3_mem_v32i16_i32:366; SKX:       ## %bb.0:367; SKX-NEXT:    vpbroadcastw 2(%rdi), %zmm0368; SKX-NEXT:    retq369  %tmp = load i32, ptr %ptr, align 4370  %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 1371  %tmp2 = bitcast <4 x i32> %tmp1 to <8 x i16>372  %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> 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>373  ret <32 x i16> %tmp3374}375 376define <32 x i16> @insert_dup_mem_v16i16_i64(ptr %ptr) {377; KNL-LABEL: insert_dup_mem_v16i16_i64:378; KNL:       ## %bb.0:379; KNL-NEXT:    vpbroadcastw (%rdi), %ymm0380; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0381; KNL-NEXT:    retq382;383; SKX-LABEL: insert_dup_mem_v16i16_i64:384; SKX:       ## %bb.0:385; SKX-NEXT:    vpbroadcastw (%rdi), %zmm0386; SKX-NEXT:    retq387  %tmp = load i64, ptr %ptr, align 4388  %tmp1 = insertelement <2 x i64> zeroinitializer, i64 %tmp, i32 0389  %tmp2 = bitcast <2 x i64> %tmp1 to <8 x i16>390  %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> poison, <32 x i32> zeroinitializer391  ret <32 x i16> %tmp3392}393 394define <32 x i16> @insert_dup_elt1_mem_v16i16_i64(ptr %ptr) {395; KNL-LABEL: insert_dup_elt1_mem_v16i16_i64:396; KNL:       ## %bb.0:397; KNL-NEXT:    vpbroadcastw 2(%rdi), %ymm0398; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0399; KNL-NEXT:    retq400;401; SKX-LABEL: insert_dup_elt1_mem_v16i16_i64:402; SKX:       ## %bb.0:403; SKX-NEXT:    vpbroadcastw 2(%rdi), %zmm0404; SKX-NEXT:    retq405  %tmp = load i64, ptr %ptr, align 4406  %tmp1 = insertelement <2 x i64> zeroinitializer, i64 %tmp, i32 0407  %tmp2 = bitcast <2 x i64> %tmp1 to <8 x i16>408  %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> 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>409  ret <32 x i16> %tmp3410}411 412define <32 x i16> @insert_dup_elt3_mem_v16i16_i64(ptr %ptr) {413; KNL-LABEL: insert_dup_elt3_mem_v16i16_i64:414; KNL:       ## %bb.0:415; KNL-NEXT:    vpbroadcastw 6(%rdi), %ymm0416; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0417; KNL-NEXT:    retq418;419; SKX-LABEL: insert_dup_elt3_mem_v16i16_i64:420; SKX:       ## %bb.0:421; SKX-NEXT:    vpbroadcastw 6(%rdi), %zmm0422; SKX-NEXT:    retq423  %tmp = load i64, ptr %ptr, align 4424  %tmp1 = insertelement <2 x i64> zeroinitializer, i64 %tmp, i32 0425  %tmp2 = bitcast <2 x i64> %tmp1 to <8 x i16>426  %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> 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>427  ret <32 x i16> %tmp3428}429 430define <32 x i16> @insert_dup_elt7_mem_v16i16_i64(ptr %ptr) {431; KNL-LABEL: insert_dup_elt7_mem_v16i16_i64:432; KNL:       ## %bb.0:433; KNL-NEXT:    vpbroadcastw 6(%rdi), %ymm0434; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0435; KNL-NEXT:    retq436;437; SKX-LABEL: insert_dup_elt7_mem_v16i16_i64:438; SKX:       ## %bb.0:439; SKX-NEXT:    vpbroadcastw 6(%rdi), %zmm0440; SKX-NEXT:    retq441  %tmp = load i64, ptr %ptr, align 4442  %tmp1 = insertelement <2 x i64> zeroinitializer, i64 %tmp, i32 1443  %tmp2 = bitcast <2 x i64> %tmp1 to <8 x i16>444  %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> poison, <32 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>445  ret <32 x i16> %tmp3446}447 448define <32 x i16> @insert_dup_mem_v16i16_sext_i16_i64(ptr %ptr) {449; KNL-LABEL: insert_dup_mem_v16i16_sext_i16_i64:450; KNL:       ## %bb.0:451; KNL-NEXT:    vpbroadcastw (%rdi), %ymm0452; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0453; KNL-NEXT:    retq454;455; SKX-LABEL: insert_dup_mem_v16i16_sext_i16_i64:456; SKX:       ## %bb.0:457; SKX-NEXT:    vpbroadcastw (%rdi), %zmm0458; SKX-NEXT:    retq459  %tmp = load i16, ptr %ptr, align 2460  %tmp1 = sext i16 %tmp to i64461  %tmp2 = insertelement <2 x i64> zeroinitializer, i64 %tmp1, i32 0462  %tmp3 = bitcast <2 x i64> %tmp2 to <8 x i16>463  %tmp4 = shufflevector <8 x i16> %tmp3, <8 x i16> poison, <32 x i32> zeroinitializer464  ret <32 x i16> %tmp4465}466 467define <32 x i16> @shuffle_v32i16_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 i16> %a) {468; ALL-LABEL: shuffle_v32i16_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:469; ALL:       ## %bb.0:470; ALL-NEXT:    vpmovzxwq {{.*#+}} zmm0 = 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,zero471; ALL-NEXT:    retq472  %shuffle = shufflevector <32 x i16> zeroinitializer, <32 x i16> %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>473  ret <32 x i16> %shuffle474}475 476define <32 x i16> @shuffle_v32i16_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 i16> %a) {477; ALL-LABEL: shuffle_v32i16_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:478; ALL:       ## %bb.0:479; ALL-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero480; ALL-NEXT:    retq481  %shuffle = shufflevector <32 x i16> zeroinitializer, <32 x i16> %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>482  ret <32 x i16> %shuffle483}484 485define <8 x i16> @pr32967(<32 x i16> %v) {486; KNL-LABEL: pr32967:487; KNL:       ## %bb.0:488; KNL-NEXT:    vpsrlq $16, %zmm0, %zmm0489; KNL-NEXT:    vpmovqw %zmm0, %xmm0490; KNL-NEXT:    retq491;492; SKX-LABEL: pr32967:493; SKX:       ## %bb.0:494; SKX-NEXT:    vpsrlq $16, %zmm0, %zmm0495; SKX-NEXT:    vpmovqw %zmm0, %xmm0496; SKX-NEXT:    vzeroupper497; SKX-NEXT:    retq498 %shuffle = shufflevector <32 x i16> %v, <32 x i16> poison, <8 x i32> <i32 1,i32 5,i32 9,i32 13,i32 17,i32 21,i32 25,i32 29>499 ret <8 x i16> %shuffle500}501 502define <32 x i16> @shuffle_v32i16_07_zz_05_zz_03_zz_01_zz_15_zz_13_zz_11_zz_09_zz_23_zz_21_zz_19_zz_17_zz_31_zz_29_zz_27_zz_25_zz(<32 x i16> %a) {503; KNL-LABEL: shuffle_v32i16_07_zz_05_zz_03_zz_01_zz_15_zz_13_zz_11_zz_09_zz_23_zz_21_zz_19_zz_17_zz_31_zz_29_zz_27_zz_25_zz:504; KNL:       ## %bb.0:505; KNL-NEXT:    vpshufb {{.*#+}} ymm1 = ymm0[14,15],zero,zero,ymm0[10,11],zero,zero,ymm0[6,7],zero,zero,ymm0[2,3],zero,zero,ymm0[30,31],zero,zero,ymm0[26,27],zero,zero,ymm0[22,23],zero,zero,ymm0[18,19],zero,zero506; KNL-NEXT:    vextracti64x4 $1, %zmm0, %ymm0507; KNL-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[14,15],zero,zero,ymm0[10,11],zero,zero,ymm0[6,7],zero,zero,ymm0[2,3],zero,zero,ymm0[30,31],zero,zero,ymm0[26,27],zero,zero,ymm0[22,23],zero,zero,ymm0[20,21],zero,zero508; KNL-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0509; KNL-NEXT:    retq510;511; SKX-LABEL: shuffle_v32i16_07_zz_05_zz_03_zz_01_zz_15_zz_13_zz_11_zz_09_zz_23_zz_21_zz_19_zz_17_zz_31_zz_29_zz_27_zz_25_zz:512; SKX:       ## %bb.0:513; SKX-NEXT:    vpshufb {{.*#+}} zmm0 = zmm0[14,15],zero,zero,zmm0[10,11],zero,zero,zmm0[6,7],zero,zero,zmm0[2,3],zero,zero,zmm0[30,31],zero,zero,zmm0[26,27],zero,zero,zmm0[22,23],zero,zero,zmm0[18,19],zero,zero,zmm0[46,47],zero,zero,zmm0[42,43],zero,zero,zmm0[38,39],zero,zero,zmm0[34,35],zero,zero,zmm0[62,63],zero,zero,zmm0[58,59],zero,zero,zmm0[54,55],zero,zero,zmm0[52,53],zero,zero514; SKX-NEXT:    retq515  %shuffle = shufflevector <32 x i16> zeroinitializer, <32 x i16> %a, <32 x i32> <i32 39, i32 0, i32 37, i32 0, i32 35, i32 0, i32 33, i32 0, i32 47, i32 0, i32 45, i32 0, i32 43, i32 0, i32 41, i32 0, i32 55, i32 0, i32 53, i32 0, i32 51, i32 0, i32 49, i32 0, i32 63, i32 0, i32 61, i32 0, i32 59, i32 0, i32 58, i32 0>516  ret <32 x i16> %shuffle517}518