brintos

brintos / llvm-project-archived public Read only

0
0
Text · 146.2 KiB · 7a06269 Raw
2009 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+sse2 | FileCheck %s --check-prefixes=SSE,SSE23; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+sse4.2 | FileCheck %s --check-prefixes=SSE,SSE424; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX15; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX26; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+xop,+avx | FileCheck %s --check-prefixes=XOP,XOPAVX17; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+xop,+avx2 | FileCheck %s --check-prefixes=XOP,XOPAVX28; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx512f | FileCheck %s --check-prefixes=AVX512,AVX512F9; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx512f,+avx512dq | FileCheck %s --check-prefixes=AVX512,AVX512F10; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefixes=AVX512,AVX512BW11; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx512f,+avx512vl | FileCheck %s --check-prefixes=AVX512,AVX512F12; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx512f,+avx512dq,+avx512vl | FileCheck %s --check-prefixes=AVX512,AVX512VL13; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx512f,+avx512bw,+avx512vl | FileCheck %s --check-prefixes=AVX512,AVX512BWVL14;15; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mcpu=slm | FileCheck %s --check-prefixes=SSE,SSE4216; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mcpu=goldmont | FileCheck %s --check-prefixes=SSE,SSE4217; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mcpu=btver2 | FileCheck %s --check-prefixes=AVX,AVX118; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mcpu=tigerlake | FileCheck %s --check-prefixes=AVX512,AVX512GFNI19 20; Verify the cost of vector arithmetic shift right instructions.21 22;23; Variable Shifts24;25 26define <2 x i64> @var_shift_v2i64(<2 x i64> %a, <2 x i64> %b) {27; SSE2-LABEL: 'var_shift_v2i64'28; SSE2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:12 Lat:11 SizeLat:16 for: %shift = ashr <2 x i64> %a, %b29; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift30;31; SSE42-LABEL: 'var_shift_v2i64'32; SSE42-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:17 SizeLat:7 for: %shift = ashr <2 x i64> %a, %b33; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift34;35; AVX1-LABEL: 'var_shift_v2i64'36; AVX1-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:6 SizeLat:14 for: %shift = ashr <2 x i64> %a, %b37; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift38;39; AVX2-LABEL: 'var_shift_v2i64'40; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:5 SizeLat:5 for: %shift = ashr <2 x i64> %a, %b41; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift42;43; XOP-LABEL: 'var_shift_v2i64'44; XOP-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %shift = ashr <2 x i64> %a, %b45; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift46;47; AVX512-LABEL: 'var_shift_v2i64'48; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <2 x i64> %a, %b49; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift50;51  %shift = ashr <2 x i64> %a, %b52  ret <2 x i64> %shift53}54 55define <4 x i64> @var_shift_v4i64(<4 x i64> %a, <4 x i64> %b) {56; SSE2-LABEL: 'var_shift_v4i64'57; SSE2-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:24 Lat:22 SizeLat:32 for: %shift = ashr <4 x i64> %a, %b58; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift59;60; SSE42-LABEL: 'var_shift_v4i64'61; SSE42-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:10 Lat:34 SizeLat:14 for: %shift = ashr <4 x i64> %a, %b62; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift63;64; AVX1-LABEL: 'var_shift_v4i64'65; AVX1-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:22 Lat:12 SizeLat:30 for: %shift = ashr <4 x i64> %a, %b66; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift67;68; AVX2-LABEL: 'var_shift_v4i64'69; AVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:8 SizeLat:9 for: %shift = ashr <4 x i64> %a, %b70; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift71;72; XOP-LABEL: 'var_shift_v4i64'73; XOP-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:5 Lat:7 SizeLat:6 for: %shift = ashr <4 x i64> %a, %b74; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift75;76; AVX512-LABEL: 'var_shift_v4i64'77; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <4 x i64> %a, %b78; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift79;80  %shift = ashr <4 x i64> %a, %b81  ret <4 x i64> %shift82}83 84define <8 x i64> @var_shift_v8i64(<8 x i64> %a, <8 x i64> %b) {85; SSE2-LABEL: 'var_shift_v8i64'86; SSE2-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:48 Lat:44 SizeLat:64 for: %shift = ashr <8 x i64> %a, %b87; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift88;89; SSE42-LABEL: 'var_shift_v8i64'90; SSE42-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:20 Lat:68 SizeLat:28 for: %shift = ashr <8 x i64> %a, %b91; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift92;93; AVX1-LABEL: 'var_shift_v8i64'94; AVX1-NEXT:  Cost Model: Found costs of RThru:24 CodeSize:44 Lat:24 SizeLat:60 for: %shift = ashr <8 x i64> %a, %b95; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift96;97; AVX2-LABEL: 'var_shift_v8i64'98; AVX2-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:10 Lat:16 SizeLat:18 for: %shift = ashr <8 x i64> %a, %b99; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift100;101; XOP-LABEL: 'var_shift_v8i64'102; XOP-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:10 Lat:14 SizeLat:12 for: %shift = ashr <8 x i64> %a, %b103; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift104;105; AVX512-LABEL: 'var_shift_v8i64'106; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i64> %a, %b107; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift108;109  %shift = ashr <8 x i64> %a, %b110  ret <8 x i64> %shift111}112 113define <4 x i32> @var_shift_v4i32(<4 x i32> %a, <4 x i32> %b) {114; SSE2-LABEL: 'var_shift_v4i32'115; SSE2-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:15 Lat:12 SizeLat:19 for: %shift = ashr <4 x i32> %a, %b116; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift117;118; SSE42-LABEL: 'var_shift_v4i32'119; SSE42-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:15 Lat:17 SizeLat:19 for: %shift = ashr <4 x i32> %a, %b120; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift121;122; AVX1-LABEL: 'var_shift_v4i32'123; AVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:12 Lat:7 SizeLat:16 for: %shift = ashr <4 x i32> %a, %b124; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift125;126; AVX2-LABEL: 'var_shift_v4i32'127; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:3 for: %shift = ashr <4 x i32> %a, %b128; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift129;130; XOP-LABEL: 'var_shift_v4i32'131; XOP-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %shift = ashr <4 x i32> %a, %b132; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift133;134; AVX512-LABEL: 'var_shift_v4i32'135; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <4 x i32> %a, %b136; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift137;138  %shift = ashr <4 x i32> %a, %b139  ret <4 x i32> %shift140}141 142define <8 x i32> @var_shift_v8i32(<8 x i32> %a, <8 x i32> %b) {143; SSE2-LABEL: 'var_shift_v8i32'144; SSE2-NEXT:  Cost Model: Found costs of RThru:24 CodeSize:30 Lat:24 SizeLat:38 for: %shift = ashr <8 x i32> %a, %b145; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift146;147; SSE42-LABEL: 'var_shift_v8i32'148; SSE42-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:30 Lat:34 SizeLat:38 for: %shift = ashr <8 x i32> %a, %b149; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift150;151; AVX1-LABEL: 'var_shift_v8i32'152; AVX1-NEXT:  Cost Model: Found costs of RThru:14 CodeSize:26 Lat:14 SizeLat:34 for: %shift = ashr <8 x i32> %a, %b153; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift154;155; AVX2-LABEL: 'var_shift_v8i32'156; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:1 Lat:4 SizeLat:3 for: %shift = ashr <8 x i32> %a, %b157; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift158;159; XOPAVX1-LABEL: 'var_shift_v8i32'160; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:5 Lat:7 SizeLat:6 for: %shift = ashr <8 x i32> %a, %b161; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift162;163; XOPAVX2-LABEL: 'var_shift_v8i32'164; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:1 Lat:4 SizeLat:3 for: %shift = ashr <8 x i32> %a, %b165; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift166;167; AVX512-LABEL: 'var_shift_v8i32'168; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i32> %a, %b169; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift170;171  %shift = ashr <8 x i32> %a, %b172  ret <8 x i32> %shift173}174 175define <16 x i32> @var_shift_v16i32(<16 x i32> %a, <16 x i32> %b) {176; SSE2-LABEL: 'var_shift_v16i32'177; SSE2-NEXT:  Cost Model: Found costs of RThru:48 CodeSize:60 Lat:48 SizeLat:76 for: %shift = ashr <16 x i32> %a, %b178; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift179;180; SSE42-LABEL: 'var_shift_v16i32'181; SSE42-NEXT:  Cost Model: Found costs of RThru:64 CodeSize:60 Lat:68 SizeLat:76 for: %shift = ashr <16 x i32> %a, %b182; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift183;184; AVX1-LABEL: 'var_shift_v16i32'185; AVX1-NEXT:  Cost Model: Found costs of RThru:28 CodeSize:52 Lat:28 SizeLat:68 for: %shift = ashr <16 x i32> %a, %b186; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift187;188; AVX2-LABEL: 'var_shift_v16i32'189; AVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:2 Lat:8 SizeLat:6 for: %shift = ashr <16 x i32> %a, %b190; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift191;192; XOPAVX1-LABEL: 'var_shift_v16i32'193; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:10 Lat:14 SizeLat:12 for: %shift = ashr <16 x i32> %a, %b194; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift195;196; XOPAVX2-LABEL: 'var_shift_v16i32'197; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:2 Lat:8 SizeLat:6 for: %shift = ashr <16 x i32> %a, %b198; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift199;200; AVX512-LABEL: 'var_shift_v16i32'201; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <16 x i32> %a, %b202; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift203;204  %shift = ashr <16 x i32> %a, %b205  ret <16 x i32> %shift206}207 208define <8 x i16> @var_shift_v8i16(<8 x i16> %a, <8 x i16> %b) {209; SSE2-LABEL: 'var_shift_v8i16'210; SSE2-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:31 Lat:19 SizeLat:31 for: %shift = ashr <8 x i16> %a, %b211; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift212;213; SSE42-LABEL: 'var_shift_v8i16'214; SSE42-NEXT:  Cost Model: Found costs of RThru:22 CodeSize:23 Lat:26 SizeLat:27 for: %shift = ashr <8 x i16> %a, %b215; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift216;217; AVX1-LABEL: 'var_shift_v8i16'218; AVX1-NEXT:  Cost Model: Found costs of RThru:13 CodeSize:14 Lat:16 SizeLat:22 for: %shift = ashr <8 x i16> %a, %b219; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift220;221; AVX2-LABEL: 'var_shift_v8i16'222; AVX2-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:5 Lat:11 SizeLat:10 for: %shift = ashr <8 x i16> %a, %b223; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift224;225; XOP-LABEL: 'var_shift_v8i16'226; XOP-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %shift = ashr <8 x i16> %a, %b227; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift228;229; AVX512F-LABEL: 'var_shift_v8i16'230; AVX512F-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:5 Lat:11 SizeLat:10 for: %shift = ashr <8 x i16> %a, %b231; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift232;233; AVX512BW-LABEL: 'var_shift_v8i16'234; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i16> %a, %b235; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift236;237; AVX512VL-LABEL: 'var_shift_v8i16'238; AVX512VL-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:5 Lat:11 SizeLat:10 for: %shift = ashr <8 x i16> %a, %b239; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift240;241; AVX512BWVL-LABEL: 'var_shift_v8i16'242; AVX512BWVL-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i16> %a, %b243; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift244;245; AVX512GFNI-LABEL: 'var_shift_v8i16'246; AVX512GFNI-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i16> %a, %b247; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift248;249  %shift = ashr <8 x i16> %a, %b250  ret <8 x i16> %shift251}252 253define <16 x i16> @var_shift_v16i16(<16 x i16> %a, <16 x i16> %b) {254; SSE2-LABEL: 'var_shift_v16i16'255; SSE2-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:62 Lat:38 SizeLat:62 for: %shift = ashr <16 x i16> %a, %b256; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift257;258; SSE42-LABEL: 'var_shift_v16i16'259; SSE42-NEXT:  Cost Model: Found costs of RThru:44 CodeSize:46 Lat:52 SizeLat:54 for: %shift = ashr <16 x i16> %a, %b260; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift261;262; AVX1-LABEL: 'var_shift_v16i16'263; AVX1-NEXT:  Cost Model: Found costs of RThru:28 CodeSize:31 Lat:30 SizeLat:48 for: %shift = ashr <16 x i16> %a, %b264; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift265;266; AVX2-LABEL: 'var_shift_v16i16'267; AVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:10 SizeLat:14 for: %shift = ashr <16 x i16> %a, %b268; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift269;270; XOP-LABEL: 'var_shift_v16i16'271; XOP-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:5 Lat:7 SizeLat:6 for: %shift = ashr <16 x i16> %a, %b272; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift273;274; AVX512F-LABEL: 'var_shift_v16i16'275; AVX512F-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:10 SizeLat:14 for: %shift = ashr <16 x i16> %a, %b276; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift277;278; AVX512BW-LABEL: 'var_shift_v16i16'279; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <16 x i16> %a, %b280; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift281;282; AVX512VL-LABEL: 'var_shift_v16i16'283; AVX512VL-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:10 SizeLat:14 for: %shift = ashr <16 x i16> %a, %b284; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift285;286; AVX512BWVL-LABEL: 'var_shift_v16i16'287; AVX512BWVL-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <16 x i16> %a, %b288; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift289;290; AVX512GFNI-LABEL: 'var_shift_v16i16'291; AVX512GFNI-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <16 x i16> %a, %b292; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift293;294  %shift = ashr <16 x i16> %a, %b295  ret <16 x i16> %shift296}297 298define <32 x i16> @var_shift_v32i16(<32 x i16> %a, <32 x i16> %b) {299; SSE2-LABEL: 'var_shift_v32i16'300; SSE2-NEXT:  Cost Model: Found costs of RThru:64 CodeSize:124 Lat:76 SizeLat:124 for: %shift = ashr <32 x i16> %a, %b301; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift302;303; SSE42-LABEL: 'var_shift_v32i16'304; SSE42-NEXT:  Cost Model: Found costs of RThru:88 CodeSize:92 Lat:104 SizeLat:108 for: %shift = ashr <32 x i16> %a, %b305; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift306;307; AVX1-LABEL: 'var_shift_v32i16'308; AVX1-NEXT:  Cost Model: Found costs of RThru:56 CodeSize:62 Lat:60 SizeLat:96 for: %shift = ashr <32 x i16> %a, %b309; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift310;311; AVX2-LABEL: 'var_shift_v32i16'312; AVX2-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:20 Lat:20 SizeLat:28 for: %shift = ashr <32 x i16> %a, %b313; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift314;315; XOP-LABEL: 'var_shift_v32i16'316; XOP-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:10 Lat:14 SizeLat:12 for: %shift = ashr <32 x i16> %a, %b317; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift318;319; AVX512F-LABEL: 'var_shift_v32i16'320; AVX512F-NEXT:  Cost Model: Found costs of RThru:11 CodeSize:11 Lat:16 SizeLat:15 for: %shift = ashr <32 x i16> %a, %b321; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift322;323; AVX512BW-LABEL: 'var_shift_v32i16'324; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <32 x i16> %a, %b325; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift326;327; AVX512VL-LABEL: 'var_shift_v32i16'328; AVX512VL-NEXT:  Cost Model: Found costs of RThru:11 CodeSize:11 Lat:16 SizeLat:15 for: %shift = ashr <32 x i16> %a, %b329; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift330;331; AVX512BWVL-LABEL: 'var_shift_v32i16'332; AVX512BWVL-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <32 x i16> %a, %b333; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift334;335; AVX512GFNI-LABEL: 'var_shift_v32i16'336; AVX512GFNI-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <32 x i16> %a, %b337; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift338;339  %shift = ashr <32 x i16> %a, %b340  ret <32 x i16> %shift341}342 343define <16 x i8> @var_shift_v16i8(<16 x i8> %a, <16 x i8> %b) {344; SSE2-LABEL: 'var_shift_v16i8'345; SSE2-NEXT:  Cost Model: Found costs of RThru:27 CodeSize:54 Lat:30 SizeLat:54 for: %shift = ashr <16 x i8> %a, %b346; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift347;348; SSE42-LABEL: 'var_shift_v16i8'349; SSE42-NEXT:  Cost Model: Found costs of RThru:38 CodeSize:30 Lat:41 SizeLat:36 for: %shift = ashr <16 x i8> %a, %b350; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift351;352; AVX1-LABEL: 'var_shift_v16i8'353; AVX1-NEXT:  Cost Model: Found costs of RThru:21 CodeSize:24 Lat:22 SizeLat:36 for: %shift = ashr <16 x i8> %a, %b354; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift355;356; AVX2-LABEL: 'var_shift_v16i8'357; AVX2-NEXT:  Cost Model: Found costs of RThru:17 CodeSize:24 Lat:17 SizeLat:30 for: %shift = ashr <16 x i8> %a, %b358; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift359;360; XOP-LABEL: 'var_shift_v16i8'361; XOP-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %shift = ashr <16 x i8> %a, %b362; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift363;364; AVX512F-LABEL: 'var_shift_v16i8'365; AVX512F-NEXT:  Cost Model: Found costs of RThru:17 CodeSize:24 Lat:17 SizeLat:30 for: %shift = ashr <16 x i8> %a, %b366; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift367;368; AVX512BW-LABEL: 'var_shift_v16i8'369; AVX512BW-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:5 for: %shift = ashr <16 x i8> %a, %b370; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift371;372; AVX512VL-LABEL: 'var_shift_v16i8'373; AVX512VL-NEXT:  Cost Model: Found costs of RThru:17 CodeSize:24 Lat:17 SizeLat:30 for: %shift = ashr <16 x i8> %a, %b374; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift375;376; AVX512BWVL-LABEL: 'var_shift_v16i8'377; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:5 for: %shift = ashr <16 x i8> %a, %b378; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift379;380; AVX512GFNI-LABEL: 'var_shift_v16i8'381; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:5 for: %shift = ashr <16 x i8> %a, %b382; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift383;384  %shift = ashr <16 x i8> %a, %b385  ret <16 x i8> %shift386}387 388define <32 x i8> @var_shift_v32i8(<32 x i8> %a, <32 x i8> %b) {389; SSE2-LABEL: 'var_shift_v32i8'390; SSE2-NEXT:  Cost Model: Found costs of RThru:54 CodeSize:108 Lat:60 SizeLat:108 for: %shift = ashr <32 x i8> %a, %b391; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift392;393; SSE42-LABEL: 'var_shift_v32i8'394; SSE42-NEXT:  Cost Model: Found costs of RThru:76 CodeSize:60 Lat:82 SizeLat:72 for: %shift = ashr <32 x i8> %a, %b395; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift396;397; AVX1-LABEL: 'var_shift_v32i8'398; AVX1-NEXT:  Cost Model: Found costs of RThru:44 CodeSize:51 Lat:45 SizeLat:76 for: %shift = ashr <32 x i8> %a, %b399; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift400;401; AVX2-LABEL: 'var_shift_v32i8'402; AVX2-NEXT:  Cost Model: Found costs of RThru:18 CodeSize:24 Lat:20 SizeLat:43 for: %shift = ashr <32 x i8> %a, %b403; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift404;405; XOP-LABEL: 'var_shift_v32i8'406; XOP-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:5 Lat:7 SizeLat:6 for: %shift = ashr <32 x i8> %a, %b407; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift408;409; AVX512F-LABEL: 'var_shift_v32i8'410; AVX512F-NEXT:  Cost Model: Found costs of RThru:18 CodeSize:24 Lat:20 SizeLat:43 for: %shift = ashr <32 x i8> %a, %b411; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift412;413; AVX512BW-LABEL: 'var_shift_v32i8'414; AVX512BW-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:24 Lat:13 SizeLat:30 for: %shift = ashr <32 x i8> %a, %b415; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift416;417; AVX512VL-LABEL: 'var_shift_v32i8'418; AVX512VL-NEXT:  Cost Model: Found costs of RThru:18 CodeSize:24 Lat:20 SizeLat:43 for: %shift = ashr <32 x i8> %a, %b419; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift420;421; AVX512BWVL-LABEL: 'var_shift_v32i8'422; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:24 Lat:13 SizeLat:30 for: %shift = ashr <32 x i8> %a, %b423; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift424;425; AVX512GFNI-LABEL: 'var_shift_v32i8'426; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:24 Lat:13 SizeLat:30 for: %shift = ashr <32 x i8> %a, %b427; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift428;429  %shift = ashr <32 x i8> %a, %b430  ret <32 x i8> %shift431}432 433define <64 x i8> @var_shift_v64i8(<64 x i8> %a, <64 x i8> %b) {434; SSE2-LABEL: 'var_shift_v64i8'435; SSE2-NEXT:  Cost Model: Found costs of RThru:108 CodeSize:216 Lat:120 SizeLat:216 for: %shift = ashr <64 x i8> %a, %b436; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift437;438; SSE42-LABEL: 'var_shift_v64i8'439; SSE42-NEXT:  Cost Model: Found costs of RThru:152 CodeSize:120 Lat:164 SizeLat:144 for: %shift = ashr <64 x i8> %a, %b440; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift441;442; AVX1-LABEL: 'var_shift_v64i8'443; AVX1-NEXT:  Cost Model: Found costs of RThru:88 CodeSize:102 Lat:90 SizeLat:152 for: %shift = ashr <64 x i8> %a, %b444; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift445;446; AVX2-LABEL: 'var_shift_v64i8'447; AVX2-NEXT:  Cost Model: Found costs of RThru:36 CodeSize:48 Lat:40 SizeLat:86 for: %shift = ashr <64 x i8> %a, %b448; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift449;450; XOP-LABEL: 'var_shift_v64i8'451; XOP-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:10 Lat:14 SizeLat:12 for: %shift = ashr <64 x i8> %a, %b452; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift453;454; AVX512F-LABEL: 'var_shift_v64i8'455; AVX512F-NEXT:  Cost Model: Found costs of RThru:37 CodeSize:51 Lat:37 SizeLat:63 for: %shift = ashr <64 x i8> %a, %b456; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift457;458; AVX512BW-LABEL: 'var_shift_v64i8'459; AVX512BW-NEXT:  Cost Model: Found costs of RThru:15 CodeSize:30 Lat:15 SizeLat:30 for: %shift = ashr <64 x i8> %a, %b460; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift461;462; AVX512VL-LABEL: 'var_shift_v64i8'463; AVX512VL-NEXT:  Cost Model: Found costs of RThru:37 CodeSize:51 Lat:37 SizeLat:63 for: %shift = ashr <64 x i8> %a, %b464; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift465;466; AVX512BWVL-LABEL: 'var_shift_v64i8'467; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:15 CodeSize:30 Lat:15 SizeLat:30 for: %shift = ashr <64 x i8> %a, %b468; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift469;470; AVX512GFNI-LABEL: 'var_shift_v64i8'471; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:15 CodeSize:30 Lat:15 SizeLat:30 for: %shift = ashr <64 x i8> %a, %b472; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift473;474  %shift = ashr <64 x i8> %a, %b475  ret <64 x i8> %shift476}477 478;479; Uniform Variable Shifts480;481 482define <2 x i64> @splatvar_shift_v2i64(<2 x i64> %a, i64 %b) {483; SSE-LABEL: 'splatvar_shift_v2i64'484; SSE-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <2 x i64> undef, i64 %b, i32 0485; SSE-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <2 x i64> %insert, <2 x i64> undef, <2 x i32> zeroinitializer486; SSE-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:5 Lat:9 SizeLat:7 for: %shift = ashr <2 x i64> %a, %splat487; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift488;489; AVX1-LABEL: 'splatvar_shift_v2i64'490; AVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <2 x i64> undef, i64 %b, i32 0491; AVX1-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <2 x i64> %insert, <2 x i64> undef, <2 x i32> zeroinitializer492; AVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:4 SizeLat:7 for: %shift = ashr <2 x i64> %a, %splat493; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift494;495; AVX2-LABEL: 'splatvar_shift_v2i64'496; AVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <2 x i64> undef, i64 %b, i32 0497; AVX2-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <2 x i64> %insert, <2 x i64> undef, <2 x i32> zeroinitializer498; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:5 Lat:4 SizeLat:7 for: %shift = ashr <2 x i64> %a, %splat499; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift500;501; XOPAVX1-LABEL: 'splatvar_shift_v2i64'502; XOPAVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <2 x i64> undef, i64 %b, i32 0503; XOPAVX1-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <2 x i64> %insert, <2 x i64> undef, <2 x i32> zeroinitializer504; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:4 SizeLat:7 for: %shift = ashr <2 x i64> %a, %splat505; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift506;507; XOPAVX2-LABEL: 'splatvar_shift_v2i64'508; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <2 x i64> undef, i64 %b, i32 0509; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <2 x i64> %insert, <2 x i64> undef, <2 x i32> zeroinitializer510; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:5 Lat:4 SizeLat:7 for: %shift = ashr <2 x i64> %a, %splat511; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift512;513; AVX512-LABEL: 'splatvar_shift_v2i64'514; AVX512-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <2 x i64> undef, i64 %b, i32 0515; AVX512-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <2 x i64> %insert, <2 x i64> undef, <2 x i32> zeroinitializer516; AVX512-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:2 for: %shift = ashr <2 x i64> %a, %splat517; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift518;519  %insert = insertelement <2 x i64> undef, i64 %b, i32 0520  %splat = shufflevector <2 x i64> %insert, <2 x i64> undef, <2 x i32> zeroinitializer521  %shift = ashr <2 x i64> %a, %splat522  ret <2 x i64> %shift523}524 525define <4 x i64> @splatvar_shift_v4i64(<4 x i64> %a, i64 %b) {526; SSE-LABEL: 'splatvar_shift_v4i64'527; SSE-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <4 x i64> undef, i64 %b, i32 0528; SSE-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <4 x i64> %insert, <4 x i64> undef, <4 x i32> zeroinitializer529; SSE-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:10 Lat:18 SizeLat:14 for: %shift = ashr <4 x i64> %a, %splat530; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift531;532; AVX1-LABEL: 'splatvar_shift_v4i64'533; AVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <4 x i64> undef, i64 %b, i32 0534; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:3 SizeLat:3 for: %splat = shufflevector <4 x i64> %insert, <4 x i64> undef, <4 x i32> zeroinitializer535; AVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:10 Lat:7 SizeLat:13 for: %shift = ashr <4 x i64> %a, %splat536; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift537;538; AVX2-LABEL: 'splatvar_shift_v4i64'539; AVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <4 x i64> undef, i64 %b, i32 0540; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <4 x i64> %insert, <4 x i64> undef, <4 x i32> zeroinitializer541; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:6 SizeLat:9 for: %shift = ashr <4 x i64> %a, %splat542; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift543;544; XOPAVX1-LABEL: 'splatvar_shift_v4i64'545; XOPAVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <4 x i64> undef, i64 %b, i32 0546; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:3 SizeLat:3 for: %splat = shufflevector <4 x i64> %insert, <4 x i64> undef, <4 x i32> zeroinitializer547; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:10 Lat:7 SizeLat:13 for: %shift = ashr <4 x i64> %a, %splat548; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift549;550; XOPAVX2-LABEL: 'splatvar_shift_v4i64'551; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <4 x i64> undef, i64 %b, i32 0552; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <4 x i64> %insert, <4 x i64> undef, <4 x i32> zeroinitializer553; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:6 SizeLat:9 for: %shift = ashr <4 x i64> %a, %splat554; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift555;556; AVX512-LABEL: 'splatvar_shift_v4i64'557; AVX512-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <4 x i64> undef, i64 %b, i32 0558; AVX512-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <4 x i64> %insert, <4 x i64> undef, <4 x i32> zeroinitializer559; AVX512-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:2 for: %shift = ashr <4 x i64> %a, %splat560; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift561;562  %insert = insertelement <4 x i64> undef, i64 %b, i32 0563  %splat = shufflevector <4 x i64> %insert, <4 x i64> undef, <4 x i32> zeroinitializer564  %shift = ashr <4 x i64> %a, %splat565  ret <4 x i64> %shift566}567 568define <8 x i64> @splatvar_shift_v8i64(<8 x i64> %a, i64 %b) {569; SSE-LABEL: 'splatvar_shift_v8i64'570; SSE-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i64> undef, i64 %b, i32 0571; SSE-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <8 x i64> %insert, <8 x i64> undef, <8 x i32> zeroinitializer572; SSE-NEXT:  Cost Model: Found costs of RThru:20 CodeSize:20 Lat:36 SizeLat:28 for: %shift = ashr <8 x i64> %a, %splat573; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift574;575; AVX1-LABEL: 'splatvar_shift_v8i64'576; AVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i64> undef, i64 %b, i32 0577; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:3 SizeLat:3 for: %splat = shufflevector <8 x i64> %insert, <8 x i64> undef, <8 x i32> zeroinitializer578; AVX1-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:20 Lat:14 SizeLat:26 for: %shift = ashr <8 x i64> %a, %splat579; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift580;581; AVX2-LABEL: 'splatvar_shift_v8i64'582; AVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i64> undef, i64 %b, i32 0583; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <8 x i64> %insert, <8 x i64> undef, <8 x i32> zeroinitializer584; AVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:12 SizeLat:18 for: %shift = ashr <8 x i64> %a, %splat585; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift586;587; XOPAVX1-LABEL: 'splatvar_shift_v8i64'588; XOPAVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i64> undef, i64 %b, i32 0589; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:3 SizeLat:3 for: %splat = shufflevector <8 x i64> %insert, <8 x i64> undef, <8 x i32> zeroinitializer590; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:20 Lat:14 SizeLat:26 for: %shift = ashr <8 x i64> %a, %splat591; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift592;593; XOPAVX2-LABEL: 'splatvar_shift_v8i64'594; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i64> undef, i64 %b, i32 0595; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <8 x i64> %insert, <8 x i64> undef, <8 x i32> zeroinitializer596; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:12 SizeLat:18 for: %shift = ashr <8 x i64> %a, %splat597; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift598;599; AVX512-LABEL: 'splatvar_shift_v8i64'600; AVX512-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i64> undef, i64 %b, i32 0601; AVX512-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <8 x i64> %insert, <8 x i64> undef, <8 x i32> zeroinitializer602; AVX512-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:2 for: %shift = ashr <8 x i64> %a, %splat603; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift604;605  %insert = insertelement <8 x i64> undef, i64 %b, i32 0606  %splat = shufflevector <8 x i64> %insert, <8 x i64> undef, <8 x i32> zeroinitializer607  %shift = ashr <8 x i64> %a, %splat608  ret <8 x i64> %shift609}610 611define <4 x i32> @splatvar_shift_v4i32(<4 x i32> %a, i32 %b) {612; SSE-LABEL: 'splatvar_shift_v4i32'613; SSE-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <4 x i32> undef, i32 %b, i32 0614; SSE-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <4 x i32> %insert, <4 x i32> undef, <4 x i32> zeroinitializer615; SSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %shift = ashr <4 x i32> %a, %splat616; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift617;618; AVX1-LABEL: 'splatvar_shift_v4i32'619; AVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <4 x i32> undef, i32 %b, i32 0620; AVX1-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <4 x i32> %insert, <4 x i32> undef, <4 x i32> zeroinitializer621; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %shift = ashr <4 x i32> %a, %splat622; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift623;624; AVX2-LABEL: 'splatvar_shift_v4i32'625; AVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <4 x i32> undef, i32 %b, i32 0626; AVX2-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <4 x i32> %insert, <4 x i32> undef, <4 x i32> zeroinitializer627; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:2 for: %shift = ashr <4 x i32> %a, %splat628; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift629;630; XOPAVX1-LABEL: 'splatvar_shift_v4i32'631; XOPAVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <4 x i32> undef, i32 %b, i32 0632; XOPAVX1-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <4 x i32> %insert, <4 x i32> undef, <4 x i32> zeroinitializer633; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %shift = ashr <4 x i32> %a, %splat634; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift635;636; XOPAVX2-LABEL: 'splatvar_shift_v4i32'637; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <4 x i32> undef, i32 %b, i32 0638; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <4 x i32> %insert, <4 x i32> undef, <4 x i32> zeroinitializer639; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:2 for: %shift = ashr <4 x i32> %a, %splat640; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift641;642; AVX512-LABEL: 'splatvar_shift_v4i32'643; AVX512-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <4 x i32> undef, i32 %b, i32 0644; AVX512-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <4 x i32> %insert, <4 x i32> undef, <4 x i32> zeroinitializer645; AVX512-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:2 for: %shift = ashr <4 x i32> %a, %splat646; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift647;648  %insert = insertelement <4 x i32> undef, i32 %b, i32 0649  %splat = shufflevector <4 x i32> %insert, <4 x i32> undef, <4 x i32> zeroinitializer650  %shift = ashr <4 x i32> %a, %splat651  ret <4 x i32> %shift652}653 654define <8 x i32> @splatvar_shift_v8i32(<8 x i32> %a, i32 %b) {655; SSE-LABEL: 'splatvar_shift_v8i32'656; SSE-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i32> undef, i32 %b, i32 0657; SSE-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <8 x i32> %insert, <8 x i32> undef, <8 x i32> zeroinitializer658; SSE-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %shift = ashr <8 x i32> %a, %splat659; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift660;661; AVX1-LABEL: 'splatvar_shift_v8i32'662; AVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i32> undef, i32 %b, i32 0663; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:3 SizeLat:3 for: %splat = shufflevector <8 x i32> %insert, <8 x i32> undef, <8 x i32> zeroinitializer664; AVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:7 SizeLat:7 for: %shift = ashr <8 x i32> %a, %splat665; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift666;667; AVX2-LABEL: 'splatvar_shift_v8i32'668; AVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i32> undef, i32 %b, i32 0669; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <8 x i32> %insert, <8 x i32> undef, <8 x i32> zeroinitializer670; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:3 for: %shift = ashr <8 x i32> %a, %splat671; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift672;673; XOPAVX1-LABEL: 'splatvar_shift_v8i32'674; XOPAVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i32> undef, i32 %b, i32 0675; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:3 SizeLat:3 for: %splat = shufflevector <8 x i32> %insert, <8 x i32> undef, <8 x i32> zeroinitializer676; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:7 SizeLat:7 for: %shift = ashr <8 x i32> %a, %splat677; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift678;679; XOPAVX2-LABEL: 'splatvar_shift_v8i32'680; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i32> undef, i32 %b, i32 0681; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <8 x i32> %insert, <8 x i32> undef, <8 x i32> zeroinitializer682; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:3 for: %shift = ashr <8 x i32> %a, %splat683; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift684;685; AVX512-LABEL: 'splatvar_shift_v8i32'686; AVX512-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i32> undef, i32 %b, i32 0687; AVX512-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <8 x i32> %insert, <8 x i32> undef, <8 x i32> zeroinitializer688; AVX512-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:3 for: %shift = ashr <8 x i32> %a, %splat689; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift690;691  %insert = insertelement <8 x i32> undef, i32 %b, i32 0692  %splat = shufflevector <8 x i32> %insert, <8 x i32> undef, <8 x i32> zeroinitializer693  %shift = ashr <8 x i32> %a, %splat694  ret <8 x i32> %shift695}696 697define <16 x i32> @splatvar_shift_v16i32(<16 x i32> %a, i32 %b) {698; SSE-LABEL: 'splatvar_shift_v16i32'699; SSE-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i32> undef, i32 %b, i32 0700; SSE-NEXT:  Cost Model: Found costs of 1 for: %splat = shufflevector <16 x i32> %insert, <16 x i32> undef, <16 x i32> zeroinitializer701; SSE-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %shift = ashr <16 x i32> %a, %splat702; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift703;704; AVX1-LABEL: 'splatvar_shift_v16i32'705; AVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i32> undef, i32 %b, i32 0706; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:3 SizeLat:3 for: %splat = shufflevector <16 x i32> %insert, <16 x i32> undef, <16 x i32> zeroinitializer707; AVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:10 Lat:14 SizeLat:14 for: %shift = ashr <16 x i32> %a, %splat708; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift709;710; AVX2-LABEL: 'splatvar_shift_v16i32'711; AVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i32> undef, i32 %b, i32 0712; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <16 x i32> %insert, <16 x i32> undef, <16 x i32> zeroinitializer713; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:6 for: %shift = ashr <16 x i32> %a, %splat714; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift715;716; XOPAVX1-LABEL: 'splatvar_shift_v16i32'717; XOPAVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i32> undef, i32 %b, i32 0718; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:3 SizeLat:3 for: %splat = shufflevector <16 x i32> %insert, <16 x i32> undef, <16 x i32> zeroinitializer719; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:10 Lat:14 SizeLat:14 for: %shift = ashr <16 x i32> %a, %splat720; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift721;722; XOPAVX2-LABEL: 'splatvar_shift_v16i32'723; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i32> undef, i32 %b, i32 0724; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <16 x i32> %insert, <16 x i32> undef, <16 x i32> zeroinitializer725; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:6 for: %shift = ashr <16 x i32> %a, %splat726; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift727;728; AVX512-LABEL: 'splatvar_shift_v16i32'729; AVX512-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i32> undef, i32 %b, i32 0730; AVX512-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <16 x i32> %insert, <16 x i32> undef, <16 x i32> zeroinitializer731; AVX512-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:3 for: %shift = ashr <16 x i32> %a, %splat732; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift733;734  %insert = insertelement <16 x i32> undef, i32 %b, i32 0735  %splat = shufflevector <16 x i32> %insert, <16 x i32> undef, <16 x i32> zeroinitializer736  %shift = ashr <16 x i32> %a, %splat737  ret <16 x i32> %shift738}739 740define <8 x i16> @splatvar_shift_v8i16(<8 x i16> %a, i16 %b) {741; SSE2-LABEL: 'splatvar_shift_v8i16'742; SSE2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i16> undef, i16 %b, i32 0743; SSE2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:2 SizeLat:2 for: %splat = shufflevector <8 x i16> %insert, <8 x i16> undef, <8 x i32> zeroinitializer744; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %shift = ashr <8 x i16> %a, %splat745; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift746;747; SSE42-LABEL: 'splatvar_shift_v8i16'748; SSE42-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i16> undef, i16 %b, i32 0749; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:3 SizeLat:2 for: %splat = shufflevector <8 x i16> %insert, <8 x i16> undef, <8 x i32> zeroinitializer750; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %shift = ashr <8 x i16> %a, %splat751; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift752;753; AVX1-LABEL: 'splatvar_shift_v8i16'754; AVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i16> undef, i16 %b, i32 0755; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:3 SizeLat:2 for: %splat = shufflevector <8 x i16> %insert, <8 x i16> undef, <8 x i32> zeroinitializer756; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %shift = ashr <8 x i16> %a, %splat757; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift758;759; AVX2-LABEL: 'splatvar_shift_v8i16'760; AVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i16> undef, i16 %b, i32 0761; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <8 x i16> %insert, <8 x i16> undef, <8 x i32> zeroinitializer762; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:2 for: %shift = ashr <8 x i16> %a, %splat763; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift764;765; XOPAVX1-LABEL: 'splatvar_shift_v8i16'766; XOPAVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i16> undef, i16 %b, i32 0767; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:3 SizeLat:2 for: %splat = shufflevector <8 x i16> %insert, <8 x i16> undef, <8 x i32> zeroinitializer768; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %shift = ashr <8 x i16> %a, %splat769; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift770;771; XOPAVX2-LABEL: 'splatvar_shift_v8i16'772; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i16> undef, i16 %b, i32 0773; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <8 x i16> %insert, <8 x i16> undef, <8 x i32> zeroinitializer774; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:2 for: %shift = ashr <8 x i16> %a, %splat775; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift776;777; AVX512-LABEL: 'splatvar_shift_v8i16'778; AVX512-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <8 x i16> undef, i16 %b, i32 0779; AVX512-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <8 x i16> %insert, <8 x i16> undef, <8 x i32> zeroinitializer780; AVX512-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:2 for: %shift = ashr <8 x i16> %a, %splat781; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift782;783  %insert = insertelement <8 x i16> undef, i16 %b, i32 0784  %splat = shufflevector <8 x i16> %insert, <8 x i16> undef, <8 x i32> zeroinitializer785  %shift = ashr <8 x i16> %a, %splat786  ret <8 x i16> %shift787}788 789define <16 x i16> @splatvar_shift_v16i16(<16 x i16> %a, i16 %b) {790; SSE2-LABEL: 'splatvar_shift_v16i16'791; SSE2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i16> undef, i16 %b, i32 0792; SSE2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:2 SizeLat:2 for: %splat = shufflevector <16 x i16> %insert, <16 x i16> undef, <16 x i32> zeroinitializer793; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %shift = ashr <16 x i16> %a, %splat794; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift795;796; SSE42-LABEL: 'splatvar_shift_v16i16'797; SSE42-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i16> undef, i16 %b, i32 0798; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:3 SizeLat:2 for: %splat = shufflevector <16 x i16> %insert, <16 x i16> undef, <16 x i32> zeroinitializer799; SSE42-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %shift = ashr <16 x i16> %a, %splat800; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift801;802; AVX1-LABEL: 'splatvar_shift_v16i16'803; AVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i16> undef, i16 %b, i32 0804; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:3 SizeLat:4 for: %splat = shufflevector <16 x i16> %insert, <16 x i16> undef, <16 x i32> zeroinitializer805; AVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:7 SizeLat:7 for: %shift = ashr <16 x i16> %a, %splat806; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift807;808; AVX2-LABEL: 'splatvar_shift_v16i16'809; AVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i16> undef, i16 %b, i32 0810; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <16 x i16> %insert, <16 x i16> undef, <16 x i32> zeroinitializer811; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:3 for: %shift = ashr <16 x i16> %a, %splat812; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift813;814; XOPAVX1-LABEL: 'splatvar_shift_v16i16'815; XOPAVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i16> undef, i16 %b, i32 0816; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:3 SizeLat:4 for: %splat = shufflevector <16 x i16> %insert, <16 x i16> undef, <16 x i32> zeroinitializer817; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:7 SizeLat:7 for: %shift = ashr <16 x i16> %a, %splat818; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift819;820; XOPAVX2-LABEL: 'splatvar_shift_v16i16'821; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i16> undef, i16 %b, i32 0822; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <16 x i16> %insert, <16 x i16> undef, <16 x i32> zeroinitializer823; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:3 for: %shift = ashr <16 x i16> %a, %splat824; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift825;826; AVX512-LABEL: 'splatvar_shift_v16i16'827; AVX512-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i16> undef, i16 %b, i32 0828; AVX512-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <16 x i16> %insert, <16 x i16> undef, <16 x i32> zeroinitializer829; AVX512-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:3 for: %shift = ashr <16 x i16> %a, %splat830; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift831;832  %insert = insertelement <16 x i16> undef, i16 %b, i32 0833  %splat = shufflevector <16 x i16> %insert, <16 x i16> undef, <16 x i32> zeroinitializer834  %shift = ashr <16 x i16> %a, %splat835  ret <16 x i16> %shift836}837 838define <32 x i16> @splatvar_shift_v32i16(<32 x i16> %a, i16 %b) {839; SSE2-LABEL: 'splatvar_shift_v32i16'840; SSE2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i16> undef, i16 %b, i32 0841; SSE2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:2 SizeLat:2 for: %splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer842; SSE2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %shift = ashr <32 x i16> %a, %splat843; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift844;845; SSE42-LABEL: 'splatvar_shift_v32i16'846; SSE42-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i16> undef, i16 %b, i32 0847; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:3 SizeLat:2 for: %splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer848; SSE42-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %shift = ashr <32 x i16> %a, %splat849; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift850;851; AVX1-LABEL: 'splatvar_shift_v32i16'852; AVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i16> undef, i16 %b, i32 0853; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:3 SizeLat:4 for: %splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer854; AVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:10 Lat:14 SizeLat:14 for: %shift = ashr <32 x i16> %a, %splat855; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift856;857; AVX2-LABEL: 'splatvar_shift_v32i16'858; AVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i16> undef, i16 %b, i32 0859; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer860; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:6 for: %shift = ashr <32 x i16> %a, %splat861; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift862;863; XOPAVX1-LABEL: 'splatvar_shift_v32i16'864; XOPAVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i16> undef, i16 %b, i32 0865; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:3 SizeLat:4 for: %splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer866; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:10 Lat:14 SizeLat:14 for: %shift = ashr <32 x i16> %a, %splat867; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift868;869; XOPAVX2-LABEL: 'splatvar_shift_v32i16'870; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i16> undef, i16 %b, i32 0871; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer872; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:6 for: %shift = ashr <32 x i16> %a, %splat873; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift874;875; AVX512F-LABEL: 'splatvar_shift_v32i16'876; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i16> undef, i16 %b, i32 0877; AVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer878; AVX512F-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:5 Lat:10 SizeLat:7 for: %shift = ashr <32 x i16> %a, %splat879; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift880;881; AVX512BW-LABEL: 'splatvar_shift_v32i16'882; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i16> undef, i16 %b, i32 0883; AVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer884; AVX512BW-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:3 for: %shift = ashr <32 x i16> %a, %splat885; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift886;887; AVX512VL-LABEL: 'splatvar_shift_v32i16'888; AVX512VL-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i16> undef, i16 %b, i32 0889; AVX512VL-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer890; AVX512VL-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:5 Lat:10 SizeLat:7 for: %shift = ashr <32 x i16> %a, %splat891; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift892;893; AVX512BWVL-LABEL: 'splatvar_shift_v32i16'894; AVX512BWVL-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i16> undef, i16 %b, i32 0895; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer896; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:3 for: %shift = ashr <32 x i16> %a, %splat897; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift898;899; AVX512GFNI-LABEL: 'splatvar_shift_v32i16'900; AVX512GFNI-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i16> undef, i16 %b, i32 0901; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer902; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:3 for: %shift = ashr <32 x i16> %a, %splat903; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift904;905  %insert = insertelement <32 x i16> undef, i16 %b, i32 0906  %splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer907  %shift = ashr <32 x i16> %a, %splat908  ret <32 x i16> %shift909}910 911define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, i8 %b) {912; SSE2-LABEL: 'splatvar_shift_v16i8'913; SSE2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i8> undef, i8 %b, i32 0914; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:3 SizeLat:4 for: %splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer915; SSE2-NEXT:  Cost Model: Found costs of RThru:11 CodeSize:9 Lat:15 SizeLat:13 for: %shift = ashr <16 x i8> %a, %splat916; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift917;918; SSE42-LABEL: 'splatvar_shift_v16i8'919; SSE42-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i8> undef, i8 %b, i32 0920; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:3 SizeLat:2 for: %splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer921; SSE42-NEXT:  Cost Model: Found costs of RThru:11 CodeSize:9 Lat:15 SizeLat:13 for: %shift = ashr <16 x i8> %a, %splat922; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift923;924; AVX1-LABEL: 'splatvar_shift_v16i8'925; AVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i8> undef, i8 %b, i32 0926; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:3 SizeLat:2 for: %splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer927; AVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:9 Lat:6 SizeLat:13 for: %shift = ashr <16 x i8> %a, %splat928; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift929;930; AVX2-LABEL: 'splatvar_shift_v16i8'931; AVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i8> undef, i8 %b, i32 0932; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer933; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:9 Lat:5 SizeLat:13 for: %shift = ashr <16 x i8> %a, %splat934; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift935;936; XOPAVX1-LABEL: 'splatvar_shift_v16i8'937; XOPAVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i8> undef, i8 %b, i32 0938; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:3 SizeLat:2 for: %splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer939; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %shift = ashr <16 x i8> %a, %splat940; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift941;942; XOPAVX2-LABEL: 'splatvar_shift_v16i8'943; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i8> undef, i8 %b, i32 0944; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer945; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:9 Lat:5 SizeLat:13 for: %shift = ashr <16 x i8> %a, %splat946; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift947;948; AVX512F-LABEL: 'splatvar_shift_v16i8'949; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i8> undef, i8 %b, i32 0950; AVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer951; AVX512F-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:9 Lat:5 SizeLat:13 for: %shift = ashr <16 x i8> %a, %splat952; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift953;954; AVX512BW-LABEL: 'splatvar_shift_v16i8'955; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i8> undef, i8 %b, i32 0956; AVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer957; AVX512BW-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:8 Lat:12 SizeLat:12 for: %shift = ashr <16 x i8> %a, %splat958; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift959;960; AVX512VL-LABEL: 'splatvar_shift_v16i8'961; AVX512VL-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i8> undef, i8 %b, i32 0962; AVX512VL-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer963; AVX512VL-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:9 Lat:5 SizeLat:13 for: %shift = ashr <16 x i8> %a, %splat964; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift965;966; AVX512BWVL-LABEL: 'splatvar_shift_v16i8'967; AVX512BWVL-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i8> undef, i8 %b, i32 0968; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer969; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:8 Lat:12 SizeLat:12 for: %shift = ashr <16 x i8> %a, %splat970; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift971;972; AVX512GFNI-LABEL: 'splatvar_shift_v16i8'973; AVX512GFNI-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <16 x i8> undef, i8 %b, i32 0974; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer975; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:8 Lat:12 SizeLat:12 for: %shift = ashr <16 x i8> %a, %splat976; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift977;978  %insert = insertelement <16 x i8> undef, i8 %b, i32 0979  %splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer980  %shift = ashr <16 x i8> %a, %splat981  ret <16 x i8> %shift982}983 984define <32 x i8> @splatvar_shift_v32i8(<32 x i8> %a, i8 %b) {985; SSE2-LABEL: 'splatvar_shift_v32i8'986; SSE2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i8> undef, i8 %b, i32 0987; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:3 SizeLat:4 for: %splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer988; SSE2-NEXT:  Cost Model: Found costs of RThru:22 CodeSize:18 Lat:30 SizeLat:26 for: %shift = ashr <32 x i8> %a, %splat989; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift990;991; SSE42-LABEL: 'splatvar_shift_v32i8'992; SSE42-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i8> undef, i8 %b, i32 0993; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:3 SizeLat:2 for: %splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer994; SSE42-NEXT:  Cost Model: Found costs of RThru:22 CodeSize:18 Lat:30 SizeLat:26 for: %shift = ashr <32 x i8> %a, %splat995; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift996;997; AVX1-LABEL: 'splatvar_shift_v32i8'998; AVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i8> undef, i8 %b, i32 0999; AVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:3 Lat:4 SizeLat:6 for: %splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer1000; AVX1-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:16 Lat:11 SizeLat:21 for: %shift = ashr <32 x i8> %a, %splat1001; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1002;1003; AVX2-LABEL: 'splatvar_shift_v32i8'1004; AVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i8> undef, i8 %b, i32 01005; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer1006; AVX2-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:11 Lat:9 SizeLat:16 for: %shift = ashr <32 x i8> %a, %splat1007; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1008;1009; XOPAVX1-LABEL: 'splatvar_shift_v32i8'1010; XOPAVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i8> undef, i8 %b, i32 01011; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:3 Lat:4 SizeLat:6 for: %splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer1012; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:5 Lat:7 SizeLat:6 for: %shift = ashr <32 x i8> %a, %splat1013; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1014;1015; XOPAVX2-LABEL: 'splatvar_shift_v32i8'1016; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i8> undef, i8 %b, i32 01017; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer1018; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:11 Lat:9 SizeLat:16 for: %shift = ashr <32 x i8> %a, %splat1019; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1020;1021; AVX512F-LABEL: 'splatvar_shift_v32i8'1022; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i8> undef, i8 %b, i32 01023; AVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer1024; AVX512F-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:11 Lat:9 SizeLat:16 for: %shift = ashr <32 x i8> %a, %splat1025; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1026;1027; AVX512BW-LABEL: 'splatvar_shift_v32i8'1028; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i8> undef, i8 %b, i32 01029; AVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer1030; AVX512BW-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:10 SizeLat:13 for: %shift = ashr <32 x i8> %a, %splat1031; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1032;1033; AVX512VL-LABEL: 'splatvar_shift_v32i8'1034; AVX512VL-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i8> undef, i8 %b, i32 01035; AVX512VL-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer1036; AVX512VL-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:11 Lat:9 SizeLat:16 for: %shift = ashr <32 x i8> %a, %splat1037; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1038;1039; AVX512BWVL-LABEL: 'splatvar_shift_v32i8'1040; AVX512BWVL-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i8> undef, i8 %b, i32 01041; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer1042; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:10 SizeLat:13 for: %shift = ashr <32 x i8> %a, %splat1043; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1044;1045; AVX512GFNI-LABEL: 'splatvar_shift_v32i8'1046; AVX512GFNI-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <32 x i8> undef, i8 %b, i32 01047; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer1048; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:10 SizeLat:13 for: %shift = ashr <32 x i8> %a, %splat1049; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1050;1051  %insert = insertelement <32 x i8> undef, i8 %b, i32 01052  %splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer1053  %shift = ashr <32 x i8> %a, %splat1054  ret <32 x i8> %shift1055}1056 1057define <64 x i8> @splatvar_shift_v64i8(<64 x i8> %a, i8 %b) {1058; SSE2-LABEL: 'splatvar_shift_v64i8'1059; SSE2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <64 x i8> undef, i8 %b, i32 01060; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:3 SizeLat:4 for: %splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer1061; SSE2-NEXT:  Cost Model: Found costs of RThru:44 CodeSize:36 Lat:60 SizeLat:52 for: %shift = ashr <64 x i8> %a, %splat1062; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1063;1064; SSE42-LABEL: 'splatvar_shift_v64i8'1065; SSE42-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <64 x i8> undef, i8 %b, i32 01066; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:3 SizeLat:2 for: %splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer1067; SSE42-NEXT:  Cost Model: Found costs of RThru:44 CodeSize:36 Lat:60 SizeLat:52 for: %shift = ashr <64 x i8> %a, %splat1068; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1069;1070; AVX1-LABEL: 'splatvar_shift_v64i8'1071; AVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <64 x i8> undef, i8 %b, i32 01072; AVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:3 Lat:4 SizeLat:6 for: %splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer1073; AVX1-NEXT:  Cost Model: Found costs of RThru:20 CodeSize:32 Lat:22 SizeLat:42 for: %shift = ashr <64 x i8> %a, %splat1074; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1075;1076; AVX2-LABEL: 'splatvar_shift_v64i8'1077; AVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <64 x i8> undef, i8 %b, i32 01078; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer1079; AVX2-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:22 Lat:18 SizeLat:32 for: %shift = ashr <64 x i8> %a, %splat1080; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1081;1082; XOPAVX1-LABEL: 'splatvar_shift_v64i8'1083; XOPAVX1-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <64 x i8> undef, i8 %b, i32 01084; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:3 Lat:4 SizeLat:6 for: %splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer1085; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:10 Lat:14 SizeLat:12 for: %shift = ashr <64 x i8> %a, %splat1086; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1087;1088; XOPAVX2-LABEL: 'splatvar_shift_v64i8'1089; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <64 x i8> undef, i8 %b, i32 01090; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:2 for: %splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer1091; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:22 Lat:18 SizeLat:32 for: %shift = ashr <64 x i8> %a, %splat1092; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1093;1094; AVX512F-LABEL: 'splatvar_shift_v64i8'1095; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <64 x i8> undef, i8 %b, i32 01096; AVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer1097; AVX512F-NEXT:  Cost Model: Found costs of RThru:37 CodeSize:51 Lat:37 SizeLat:63 for: %shift = ashr <64 x i8> %a, %splat1098; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1099;1100; AVX512BW-LABEL: 'splatvar_shift_v64i8'1101; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <64 x i8> undef, i8 %b, i32 01102; AVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer1103; AVX512BW-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:10 SizeLat:15 for: %shift = ashr <64 x i8> %a, %splat1104; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1105;1106; AVX512VL-LABEL: 'splatvar_shift_v64i8'1107; AVX512VL-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <64 x i8> undef, i8 %b, i32 01108; AVX512VL-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer1109; AVX512VL-NEXT:  Cost Model: Found costs of RThru:37 CodeSize:51 Lat:37 SizeLat:63 for: %shift = ashr <64 x i8> %a, %splat1110; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1111;1112; AVX512BWVL-LABEL: 'splatvar_shift_v64i8'1113; AVX512BWVL-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <64 x i8> undef, i8 %b, i32 01114; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer1115; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:10 SizeLat:15 for: %shift = ashr <64 x i8> %a, %splat1116; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1117;1118; AVX512GFNI-LABEL: 'splatvar_shift_v64i8'1119; AVX512GFNI-NEXT:  Cost Model: Found costs of 1 for: %insert = insertelement <64 x i8> undef, i8 %b, i32 01120; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer1121; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:10 SizeLat:15 for: %shift = ashr <64 x i8> %a, %splat1122; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1123;1124  %insert = insertelement <64 x i8> undef, i8 %b, i32 01125  %splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer1126  %shift = ashr <64 x i8> %a, %splat1127  ret <64 x i8> %shift1128}1129 1130;1131; Constant Shifts1132;1133 1134define <2 x i64> @constant_shift_v2i64(<2 x i64> %a) {1135; SSE2-LABEL: 'constant_shift_v2i64'1136; SSE2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:12 Lat:11 SizeLat:16 for: %shift = ashr <2 x i64> %a, <i64 1, i64 7>1137; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift1138;1139; SSE42-LABEL: 'constant_shift_v2i64'1140; SSE42-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:17 SizeLat:7 for: %shift = ashr <2 x i64> %a, <i64 1, i64 7>1141; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift1142;1143; AVX1-LABEL: 'constant_shift_v2i64'1144; AVX1-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:6 SizeLat:14 for: %shift = ashr <2 x i64> %a, <i64 1, i64 7>1145; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift1146;1147; AVX2-LABEL: 'constant_shift_v2i64'1148; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:5 SizeLat:5 for: %shift = ashr <2 x i64> %a, <i64 1, i64 7>1149; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift1150;1151; XOP-LABEL: 'constant_shift_v2i64'1152; XOP-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %shift = ashr <2 x i64> %a, <i64 1, i64 7>1153; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift1154;1155; AVX512-LABEL: 'constant_shift_v2i64'1156; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <2 x i64> %a, <i64 1, i64 7>1157; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift1158;1159  %shift = ashr <2 x i64> %a, <i64 1, i64 7>1160  ret <2 x i64> %shift1161}1162 1163define <4 x i64> @constant_shift_v4i64(<4 x i64> %a) {1164; SSE2-LABEL: 'constant_shift_v4i64'1165; SSE2-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:24 Lat:22 SizeLat:32 for: %shift = ashr <4 x i64> %a, <i64 1, i64 7, i64 15, i64 31>1166; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift1167;1168; SSE42-LABEL: 'constant_shift_v4i64'1169; SSE42-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:10 Lat:34 SizeLat:14 for: %shift = ashr <4 x i64> %a, <i64 1, i64 7, i64 15, i64 31>1170; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift1171;1172; AVX1-LABEL: 'constant_shift_v4i64'1173; AVX1-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:22 Lat:12 SizeLat:30 for: %shift = ashr <4 x i64> %a, <i64 1, i64 7, i64 15, i64 31>1174; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift1175;1176; AVX2-LABEL: 'constant_shift_v4i64'1177; AVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:8 SizeLat:9 for: %shift = ashr <4 x i64> %a, <i64 1, i64 7, i64 15, i64 31>1178; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift1179;1180; XOP-LABEL: 'constant_shift_v4i64'1181; XOP-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:7 SizeLat:6 for: %shift = ashr <4 x i64> %a, <i64 1, i64 7, i64 15, i64 31>1182; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift1183;1184; AVX512-LABEL: 'constant_shift_v4i64'1185; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <4 x i64> %a, <i64 1, i64 7, i64 15, i64 31>1186; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift1187;1188  %shift = ashr <4 x i64> %a, <i64 1, i64 7, i64 15, i64 31>1189  ret <4 x i64> %shift1190}1191 1192define <8 x i64> @constant_shift_v8i64(<8 x i64> %a) {1193; SSE2-LABEL: 'constant_shift_v8i64'1194; SSE2-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:48 Lat:44 SizeLat:64 for: %shift = ashr <8 x i64> %a, <i64 1, i64 7, i64 15, i64 31, i64 1, i64 7, i64 15, i64 31>1195; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift1196;1197; SSE42-LABEL: 'constant_shift_v8i64'1198; SSE42-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:20 Lat:68 SizeLat:28 for: %shift = ashr <8 x i64> %a, <i64 1, i64 7, i64 15, i64 31, i64 1, i64 7, i64 15, i64 31>1199; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift1200;1201; AVX1-LABEL: 'constant_shift_v8i64'1202; AVX1-NEXT:  Cost Model: Found costs of RThru:24 CodeSize:44 Lat:24 SizeLat:60 for: %shift = ashr <8 x i64> %a, <i64 1, i64 7, i64 15, i64 31, i64 1, i64 7, i64 15, i64 31>1203; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift1204;1205; AVX2-LABEL: 'constant_shift_v8i64'1206; AVX2-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:10 Lat:16 SizeLat:18 for: %shift = ashr <8 x i64> %a, <i64 1, i64 7, i64 15, i64 31, i64 1, i64 7, i64 15, i64 31>1207; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift1208;1209; XOP-LABEL: 'constant_shift_v8i64'1210; XOP-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:14 SizeLat:12 for: %shift = ashr <8 x i64> %a, <i64 1, i64 7, i64 15, i64 31, i64 1, i64 7, i64 15, i64 31>1211; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift1212;1213; AVX512-LABEL: 'constant_shift_v8i64'1214; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i64> %a, <i64 1, i64 7, i64 15, i64 31, i64 1, i64 7, i64 15, i64 31>1215; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift1216;1217  %shift = ashr <8 x i64> %a, <i64 1, i64 7, i64 15, i64 31, i64 1, i64 7, i64 15, i64 31>1218  ret <8 x i64> %shift1219}1220 1221define <4 x i32> @constant_shift_v4i32(<4 x i32> %a) {1222; SSE2-LABEL: 'constant_shift_v4i32'1223; SSE2-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:15 Lat:12 SizeLat:19 for: %shift = ashr <4 x i32> %a, <i32 4, i32 5, i32 6, i32 7>1224; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift1225;1226; SSE42-LABEL: 'constant_shift_v4i32'1227; SSE42-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:15 Lat:17 SizeLat:19 for: %shift = ashr <4 x i32> %a, <i32 4, i32 5, i32 6, i32 7>1228; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift1229;1230; AVX1-LABEL: 'constant_shift_v4i32'1231; AVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:12 Lat:7 SizeLat:16 for: %shift = ashr <4 x i32> %a, <i32 4, i32 5, i32 6, i32 7>1232; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift1233;1234; AVX2-LABEL: 'constant_shift_v4i32'1235; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:3 for: %shift = ashr <4 x i32> %a, <i32 4, i32 5, i32 6, i32 7>1236; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift1237;1238; XOP-LABEL: 'constant_shift_v4i32'1239; XOP-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %shift = ashr <4 x i32> %a, <i32 4, i32 5, i32 6, i32 7>1240; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift1241;1242; AVX512-LABEL: 'constant_shift_v4i32'1243; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <4 x i32> %a, <i32 4, i32 5, i32 6, i32 7>1244; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift1245;1246  %shift = ashr <4 x i32> %a, <i32 4, i32 5, i32 6, i32 7>1247  ret <4 x i32> %shift1248}1249 1250define <8 x i32> @constant_shift_v8i32(<8 x i32> %a) {1251; SSE2-LABEL: 'constant_shift_v8i32'1252; SSE2-NEXT:  Cost Model: Found costs of RThru:24 CodeSize:30 Lat:24 SizeLat:38 for: %shift = ashr <8 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1253; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift1254;1255; SSE42-LABEL: 'constant_shift_v8i32'1256; SSE42-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:30 Lat:34 SizeLat:38 for: %shift = ashr <8 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1257; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift1258;1259; AVX1-LABEL: 'constant_shift_v8i32'1260; AVX1-NEXT:  Cost Model: Found costs of RThru:14 CodeSize:26 Lat:14 SizeLat:34 for: %shift = ashr <8 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1261; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift1262;1263; AVX2-LABEL: 'constant_shift_v8i32'1264; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:1 Lat:4 SizeLat:3 for: %shift = ashr <8 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1265; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift1266;1267; XOPAVX1-LABEL: 'constant_shift_v8i32'1268; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:7 SizeLat:6 for: %shift = ashr <8 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1269; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift1270;1271; XOPAVX2-LABEL: 'constant_shift_v8i32'1272; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:1 Lat:4 SizeLat:3 for: %shift = ashr <8 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1273; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift1274;1275; AVX512-LABEL: 'constant_shift_v8i32'1276; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1277; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift1278;1279  %shift = ashr <8 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1280  ret <8 x i32> %shift1281}1282 1283define <16 x i32> @constant_shift_v16i32(<16 x i32> %a) {1284; SSE2-LABEL: 'constant_shift_v16i32'1285; SSE2-NEXT:  Cost Model: Found costs of RThru:48 CodeSize:60 Lat:48 SizeLat:76 for: %shift = ashr <16 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1286; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift1287;1288; SSE42-LABEL: 'constant_shift_v16i32'1289; SSE42-NEXT:  Cost Model: Found costs of RThru:64 CodeSize:60 Lat:68 SizeLat:76 for: %shift = ashr <16 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1290; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift1291;1292; AVX1-LABEL: 'constant_shift_v16i32'1293; AVX1-NEXT:  Cost Model: Found costs of RThru:28 CodeSize:52 Lat:28 SizeLat:68 for: %shift = ashr <16 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1294; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift1295;1296; AVX2-LABEL: 'constant_shift_v16i32'1297; AVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:2 Lat:8 SizeLat:6 for: %shift = ashr <16 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1298; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift1299;1300; XOPAVX1-LABEL: 'constant_shift_v16i32'1301; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:14 SizeLat:12 for: %shift = ashr <16 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1302; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift1303;1304; XOPAVX2-LABEL: 'constant_shift_v16i32'1305; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:2 Lat:8 SizeLat:6 for: %shift = ashr <16 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1306; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift1307;1308; AVX512-LABEL: 'constant_shift_v16i32'1309; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <16 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1310; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift1311;1312  %shift = ashr <16 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>1313  ret <16 x i32> %shift1314}1315 1316define <8 x i16> @constant_shift_v8i16(<8 x i16> %a) {1317; SSE2-LABEL: 'constant_shift_v8i16'1318; SSE2-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:31 Lat:19 SizeLat:31 for: %shift = ashr <8 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1319; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1320;1321; SSE42-LABEL: 'constant_shift_v8i16'1322; SSE42-NEXT:  Cost Model: Found costs of RThru:22 CodeSize:23 Lat:26 SizeLat:27 for: %shift = ashr <8 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1323; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1324;1325; AVX1-LABEL: 'constant_shift_v8i16'1326; AVX1-NEXT:  Cost Model: Found costs of RThru:13 CodeSize:14 Lat:16 SizeLat:22 for: %shift = ashr <8 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1327; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1328;1329; AVX2-LABEL: 'constant_shift_v8i16'1330; AVX2-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:5 Lat:11 SizeLat:10 for: %shift = ashr <8 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1331; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1332;1333; XOP-LABEL: 'constant_shift_v8i16'1334; XOP-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %shift = ashr <8 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1335; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1336;1337; AVX512F-LABEL: 'constant_shift_v8i16'1338; AVX512F-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:5 Lat:11 SizeLat:10 for: %shift = ashr <8 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1339; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1340;1341; AVX512BW-LABEL: 'constant_shift_v8i16'1342; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1343; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1344;1345; AVX512VL-LABEL: 'constant_shift_v8i16'1346; AVX512VL-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:5 Lat:11 SizeLat:10 for: %shift = ashr <8 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1347; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1348;1349; AVX512BWVL-LABEL: 'constant_shift_v8i16'1350; AVX512BWVL-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1351; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1352;1353; AVX512GFNI-LABEL: 'constant_shift_v8i16'1354; AVX512GFNI-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1355; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1356;1357  %shift = ashr <8 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1358  ret <8 x i16> %shift1359}1360 1361define <16 x i16> @constant_shift_v16i16(<16 x i16> %a) {1362; SSE2-LABEL: 'constant_shift_v16i16'1363; SSE2-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:62 Lat:38 SizeLat:62 for: %shift = ashr <16 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1364; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1365;1366; SSE42-LABEL: 'constant_shift_v16i16'1367; SSE42-NEXT:  Cost Model: Found costs of RThru:44 CodeSize:46 Lat:52 SizeLat:54 for: %shift = ashr <16 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1368; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1369;1370; AVX1-LABEL: 'constant_shift_v16i16'1371; AVX1-NEXT:  Cost Model: Found costs of RThru:28 CodeSize:31 Lat:30 SizeLat:48 for: %shift = ashr <16 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1372; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1373;1374; AVX2-LABEL: 'constant_shift_v16i16'1375; AVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:10 SizeLat:14 for: %shift = ashr <16 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1376; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1377;1378; XOP-LABEL: 'constant_shift_v16i16'1379; XOP-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:7 SizeLat:6 for: %shift = ashr <16 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1380; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1381;1382; AVX512F-LABEL: 'constant_shift_v16i16'1383; AVX512F-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:10 SizeLat:14 for: %shift = ashr <16 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1384; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1385;1386; AVX512BW-LABEL: 'constant_shift_v16i16'1387; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <16 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1388; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1389;1390; AVX512VL-LABEL: 'constant_shift_v16i16'1391; AVX512VL-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:10 SizeLat:14 for: %shift = ashr <16 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1392; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1393;1394; AVX512BWVL-LABEL: 'constant_shift_v16i16'1395; AVX512BWVL-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <16 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1396; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1397;1398; AVX512GFNI-LABEL: 'constant_shift_v16i16'1399; AVX512GFNI-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <16 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1400; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1401;1402  %shift = ashr <16 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1403  ret <16 x i16> %shift1404}1405 1406define <32 x i16> @constant_shift_v32i16(<32 x i16> %a) {1407; SSE2-LABEL: 'constant_shift_v32i16'1408; SSE2-NEXT:  Cost Model: Found costs of RThru:64 CodeSize:124 Lat:76 SizeLat:124 for: %shift = ashr <32 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1409; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1410;1411; SSE42-LABEL: 'constant_shift_v32i16'1412; SSE42-NEXT:  Cost Model: Found costs of RThru:88 CodeSize:92 Lat:104 SizeLat:108 for: %shift = ashr <32 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1413; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1414;1415; AVX1-LABEL: 'constant_shift_v32i16'1416; AVX1-NEXT:  Cost Model: Found costs of RThru:56 CodeSize:62 Lat:60 SizeLat:96 for: %shift = ashr <32 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1417; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1418;1419; AVX2-LABEL: 'constant_shift_v32i16'1420; AVX2-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:20 Lat:20 SizeLat:28 for: %shift = ashr <32 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1421; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1422;1423; XOP-LABEL: 'constant_shift_v32i16'1424; XOP-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:14 SizeLat:12 for: %shift = ashr <32 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1425; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1426;1427; AVX512F-LABEL: 'constant_shift_v32i16'1428; AVX512F-NEXT:  Cost Model: Found costs of RThru:11 CodeSize:11 Lat:16 SizeLat:15 for: %shift = ashr <32 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1429; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1430;1431; AVX512BW-LABEL: 'constant_shift_v32i16'1432; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <32 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1433; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1434;1435; AVX512VL-LABEL: 'constant_shift_v32i16'1436; AVX512VL-NEXT:  Cost Model: Found costs of RThru:11 CodeSize:11 Lat:16 SizeLat:15 for: %shift = ashr <32 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1437; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1438;1439; AVX512BWVL-LABEL: 'constant_shift_v32i16'1440; AVX512BWVL-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <32 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1441; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1442;1443; AVX512GFNI-LABEL: 'constant_shift_v32i16'1444; AVX512GFNI-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <32 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1445; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1446;1447  %shift = ashr <32 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>1448  ret <32 x i16> %shift1449}1450 1451define <16 x i8> @constant_shift_v16i8(<16 x i8> %a) {1452; SSE2-LABEL: 'constant_shift_v16i8'1453; SSE2-NEXT:  Cost Model: Found costs of RThru:27 CodeSize:54 Lat:30 SizeLat:54 for: %shift = ashr <16 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1454; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1455;1456; SSE42-LABEL: 'constant_shift_v16i8'1457; SSE42-NEXT:  Cost Model: Found costs of RThru:38 CodeSize:30 Lat:41 SizeLat:36 for: %shift = ashr <16 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1458; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1459;1460; AVX1-LABEL: 'constant_shift_v16i8'1461; AVX1-NEXT:  Cost Model: Found costs of RThru:21 CodeSize:24 Lat:22 SizeLat:36 for: %shift = ashr <16 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1462; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1463;1464; AVX2-LABEL: 'constant_shift_v16i8'1465; AVX2-NEXT:  Cost Model: Found costs of RThru:17 CodeSize:24 Lat:17 SizeLat:30 for: %shift = ashr <16 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1466; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1467;1468; XOP-LABEL: 'constant_shift_v16i8'1469; XOP-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %shift = ashr <16 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1470; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1471;1472; AVX512F-LABEL: 'constant_shift_v16i8'1473; AVX512F-NEXT:  Cost Model: Found costs of RThru:17 CodeSize:24 Lat:17 SizeLat:30 for: %shift = ashr <16 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1474; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1475;1476; AVX512BW-LABEL: 'constant_shift_v16i8'1477; AVX512BW-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:5 for: %shift = ashr <16 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1478; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1479;1480; AVX512VL-LABEL: 'constant_shift_v16i8'1481; AVX512VL-NEXT:  Cost Model: Found costs of RThru:17 CodeSize:24 Lat:17 SizeLat:30 for: %shift = ashr <16 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1482; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1483;1484; AVX512BWVL-LABEL: 'constant_shift_v16i8'1485; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:5 for: %shift = ashr <16 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1486; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1487;1488; AVX512GFNI-LABEL: 'constant_shift_v16i8'1489; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:5 for: %shift = ashr <16 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1490; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1491;1492  %shift = ashr <16 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1493  ret <16 x i8> %shift1494}1495 1496define <32 x i8> @constant_shift_v32i8(<32 x i8> %a) {1497; SSE2-LABEL: 'constant_shift_v32i8'1498; SSE2-NEXT:  Cost Model: Found costs of RThru:54 CodeSize:108 Lat:60 SizeLat:108 for: %shift = ashr <32 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1499; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1500;1501; SSE42-LABEL: 'constant_shift_v32i8'1502; SSE42-NEXT:  Cost Model: Found costs of RThru:76 CodeSize:60 Lat:82 SizeLat:72 for: %shift = ashr <32 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1503; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1504;1505; AVX1-LABEL: 'constant_shift_v32i8'1506; AVX1-NEXT:  Cost Model: Found costs of RThru:44 CodeSize:51 Lat:45 SizeLat:76 for: %shift = ashr <32 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1507; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1508;1509; AVX2-LABEL: 'constant_shift_v32i8'1510; AVX2-NEXT:  Cost Model: Found costs of RThru:18 CodeSize:24 Lat:20 SizeLat:43 for: %shift = ashr <32 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1511; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1512;1513; XOP-LABEL: 'constant_shift_v32i8'1514; XOP-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:7 SizeLat:6 for: %shift = ashr <32 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1515; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1516;1517; AVX512F-LABEL: 'constant_shift_v32i8'1518; AVX512F-NEXT:  Cost Model: Found costs of RThru:18 CodeSize:24 Lat:20 SizeLat:43 for: %shift = ashr <32 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1519; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1520;1521; AVX512BW-LABEL: 'constant_shift_v32i8'1522; AVX512BW-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:24 Lat:13 SizeLat:30 for: %shift = ashr <32 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1523; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1524;1525; AVX512VL-LABEL: 'constant_shift_v32i8'1526; AVX512VL-NEXT:  Cost Model: Found costs of RThru:18 CodeSize:24 Lat:20 SizeLat:43 for: %shift = ashr <32 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1527; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1528;1529; AVX512BWVL-LABEL: 'constant_shift_v32i8'1530; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:24 Lat:13 SizeLat:30 for: %shift = ashr <32 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1531; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1532;1533; AVX512GFNI-LABEL: 'constant_shift_v32i8'1534; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:24 Lat:13 SizeLat:30 for: %shift = ashr <32 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1535; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1536;1537  %shift = ashr <32 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1538  ret <32 x i8> %shift1539}1540 1541define <64 x i8> @constant_shift_v64i8(<64 x i8> %a) {1542; SSE2-LABEL: 'constant_shift_v64i8'1543; SSE2-NEXT:  Cost Model: Found costs of RThru:108 CodeSize:216 Lat:120 SizeLat:216 for: %shift = ashr <64 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1544; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1545;1546; SSE42-LABEL: 'constant_shift_v64i8'1547; SSE42-NEXT:  Cost Model: Found costs of RThru:152 CodeSize:120 Lat:164 SizeLat:144 for: %shift = ashr <64 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1548; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1549;1550; AVX1-LABEL: 'constant_shift_v64i8'1551; AVX1-NEXT:  Cost Model: Found costs of RThru:88 CodeSize:102 Lat:90 SizeLat:152 for: %shift = ashr <64 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1552; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1553;1554; AVX2-LABEL: 'constant_shift_v64i8'1555; AVX2-NEXT:  Cost Model: Found costs of RThru:36 CodeSize:48 Lat:40 SizeLat:86 for: %shift = ashr <64 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1556; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1557;1558; XOP-LABEL: 'constant_shift_v64i8'1559; XOP-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:14 SizeLat:12 for: %shift = ashr <64 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1560; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1561;1562; AVX512F-LABEL: 'constant_shift_v64i8'1563; AVX512F-NEXT:  Cost Model: Found costs of RThru:37 CodeSize:51 Lat:37 SizeLat:63 for: %shift = ashr <64 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1564; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1565;1566; AVX512BW-LABEL: 'constant_shift_v64i8'1567; AVX512BW-NEXT:  Cost Model: Found costs of RThru:15 CodeSize:30 Lat:15 SizeLat:30 for: %shift = ashr <64 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1568; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1569;1570; AVX512VL-LABEL: 'constant_shift_v64i8'1571; AVX512VL-NEXT:  Cost Model: Found costs of RThru:37 CodeSize:51 Lat:37 SizeLat:63 for: %shift = ashr <64 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1572; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1573;1574; AVX512BWVL-LABEL: 'constant_shift_v64i8'1575; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:15 CodeSize:30 Lat:15 SizeLat:30 for: %shift = ashr <64 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1576; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1577;1578; AVX512GFNI-LABEL: 'constant_shift_v64i8'1579; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:15 CodeSize:30 Lat:15 SizeLat:30 for: %shift = ashr <64 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1580; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1581;1582  %shift = ashr <64 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>1583  ret <64 x i8> %shift1584}1585 1586;1587; Uniform Constant Shifts1588;1589 1590define <2 x i64> @splatconstant_shift_v2i64(<2 x i64> %a) {1591; SSE-LABEL: 'splatconstant_shift_v2i64'1592; SSE-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:6 Lat:5 SizeLat:6 for: %shift = ashr <2 x i64> %a, splat (i64 7)1593; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift1594;1595; AVX-LABEL: 'splatconstant_shift_v2i64'1596; AVX-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:3 SizeLat:3 for: %shift = ashr <2 x i64> %a, splat (i64 7)1597; AVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift1598;1599; XOP-LABEL: 'splatconstant_shift_v2i64'1600; XOP-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:3 SizeLat:3 for: %shift = ashr <2 x i64> %a, splat (i64 7)1601; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift1602;1603; AVX512-LABEL: 'splatconstant_shift_v2i64'1604; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <2 x i64> %a, splat (i64 7)1605; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %shift1606;1607  %shift = ashr <2 x i64> %a, <i64 7, i64 7>1608  ret <2 x i64> %shift1609}1610 1611define <4 x i64> @splatconstant_shift_v4i64(<4 x i64> %a) {1612; SSE-LABEL: 'splatconstant_shift_v4i64'1613; SSE-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:12 Lat:10 SizeLat:12 for: %shift = ashr <4 x i64> %a, splat (i64 7)1614; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift1615;1616; AVX1-LABEL: 'splatconstant_shift_v4i64'1617; AVX1-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:8 Lat:7 SizeLat:9 for: %shift = ashr <4 x i64> %a, splat (i64 7)1618; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift1619;1620; AVX2-LABEL: 'splatconstant_shift_v4i64'1621; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:3 Lat:4 SizeLat:6 for: %shift = ashr <4 x i64> %a, splat (i64 7)1622; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift1623;1624; XOPAVX1-LABEL: 'splatconstant_shift_v4i64'1625; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:8 Lat:7 SizeLat:9 for: %shift = ashr <4 x i64> %a, splat (i64 7)1626; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift1627;1628; XOPAVX2-LABEL: 'splatconstant_shift_v4i64'1629; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:3 Lat:4 SizeLat:6 for: %shift = ashr <4 x i64> %a, splat (i64 7)1630; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift1631;1632; AVX512-LABEL: 'splatconstant_shift_v4i64'1633; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <4 x i64> %a, splat (i64 7)1634; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %shift1635;1636  %shift = ashr <4 x i64> %a, <i64 7, i64 7, i64 7, i64 7>1637  ret <4 x i64> %shift1638}1639 1640define <8 x i64> @splatconstant_shift_v8i64(<8 x i64> %a) {1641; SSE-LABEL: 'splatconstant_shift_v8i64'1642; SSE-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:24 Lat:20 SizeLat:24 for: %shift = ashr <8 x i64> %a, splat (i64 7)1643; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift1644;1645; AVX1-LABEL: 'splatconstant_shift_v8i64'1646; AVX1-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:16 Lat:14 SizeLat:18 for: %shift = ashr <8 x i64> %a, splat (i64 7)1647; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift1648;1649; AVX2-LABEL: 'splatconstant_shift_v8i64'1650; AVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:6 Lat:8 SizeLat:12 for: %shift = ashr <8 x i64> %a, splat (i64 7)1651; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift1652;1653; XOPAVX1-LABEL: 'splatconstant_shift_v8i64'1654; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:16 Lat:14 SizeLat:18 for: %shift = ashr <8 x i64> %a, splat (i64 7)1655; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift1656;1657; XOPAVX2-LABEL: 'splatconstant_shift_v8i64'1658; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:6 Lat:8 SizeLat:12 for: %shift = ashr <8 x i64> %a, splat (i64 7)1659; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift1660;1661; AVX512-LABEL: 'splatconstant_shift_v8i64'1662; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i64> %a, splat (i64 7)1663; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %shift1664;1665  %shift = ashr <8 x i64> %a, <i64 7, i64 7, i64 7, i64 7, i64 7, i64 7, i64 7, i64 7>1666  ret <8 x i64> %shift1667}1668 1669define <4 x i32> @splatconstant_shift_v4i32(<4 x i32> %a) {1670; SSE-LABEL: 'splatconstant_shift_v4i32'1671; SSE-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <4 x i32> %a, splat (i32 5)1672; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift1673;1674; AVX1-LABEL: 'splatconstant_shift_v4i32'1675; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %shift = ashr <4 x i32> %a, splat (i32 5)1676; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift1677;1678; AVX2-LABEL: 'splatconstant_shift_v4i32'1679; AVX2-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <4 x i32> %a, splat (i32 5)1680; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift1681;1682; XOPAVX1-LABEL: 'splatconstant_shift_v4i32'1683; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %shift = ashr <4 x i32> %a, splat (i32 5)1684; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift1685;1686; XOPAVX2-LABEL: 'splatconstant_shift_v4i32'1687; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <4 x i32> %a, splat (i32 5)1688; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift1689;1690; AVX512-LABEL: 'splatconstant_shift_v4i32'1691; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <4 x i32> %a, splat (i32 5)1692; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %shift1693;1694  %shift = ashr <4 x i32> %a, <i32 5, i32 5, i32 5, i32 5>1695  ret <4 x i32> %shift1696}1697 1698define <8 x i32> @splatconstant_shift_v8i32(<8 x i32> %a) {1699; SSE-LABEL: 'splatconstant_shift_v8i32'1700; SSE-NEXT:  Cost Model: Found costs of 2 for: %shift = ashr <8 x i32> %a, splat (i32 5)1701; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift1702;1703; AVX1-LABEL: 'splatconstant_shift_v8i32'1704; AVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:6 SizeLat:5 for: %shift = ashr <8 x i32> %a, splat (i32 5)1705; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift1706;1707; AVX2-LABEL: 'splatconstant_shift_v8i32'1708; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %shift = ashr <8 x i32> %a, splat (i32 5)1709; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift1710;1711; XOPAVX1-LABEL: 'splatconstant_shift_v8i32'1712; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:6 SizeLat:5 for: %shift = ashr <8 x i32> %a, splat (i32 5)1713; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift1714;1715; XOPAVX2-LABEL: 'splatconstant_shift_v8i32'1716; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %shift = ashr <8 x i32> %a, splat (i32 5)1717; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift1718;1719; AVX512-LABEL: 'splatconstant_shift_v8i32'1720; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i32> %a, splat (i32 5)1721; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %shift1722;1723  %shift = ashr <8 x i32> %a, <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>1724  ret <8 x i32> %shift1725}1726 1727define <16 x i32> @splatconstant_shift_v16i32(<16 x i32> %a) {1728; SSE-LABEL: 'splatconstant_shift_v16i32'1729; SSE-NEXT:  Cost Model: Found costs of 4 for: %shift = ashr <16 x i32> %a, splat (i32 5)1730; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift1731;1732; AVX1-LABEL: 'splatconstant_shift_v16i32'1733; AVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:8 Lat:12 SizeLat:10 for: %shift = ashr <16 x i32> %a, splat (i32 5)1734; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift1735;1736; AVX2-LABEL: 'splatconstant_shift_v16i32'1737; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %shift = ashr <16 x i32> %a, splat (i32 5)1738; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift1739;1740; XOPAVX1-LABEL: 'splatconstant_shift_v16i32'1741; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:8 Lat:12 SizeLat:10 for: %shift = ashr <16 x i32> %a, splat (i32 5)1742; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift1743;1744; XOPAVX2-LABEL: 'splatconstant_shift_v16i32'1745; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %shift = ashr <16 x i32> %a, splat (i32 5)1746; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift1747;1748; AVX512-LABEL: 'splatconstant_shift_v16i32'1749; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <16 x i32> %a, splat (i32 5)1750; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %shift1751;1752  %shift = ashr <16 x i32> %a, <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>1753  ret <16 x i32> %shift1754}1755 1756define <8 x i16> @splatconstant_shift_v8i16(<8 x i16> %a) {1757; SSE-LABEL: 'splatconstant_shift_v8i16'1758; SSE-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i16> %a, splat (i16 3)1759; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1760;1761; AVX1-LABEL: 'splatconstant_shift_v8i16'1762; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %shift = ashr <8 x i16> %a, splat (i16 3)1763; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1764;1765; AVX2-LABEL: 'splatconstant_shift_v8i16'1766; AVX2-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i16> %a, splat (i16 3)1767; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1768;1769; XOPAVX1-LABEL: 'splatconstant_shift_v8i16'1770; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %shift = ashr <8 x i16> %a, splat (i16 3)1771; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1772;1773; XOPAVX2-LABEL: 'splatconstant_shift_v8i16'1774; XOPAVX2-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i16> %a, splat (i16 3)1775; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1776;1777; AVX512-LABEL: 'splatconstant_shift_v8i16'1778; AVX512-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <8 x i16> %a, splat (i16 3)1779; AVX512-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %shift1780;1781  %shift = ashr <8 x i16> %a, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>1782  ret <8 x i16> %shift1783}1784 1785define <16 x i16> @splatconstant_shift_v16i16(<16 x i16> %a) {1786; SSE-LABEL: 'splatconstant_shift_v16i16'1787; SSE-NEXT:  Cost Model: Found costs of 2 for: %shift = ashr <16 x i16> %a, splat (i16 3)1788; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1789;1790; AVX1-LABEL: 'splatconstant_shift_v16i16'1791; AVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:6 SizeLat:5 for: %shift = ashr <16 x i16> %a, splat (i16 3)1792; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1793;1794; AVX2-LABEL: 'splatconstant_shift_v16i16'1795; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %shift = ashr <16 x i16> %a, splat (i16 3)1796; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1797;1798; XOPAVX1-LABEL: 'splatconstant_shift_v16i16'1799; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:6 SizeLat:5 for: %shift = ashr <16 x i16> %a, splat (i16 3)1800; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1801;1802; XOPAVX2-LABEL: 'splatconstant_shift_v16i16'1803; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %shift = ashr <16 x i16> %a, splat (i16 3)1804; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1805;1806; AVX512F-LABEL: 'splatconstant_shift_v16i16'1807; AVX512F-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:7 SizeLat:4 for: %shift = ashr <16 x i16> %a, splat (i16 3)1808; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1809;1810; AVX512BW-LABEL: 'splatconstant_shift_v16i16'1811; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <16 x i16> %a, splat (i16 3)1812; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1813;1814; AVX512VL-LABEL: 'splatconstant_shift_v16i16'1815; AVX512VL-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:7 SizeLat:4 for: %shift = ashr <16 x i16> %a, splat (i16 3)1816; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1817;1818; AVX512BWVL-LABEL: 'splatconstant_shift_v16i16'1819; AVX512BWVL-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <16 x i16> %a, splat (i16 3)1820; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1821;1822; AVX512GFNI-LABEL: 'splatconstant_shift_v16i16'1823; AVX512GFNI-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <16 x i16> %a, splat (i16 3)1824; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %shift1825;1826  %shift = ashr <16 x i16> %a, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>1827  ret <16 x i16> %shift1828}1829 1830define <32 x i16> @splatconstant_shift_v32i16(<32 x i16> %a) {1831; SSE-LABEL: 'splatconstant_shift_v32i16'1832; SSE-NEXT:  Cost Model: Found costs of 4 for: %shift = ashr <32 x i16> %a, splat (i16 3)1833; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1834;1835; AVX1-LABEL: 'splatconstant_shift_v32i16'1836; AVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:8 Lat:12 SizeLat:10 for: %shift = ashr <32 x i16> %a, splat (i16 3)1837; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1838;1839; AVX2-LABEL: 'splatconstant_shift_v32i16'1840; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %shift = ashr <32 x i16> %a, splat (i16 3)1841; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1842;1843; XOPAVX1-LABEL: 'splatconstant_shift_v32i16'1844; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:8 Lat:12 SizeLat:10 for: %shift = ashr <32 x i16> %a, splat (i16 3)1845; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1846;1847; XOPAVX2-LABEL: 'splatconstant_shift_v32i16'1848; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %shift = ashr <32 x i16> %a, splat (i16 3)1849; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1850;1851; AVX512F-LABEL: 'splatconstant_shift_v32i16'1852; AVX512F-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:5 Lat:10 SizeLat:7 for: %shift = ashr <32 x i16> %a, splat (i16 3)1853; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1854;1855; AVX512BW-LABEL: 'splatconstant_shift_v32i16'1856; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <32 x i16> %a, splat (i16 3)1857; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1858;1859; AVX512VL-LABEL: 'splatconstant_shift_v32i16'1860; AVX512VL-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:5 Lat:10 SizeLat:7 for: %shift = ashr <32 x i16> %a, splat (i16 3)1861; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1862;1863; AVX512BWVL-LABEL: 'splatconstant_shift_v32i16'1864; AVX512BWVL-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <32 x i16> %a, splat (i16 3)1865; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1866;1867; AVX512GFNI-LABEL: 'splatconstant_shift_v32i16'1868; AVX512GFNI-NEXT:  Cost Model: Found costs of 1 for: %shift = ashr <32 x i16> %a, splat (i16 3)1869; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %shift1870;1871  %shift = ashr <32 x i16> %a, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>1872  ret <32 x i16> %shift1873}1874 1875define <16 x i8> @splatconstant_shift_v16i8(<16 x i8> %a) {1876; SSE-LABEL: 'splatconstant_shift_v16i8'1877; SSE-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:9 SizeLat:6 for: %shift = ashr <16 x i8> %a, splat (i8 3)1878; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1879;1880; AVX1-LABEL: 'splatconstant_shift_v16i8'1881; AVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:9 SizeLat:6 for: %shift = ashr <16 x i8> %a, splat (i8 3)1882; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1883;1884; AVX2-LABEL: 'splatconstant_shift_v16i8'1885; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:5 Lat:10 SizeLat:6 for: %shift = ashr <16 x i8> %a, splat (i8 3)1886; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1887;1888; XOPAVX1-LABEL: 'splatconstant_shift_v16i8'1889; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %shift = ashr <16 x i8> %a, splat (i8 3)1890; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1891;1892; XOPAVX2-LABEL: 'splatconstant_shift_v16i8'1893; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:5 Lat:10 SizeLat:6 for: %shift = ashr <16 x i8> %a, splat (i8 3)1894; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1895;1896; AVX512F-LABEL: 'splatconstant_shift_v16i8'1897; AVX512F-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:5 Lat:10 SizeLat:6 for: %shift = ashr <16 x i8> %a, splat (i8 3)1898; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1899;1900; AVX512BW-LABEL: 'splatconstant_shift_v16i8'1901; AVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:4 Lat:8 SizeLat:5 for: %shift = ashr <16 x i8> %a, splat (i8 3)1902; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1903;1904; AVX512VL-LABEL: 'splatconstant_shift_v16i8'1905; AVX512VL-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:5 Lat:10 SizeLat:6 for: %shift = ashr <16 x i8> %a, splat (i8 3)1906; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1907;1908; AVX512BWVL-LABEL: 'splatconstant_shift_v16i8'1909; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:4 Lat:8 SizeLat:5 for: %shift = ashr <16 x i8> %a, splat (i8 3)1910; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1911;1912; AVX512GFNI-LABEL: 'splatconstant_shift_v16i8'1913; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:6 SizeLat:2 for: %shift = ashr <16 x i8> %a, splat (i8 3)1914; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %shift1915;1916  %shift = ashr <16 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>1917  ret <16 x i8> %shift1918}1919 1920define <32 x i8> @splatconstant_shift_v32i8(<32 x i8> %a) {1921; SSE-LABEL: 'splatconstant_shift_v32i8'1922; SSE-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:10 Lat:18 SizeLat:12 for: %shift = ashr <32 x i8> %a, splat (i8 3)1923; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1924;1925; AVX1-LABEL: 'splatconstant_shift_v32i8'1926; AVX1-NEXT:  Cost Model: Found costs of RThru:7 CodeSize:12 Lat:7 SizeLat:13 for: %shift = ashr <32 x i8> %a, splat (i8 3)1927; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1928;1929; AVX2-LABEL: 'splatconstant_shift_v32i8'1930; AVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:10 SizeLat:9 for: %shift = ashr <32 x i8> %a, splat (i8 3)1931; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1932;1933; XOPAVX1-LABEL: 'splatconstant_shift_v32i8'1934; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:7 SizeLat:6 for: %shift = ashr <32 x i8> %a, splat (i8 3)1935; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1936;1937; XOPAVX2-LABEL: 'splatconstant_shift_v32i8'1938; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:10 SizeLat:9 for: %shift = ashr <32 x i8> %a, splat (i8 3)1939; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1940;1941; AVX512F-LABEL: 'splatconstant_shift_v32i8'1942; AVX512F-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:10 SizeLat:9 for: %shift = ashr <32 x i8> %a, splat (i8 3)1943; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1944;1945; AVX512BW-LABEL: 'splatconstant_shift_v32i8'1946; AVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:4 Lat:9 SizeLat:5 for: %shift = ashr <32 x i8> %a, splat (i8 3)1947; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1948;1949; AVX512VL-LABEL: 'splatconstant_shift_v32i8'1950; AVX512VL-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:10 SizeLat:9 for: %shift = ashr <32 x i8> %a, splat (i8 3)1951; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1952;1953; AVX512BWVL-LABEL: 'splatconstant_shift_v32i8'1954; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:4 Lat:9 SizeLat:5 for: %shift = ashr <32 x i8> %a, splat (i8 3)1955; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1956;1957; AVX512GFNI-LABEL: 'splatconstant_shift_v32i8'1958; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:6 SizeLat:2 for: %shift = ashr <32 x i8> %a, splat (i8 3)1959; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %shift1960;1961  %shift = ashr <32 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>1962  ret <32 x i8> %shift1963}1964 1965define <64 x i8> @splatconstant_shift_v64i8(<64 x i8> %a) {1966; SSE-LABEL: 'splatconstant_shift_v64i8'1967; SSE-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:20 Lat:36 SizeLat:24 for: %shift = ashr <64 x i8> %a, splat (i8 3)1968; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1969;1970; AVX1-LABEL: 'splatconstant_shift_v64i8'1971; AVX1-NEXT:  Cost Model: Found costs of RThru:14 CodeSize:24 Lat:14 SizeLat:26 for: %shift = ashr <64 x i8> %a, splat (i8 3)1972; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1973;1974; AVX2-LABEL: 'splatconstant_shift_v64i8'1975; AVX2-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:10 Lat:20 SizeLat:18 for: %shift = ashr <64 x i8> %a, splat (i8 3)1976; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1977;1978; XOPAVX1-LABEL: 'splatconstant_shift_v64i8'1979; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:14 SizeLat:12 for: %shift = ashr <64 x i8> %a, splat (i8 3)1980; XOPAVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1981;1982; XOPAVX2-LABEL: 'splatconstant_shift_v64i8'1983; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:10 Lat:20 SizeLat:18 for: %shift = ashr <64 x i8> %a, splat (i8 3)1984; XOPAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1985;1986; AVX512F-LABEL: 'splatconstant_shift_v64i8'1987; AVX512F-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:12 Lat:10 SizeLat:12 for: %shift = ashr <64 x i8> %a, splat (i8 3)1988; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1989;1990; AVX512BW-LABEL: 'splatconstant_shift_v64i8'1991; AVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:4 Lat:9 SizeLat:6 for: %shift = ashr <64 x i8> %a, splat (i8 3)1992; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1993;1994; AVX512VL-LABEL: 'splatconstant_shift_v64i8'1995; AVX512VL-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:12 Lat:10 SizeLat:12 for: %shift = ashr <64 x i8> %a, splat (i8 3)1996; AVX512VL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift1997;1998; AVX512BWVL-LABEL: 'splatconstant_shift_v64i8'1999; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:4 Lat:9 SizeLat:6 for: %shift = ashr <64 x i8> %a, splat (i8 3)2000; AVX512BWVL-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift2001;2002; AVX512GFNI-LABEL: 'splatconstant_shift_v64i8'2003; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:6 SizeLat:2 for: %shift = ashr <64 x i8> %a, splat (i8 3)2004; AVX512GFNI-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %shift2005;2006  %shift = ashr <64 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>2007  ret <64 x i8> %shift2008}2009