brintos

brintos / llvm-project-archived public Read only

0
0
Text · 57.9 KiB · 42aa111 Raw
829 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt < %s -mtriple=i686-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+sse2 | FileCheck %s -check-prefixes=X86,SSE23; RUN: opt < %s -mtriple=i686-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+sse4.2 | FileCheck %s -check-prefixes=X86,SSE424; RUN: opt < %s -mtriple=i686-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx | FileCheck %s -check-prefixes=X86,AVX15; RUN: opt < %s -mtriple=i686-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx2 | FileCheck %s -check-prefixes=X86,AVX26; RUN: opt < %s -mtriple=i686-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx512f | FileCheck %s -check-prefixes=X86,AVX512F7; RUN: opt < %s -mtriple=i686-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx512vl,avx512bw,avx512dq | FileCheck %s -check-prefixes=X86,AVX512BW8; 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=X64,SSE29; 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=X64,SSE4210; 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=X64,AVX111; 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=X64,AVX212; 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=X64,AVX512F13; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx512vl,+avx512bw,+avx512dq | FileCheck %s -check-prefixes=X64,AVX512BW14; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+xop | FileCheck %s -check-prefixes=XOP15; 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=XOP16; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+gfni,+ssse3 | FileCheck %s -check-prefixes=GFNISSE17; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+gfni,+avx | FileCheck %s -check-prefixes=GFNIAVX18; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+gfni,+avx2 | FileCheck %s -check-prefixes=GFNIAVX219; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+gfni,+avx512f | FileCheck %s -check-prefixes=GFNIAVX512F20; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+gfni,+avx512bw | FileCheck %s -check-prefixes=GFNIAVX512BW21 22; Verify the cost of scalar bitreverse instructions.23 24declare i64 @llvm.bitreverse.i64(i64)25declare i32 @llvm.bitreverse.i32(i32)26declare i16 @llvm.bitreverse.i16(i16)27declare  i8 @llvm.bitreverse.i8(i8)28 29define i64 @var_bitreverse_i64(i64 %a) {30; X86-LABEL: 'var_bitreverse_i64'31; X86-NEXT:  Cost Model: Found costs of RThru:18 CodeSize:34 Lat:24 SizeLat:38 for: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)32; X86-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %bitreverse33;34; X64-LABEL: 'var_bitreverse_i64'35; X64-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:20 Lat:12 SizeLat:22 for: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)36; X64-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %bitreverse37;38; XOP-LABEL: 'var_bitreverse_i64'39; XOP-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:4 for: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)40; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %bitreverse41;42; GFNISSE-LABEL: 'var_bitreverse_i64'43; GFNISSE-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:6 for: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)44; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %bitreverse45;46; GFNIAVX-LABEL: 'var_bitreverse_i64'47; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:6 for: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)48; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %bitreverse49;50; GFNIAVX2-LABEL: 'var_bitreverse_i64'51; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:6 for: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)52; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %bitreverse53;54; GFNIAVX512F-LABEL: 'var_bitreverse_i64'55; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:6 for: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)56; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %bitreverse57;58; GFNIAVX512BW-LABEL: 'var_bitreverse_i64'59; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:6 for: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)60; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %bitreverse61;62  %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)63  ret i64 %bitreverse64}65 66define i32 @var_bitreverse_i32(i32 %a) {67; X86-LABEL: 'var_bitreverse_i32'68; X86-NEXT:  Cost Model: Found costs of RThru:9 CodeSize:17 Lat:12 SizeLat:19 for: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)69; X86-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %bitreverse70;71; X64-LABEL: 'var_bitreverse_i32'72; X64-NEXT:  Cost Model: Found costs of RThru:9 CodeSize:17 Lat:12 SizeLat:19 for: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)73; X64-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %bitreverse74;75; XOP-LABEL: 'var_bitreverse_i32'76; XOP-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:4 for: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)77; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %bitreverse78;79; GFNISSE-LABEL: 'var_bitreverse_i32'80; GFNISSE-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:5 for: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)81; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %bitreverse82;83; GFNIAVX-LABEL: 'var_bitreverse_i32'84; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:5 for: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)85; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %bitreverse86;87; GFNIAVX2-LABEL: 'var_bitreverse_i32'88; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:5 for: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)89; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %bitreverse90;91; GFNIAVX512F-LABEL: 'var_bitreverse_i32'92; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:5 for: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)93; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %bitreverse94;95; GFNIAVX512BW-LABEL: 'var_bitreverse_i32'96; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:5 for: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)97; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %bitreverse98;99  %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)100  ret i32 %bitreverse101}102 103define i16 @var_bitreverse_i16(i16 %a) {104; X86-LABEL: 'var_bitreverse_i16'105; X86-NEXT:  Cost Model: Found costs of RThru:9 CodeSize:17 Lat:12 SizeLat:19 for: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)106; X86-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %bitreverse107;108; X64-LABEL: 'var_bitreverse_i16'109; X64-NEXT:  Cost Model: Found costs of RThru:9 CodeSize:17 Lat:12 SizeLat:19 for: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)110; X64-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %bitreverse111;112; XOP-LABEL: 'var_bitreverse_i16'113; XOP-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:4 for: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)114; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %bitreverse115;116; GFNISSE-LABEL: 'var_bitreverse_i16'117; GFNISSE-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:6 for: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)118; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %bitreverse119;120; GFNIAVX-LABEL: 'var_bitreverse_i16'121; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:6 for: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)122; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %bitreverse123;124; GFNIAVX2-LABEL: 'var_bitreverse_i16'125; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:6 for: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)126; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %bitreverse127;128; GFNIAVX512F-LABEL: 'var_bitreverse_i16'129; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:6 for: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)130; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %bitreverse131;132; GFNIAVX512BW-LABEL: 'var_bitreverse_i16'133; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:3 SizeLat:6 for: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)134; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %bitreverse135;136  %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)137  ret i16 %bitreverse138}139 140define i8 @var_bitreverse_i8(i8 %a) {141; X86-LABEL: 'var_bitreverse_i8'142; X86-NEXT:  Cost Model: Found costs of RThru:7 CodeSize:13 Lat:9 SizeLat:14 for: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)143; X86-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %bitreverse144;145; X64-LABEL: 'var_bitreverse_i8'146; X64-NEXT:  Cost Model: Found costs of RThru:7 CodeSize:13 Lat:9 SizeLat:14 for: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)147; X64-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %bitreverse148;149; XOP-LABEL: 'var_bitreverse_i8'150; XOP-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:4 for: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)151; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %bitreverse152;153; GFNISSE-LABEL: 'var_bitreverse_i8'154; GFNISSE-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:3 Lat:3 SizeLat:4 for: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)155; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %bitreverse156;157; GFNIAVX-LABEL: 'var_bitreverse_i8'158; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:3 Lat:3 SizeLat:4 for: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)159; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %bitreverse160;161; GFNIAVX2-LABEL: 'var_bitreverse_i8'162; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:3 Lat:3 SizeLat:4 for: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)163; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %bitreverse164;165; GFNIAVX512F-LABEL: 'var_bitreverse_i8'166; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:3 Lat:3 SizeLat:4 for: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)167; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %bitreverse168;169; GFNIAVX512BW-LABEL: 'var_bitreverse_i8'170; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:3 Lat:3 SizeLat:4 for: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)171; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %bitreverse172;173  %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)174  ret i8 %bitreverse175}176 177; Verify the cost of vector bitreverse instructions.178 179declare <2 x i64> @llvm.bitreverse.v2i64(<2 x i64>)180declare <4 x i32> @llvm.bitreverse.v4i32(<4 x i32>)181declare <8 x i16> @llvm.bitreverse.v8i16(<8 x i16>)182declare <16 x i8> @llvm.bitreverse.v16i8(<16 x i8>)183 184declare <4 x i64> @llvm.bitreverse.v4i64(<4 x i64>)185declare <8 x i32> @llvm.bitreverse.v8i32(<8 x i32>)186declare <16 x i16> @llvm.bitreverse.v16i16(<16 x i16>)187declare <32 x i8> @llvm.bitreverse.v32i8(<32 x i8>)188 189declare <8 x i64> @llvm.bitreverse.v8i64(<8 x i64>)190declare <16 x i32> @llvm.bitreverse.v16i32(<16 x i32>)191declare <32 x i16> @llvm.bitreverse.v32i16(<32 x i16>)192declare <64 x i8> @llvm.bitreverse.v64i8(<64 x i8>)193 194define <2 x i64> @var_bitreverse_v2i64(<2 x i64> %a) {195; SSE2-LABEL: 'var_bitreverse_v2i64'196; SSE2-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:32 Lat:20 SizeLat:32 for: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)197; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %bitreverse198;199; SSE42-LABEL: 'var_bitreverse_v2i64'200; SSE42-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:11 Lat:20 SizeLat:21 for: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)201; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %bitreverse202;203; AVX1-LABEL: 'var_bitreverse_v2i64'204; AVX1-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:13 SizeLat:16 for: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)205; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %bitreverse206;207; AVX2-LABEL: 'var_bitreverse_v2i64'208; AVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:11 SizeLat:11 for: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)209; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %bitreverse210;211; AVX512F-LABEL: 'var_bitreverse_v2i64'212; AVX512F-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:11 SizeLat:11 for: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)213; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %bitreverse214;215; AVX512BW-LABEL: 'var_bitreverse_v2i64'216; AVX512BW-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:10 SizeLat:11 for: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)217; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %bitreverse218;219; XOP-LABEL: 'var_bitreverse_v2i64'220; XOP-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:7 SizeLat:1 for: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)221; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %bitreverse222;223; GFNISSE-LABEL: 'var_bitreverse_v2i64'224; GFNISSE-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)225; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %bitreverse226;227; GFNIAVX-LABEL: 'var_bitreverse_v2i64'228; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)229; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %bitreverse230;231; GFNIAVX2-LABEL: 'var_bitreverse_v2i64'232; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)233; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %bitreverse234;235; GFNIAVX512F-LABEL: 'var_bitreverse_v2i64'236; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)237; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %bitreverse238;239; GFNIAVX512BW-LABEL: 'var_bitreverse_v2i64'240; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)241; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %bitreverse242;243  %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)244  ret <2 x i64> %bitreverse245}246 247define <4 x i64> @var_bitreverse_v4i64(<4 x i64> %a) {248; SSE2-LABEL: 'var_bitreverse_v4i64'249; SSE2-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:64 Lat:40 SizeLat:64 for: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)250; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %bitreverse251;252; SSE42-LABEL: 'var_bitreverse_v4i64'253; SSE42-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:22 Lat:40 SizeLat:42 for: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)254; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %bitreverse255;256; AVX1-LABEL: 'var_bitreverse_v4i64'257; AVX1-NEXT:  Cost Model: Found costs of RThru:17 CodeSize:20 Lat:20 SizeLat:33 for: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)258; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %bitreverse259;260; AVX2-LABEL: 'var_bitreverse_v4i64'261; AVX2-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:11 SizeLat:17 for: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)262; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %bitreverse263;264; AVX512F-LABEL: 'var_bitreverse_v4i64'265; AVX512F-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:11 SizeLat:17 for: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)266; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %bitreverse267;268; AVX512BW-LABEL: 'var_bitreverse_v4i64'269; AVX512BW-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:11 SizeLat:11 for: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)270; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %bitreverse271;272; XOP-LABEL: 'var_bitreverse_v4i64'273; XOP-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:6 SizeLat:6 for: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)274; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %bitreverse275;276; GFNISSE-LABEL: 'var_bitreverse_v4i64'277; GFNISSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:16 SizeLat:8 for: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)278; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %bitreverse279;280; GFNIAVX-LABEL: 'var_bitreverse_v4i64'281; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)282; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %bitreverse283;284; GFNIAVX2-LABEL: 'var_bitreverse_v4i64'285; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)286; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %bitreverse287;288; GFNIAVX512F-LABEL: 'var_bitreverse_v4i64'289; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)290; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %bitreverse291;292; GFNIAVX512BW-LABEL: 'var_bitreverse_v4i64'293; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)294; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %bitreverse295;296  %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)297  ret <4 x i64> %bitreverse298}299 300define <8 x i64> @var_bitreverse_v8i64(<8 x i64> %a) {301; SSE2-LABEL: 'var_bitreverse_v8i64'302; SSE2-NEXT:  Cost Model: Found costs of RThru:64 CodeSize:128 Lat:80 SizeLat:128 for: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)303; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %bitreverse304;305; SSE42-LABEL: 'var_bitreverse_v8i64'306; SSE42-NEXT:  Cost Model: Found costs of RThru:64 CodeSize:44 Lat:80 SizeLat:84 for: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)307; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %bitreverse308;309; AVX1-LABEL: 'var_bitreverse_v8i64'310; AVX1-NEXT:  Cost Model: Found costs of RThru:34 CodeSize:40 Lat:40 SizeLat:66 for: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)311; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %bitreverse312;313; AVX2-LABEL: 'var_bitreverse_v8i64'314; AVX2-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:20 Lat:22 SizeLat:34 for: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)315; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %bitreverse316;317; AVX512F-LABEL: 'var_bitreverse_v8i64'318; AVX512F-NEXT:  Cost Model: Found costs of RThru:9 CodeSize:20 Lat:13 SizeLat:20 for: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)319; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %bitreverse320;321; AVX512BW-LABEL: 'var_bitreverse_v8i64'322; AVX512BW-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:12 SizeLat:14 for: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)323; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %bitreverse324;325; XOP-LABEL: 'var_bitreverse_v8i64'326; XOP-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:10 Lat:12 SizeLat:12 for: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)327; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %bitreverse328;329; GFNISSE-LABEL: 'var_bitreverse_v8i64'330; GFNISSE-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:8 Lat:32 SizeLat:16 for: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)331; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %bitreverse332;333; GFNIAVX-LABEL: 'var_bitreverse_v8i64'334; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:18 SizeLat:8 for: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)335; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %bitreverse336;337; GFNIAVX2-LABEL: 'var_bitreverse_v8i64'338; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:18 SizeLat:8 for: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)339; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %bitreverse340;341; GFNIAVX512F-LABEL: 'var_bitreverse_v8i64'342; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)343; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %bitreverse344;345; GFNIAVX512BW-LABEL: 'var_bitreverse_v8i64'346; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)347; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %bitreverse348;349  %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)350  ret <8 x i64> %bitreverse351}352 353define <4 x i32> @var_bitreverse_v4i32(<4 x i32> %a) {354; SSE2-LABEL: 'var_bitreverse_v4i32'355; SSE2-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:30 Lat:20 SizeLat:30 for: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)356; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %bitreverse357;358; SSE42-LABEL: 'var_bitreverse_v4i32'359; SSE42-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:11 Lat:20 SizeLat:21 for: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)360; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %bitreverse361;362; AVX1-LABEL: 'var_bitreverse_v4i32'363; AVX1-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:13 SizeLat:16 for: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)364; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %bitreverse365;366; AVX2-LABEL: 'var_bitreverse_v4i32'367; AVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:11 SizeLat:11 for: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)368; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %bitreverse369;370; AVX512F-LABEL: 'var_bitreverse_v4i32'371; AVX512F-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:11 SizeLat:11 for: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)372; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %bitreverse373;374; AVX512BW-LABEL: 'var_bitreverse_v4i32'375; AVX512BW-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:10 SizeLat:11 for: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)376; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %bitreverse377;378; XOP-LABEL: 'var_bitreverse_v4i32'379; XOP-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:7 SizeLat:1 for: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)380; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %bitreverse381;382; GFNISSE-LABEL: 'var_bitreverse_v4i32'383; GFNISSE-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)384; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %bitreverse385;386; GFNIAVX-LABEL: 'var_bitreverse_v4i32'387; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)388; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %bitreverse389;390; GFNIAVX2-LABEL: 'var_bitreverse_v4i32'391; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)392; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %bitreverse393;394; GFNIAVX512F-LABEL: 'var_bitreverse_v4i32'395; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)396; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %bitreverse397;398; GFNIAVX512BW-LABEL: 'var_bitreverse_v4i32'399; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)400; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %bitreverse401;402  %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)403  ret <4 x i32> %bitreverse404}405 406define <8 x i32> @var_bitreverse_v8i32(<8 x i32> %a) {407; SSE2-LABEL: 'var_bitreverse_v8i32'408; SSE2-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:60 Lat:40 SizeLat:60 for: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)409; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %bitreverse410;411; SSE42-LABEL: 'var_bitreverse_v8i32'412; SSE42-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:22 Lat:40 SizeLat:42 for: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)413; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %bitreverse414;415; AVX1-LABEL: 'var_bitreverse_v8i32'416; AVX1-NEXT:  Cost Model: Found costs of RThru:17 CodeSize:20 Lat:20 SizeLat:33 for: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)417; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %bitreverse418;419; AVX2-LABEL: 'var_bitreverse_v8i32'420; AVX2-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:11 SizeLat:17 for: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)421; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %bitreverse422;423; AVX512F-LABEL: 'var_bitreverse_v8i32'424; AVX512F-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:11 SizeLat:17 for: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)425; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %bitreverse426;427; AVX512BW-LABEL: 'var_bitreverse_v8i32'428; AVX512BW-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:11 SizeLat:11 for: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)429; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %bitreverse430;431; XOP-LABEL: 'var_bitreverse_v8i32'432; XOP-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:6 SizeLat:6 for: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)433; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %bitreverse434;435; GFNISSE-LABEL: 'var_bitreverse_v8i32'436; GFNISSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:16 SizeLat:8 for: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)437; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %bitreverse438;439; GFNIAVX-LABEL: 'var_bitreverse_v8i32'440; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)441; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %bitreverse442;443; GFNIAVX2-LABEL: 'var_bitreverse_v8i32'444; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)445; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %bitreverse446;447; GFNIAVX512F-LABEL: 'var_bitreverse_v8i32'448; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)449; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %bitreverse450;451; GFNIAVX512BW-LABEL: 'var_bitreverse_v8i32'452; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)453; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %bitreverse454;455  %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)456  ret <8 x i32> %bitreverse457}458 459define <16 x i32> @var_bitreverse_v16i32(<16 x i32> %a) {460; SSE2-LABEL: 'var_bitreverse_v16i32'461; SSE2-NEXT:  Cost Model: Found costs of RThru:64 CodeSize:120 Lat:80 SizeLat:120 for: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)462; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %bitreverse463;464; SSE42-LABEL: 'var_bitreverse_v16i32'465; SSE42-NEXT:  Cost Model: Found costs of RThru:64 CodeSize:44 Lat:80 SizeLat:84 for: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)466; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %bitreverse467;468; AVX1-LABEL: 'var_bitreverse_v16i32'469; AVX1-NEXT:  Cost Model: Found costs of RThru:34 CodeSize:40 Lat:40 SizeLat:66 for: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)470; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %bitreverse471;472; AVX2-LABEL: 'var_bitreverse_v16i32'473; AVX2-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:20 Lat:22 SizeLat:34 for: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)474; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %bitreverse475;476; AVX512F-LABEL: 'var_bitreverse_v16i32'477; AVX512F-NEXT:  Cost Model: Found costs of RThru:9 CodeSize:20 Lat:13 SizeLat:20 for: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)478; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %bitreverse479;480; AVX512BW-LABEL: 'var_bitreverse_v16i32'481; AVX512BW-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:12 SizeLat:14 for: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)482; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %bitreverse483;484; XOP-LABEL: 'var_bitreverse_v16i32'485; XOP-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:10 Lat:12 SizeLat:12 for: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)486; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %bitreverse487;488; GFNISSE-LABEL: 'var_bitreverse_v16i32'489; GFNISSE-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:8 Lat:32 SizeLat:16 for: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)490; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %bitreverse491;492; GFNIAVX-LABEL: 'var_bitreverse_v16i32'493; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:18 SizeLat:8 for: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)494; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %bitreverse495;496; GFNIAVX2-LABEL: 'var_bitreverse_v16i32'497; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:18 SizeLat:8 for: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)498; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %bitreverse499;500; GFNIAVX512F-LABEL: 'var_bitreverse_v16i32'501; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)502; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %bitreverse503;504; GFNIAVX512BW-LABEL: 'var_bitreverse_v16i32'505; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)506; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %bitreverse507;508  %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)509  ret <16 x i32> %bitreverse510}511 512define <8 x i16> @var_bitreverse_v8i16(<8 x i16> %a) {513; SSE2-LABEL: 'var_bitreverse_v8i16'514; SSE2-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:25 Lat:20 SizeLat:25 for: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)515; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %bitreverse516;517; SSE42-LABEL: 'var_bitreverse_v8i16'518; SSE42-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:11 Lat:20 SizeLat:21 for: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)519; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %bitreverse520;521; AVX1-LABEL: 'var_bitreverse_v8i16'522; AVX1-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:13 SizeLat:16 for: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)523; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %bitreverse524;525; AVX2-LABEL: 'var_bitreverse_v8i16'526; AVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:11 SizeLat:11 for: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)527; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %bitreverse528;529; AVX512F-LABEL: 'var_bitreverse_v8i16'530; AVX512F-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:11 SizeLat:11 for: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)531; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %bitreverse532;533; AVX512BW-LABEL: 'var_bitreverse_v8i16'534; AVX512BW-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:10 SizeLat:11 for: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)535; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %bitreverse536;537; XOP-LABEL: 'var_bitreverse_v8i16'538; XOP-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:7 SizeLat:1 for: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)539; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %bitreverse540;541; GFNISSE-LABEL: 'var_bitreverse_v8i16'542; GFNISSE-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)543; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %bitreverse544;545; GFNIAVX-LABEL: 'var_bitreverse_v8i16'546; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)547; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %bitreverse548;549; GFNIAVX2-LABEL: 'var_bitreverse_v8i16'550; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)551; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %bitreverse552;553; GFNIAVX512F-LABEL: 'var_bitreverse_v8i16'554; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)555; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %bitreverse556;557; GFNIAVX512BW-LABEL: 'var_bitreverse_v8i16'558; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:4 for: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)559; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %bitreverse560;561  %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)562  ret <8 x i16> %bitreverse563}564 565define <16 x i16> @var_bitreverse_v16i16(<16 x i16> %a) {566; SSE2-LABEL: 'var_bitreverse_v16i16'567; SSE2-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:50 Lat:40 SizeLat:50 for: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)568; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %bitreverse569;570; SSE42-LABEL: 'var_bitreverse_v16i16'571; SSE42-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:22 Lat:40 SizeLat:42 for: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)572; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %bitreverse573;574; AVX1-LABEL: 'var_bitreverse_v16i16'575; AVX1-NEXT:  Cost Model: Found costs of RThru:17 CodeSize:20 Lat:20 SizeLat:33 for: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)576; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %bitreverse577;578; AVX2-LABEL: 'var_bitreverse_v16i16'579; AVX2-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:11 SizeLat:17 for: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)580; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %bitreverse581;582; AVX512F-LABEL: 'var_bitreverse_v16i16'583; AVX512F-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:11 SizeLat:17 for: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)584; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %bitreverse585;586; AVX512BW-LABEL: 'var_bitreverse_v16i16'587; AVX512BW-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:11 SizeLat:11 for: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)588; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %bitreverse589;590; XOP-LABEL: 'var_bitreverse_v16i16'591; XOP-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:6 SizeLat:6 for: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)592; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %bitreverse593;594; GFNISSE-LABEL: 'var_bitreverse_v16i16'595; GFNISSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:16 SizeLat:8 for: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)596; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %bitreverse597;598; GFNIAVX-LABEL: 'var_bitreverse_v16i16'599; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)600; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %bitreverse601;602; GFNIAVX2-LABEL: 'var_bitreverse_v16i16'603; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)604; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %bitreverse605;606; GFNIAVX512F-LABEL: 'var_bitreverse_v16i16'607; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)608; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %bitreverse609;610; GFNIAVX512BW-LABEL: 'var_bitreverse_v16i16'611; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)612; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %bitreverse613;614  %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)615  ret <16 x i16> %bitreverse616}617 618define <32 x i16> @var_bitreverse_v32i16(<32 x i16> %a) {619; SSE2-LABEL: 'var_bitreverse_v32i16'620; SSE2-NEXT:  Cost Model: Found costs of RThru:64 CodeSize:100 Lat:80 SizeLat:100 for: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)621; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %bitreverse622;623; SSE42-LABEL: 'var_bitreverse_v32i16'624; SSE42-NEXT:  Cost Model: Found costs of RThru:64 CodeSize:44 Lat:80 SizeLat:84 for: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)625; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %bitreverse626;627; AVX1-LABEL: 'var_bitreverse_v32i16'628; AVX1-NEXT:  Cost Model: Found costs of RThru:34 CodeSize:40 Lat:40 SizeLat:66 for: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)629; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %bitreverse630;631; AVX2-LABEL: 'var_bitreverse_v32i16'632; AVX2-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:20 Lat:22 SizeLat:34 for: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)633; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %bitreverse634;635; AVX512F-LABEL: 'var_bitreverse_v32i16'636; AVX512F-NEXT:  Cost Model: Found costs of RThru:9 CodeSize:20 Lat:13 SizeLat:20 for: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)637; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %bitreverse638;639; AVX512BW-LABEL: 'var_bitreverse_v32i16'640; AVX512BW-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:10 Lat:12 SizeLat:14 for: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)641; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %bitreverse642;643; XOP-LABEL: 'var_bitreverse_v32i16'644; XOP-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:10 Lat:12 SizeLat:12 for: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)645; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %bitreverse646;647; GFNISSE-LABEL: 'var_bitreverse_v32i16'648; GFNISSE-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:8 Lat:32 SizeLat:16 for: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)649; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %bitreverse650;651; GFNIAVX-LABEL: 'var_bitreverse_v32i16'652; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:18 SizeLat:8 for: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)653; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %bitreverse654;655; GFNIAVX2-LABEL: 'var_bitreverse_v32i16'656; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:18 SizeLat:8 for: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)657; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %bitreverse658;659; GFNIAVX512F-LABEL: 'var_bitreverse_v32i16'660; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)661; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %bitreverse662;663; GFNIAVX512BW-LABEL: 'var_bitreverse_v32i16'664; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:9 SizeLat:4 for: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)665; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %bitreverse666;667  %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)668  ret <32 x i16> %bitreverse669}670 671define <16 x i8> @var_bitreverse_v16i8(<16 x i8> %a) {672; SSE2-LABEL: 'var_bitreverse_v16i8'673; SSE2-NEXT:  Cost Model: Found costs of RThru:11 CodeSize:21 Lat:12 SizeLat:21 for: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)674; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %bitreverse675;676; SSE42-LABEL: 'var_bitreverse_v16i8'677; SSE42-NEXT:  Cost Model: Found costs of RThru:11 CodeSize:10 Lat:12 SizeLat:16 for: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)678; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %bitreverse679;680; AVX1-LABEL: 'var_bitreverse_v16i8'681; AVX1-NEXT:  Cost Model: Found costs of RThru:7 CodeSize:9 Lat:7 SizeLat:13 for: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)682; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %bitreverse683;684; AVX2-LABEL: 'var_bitreverse_v16i8'685; AVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:9 Lat:6 SizeLat:9 for: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)686; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %bitreverse687;688; AVX512F-LABEL: 'var_bitreverse_v16i8'689; AVX512F-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:9 Lat:6 SizeLat:9 for: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)690; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %bitreverse691;692; AVX512BW-LABEL: 'var_bitreverse_v16i8'693; AVX512BW-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:9 Lat:5 SizeLat:9 for: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)694; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %bitreverse695;696; XOP-LABEL: 'var_bitreverse_v16i8'697; XOP-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:7 SizeLat:1 for: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)698; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %bitreverse699;700; GFNISSE-LABEL: 'var_bitreverse_v16i8'701; GFNISSE-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:6 SizeLat:2 for: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)702; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %bitreverse703;704; GFNIAVX-LABEL: 'var_bitreverse_v16i8'705; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:6 SizeLat:2 for: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)706; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %bitreverse707;708; GFNIAVX2-LABEL: 'var_bitreverse_v16i8'709; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:6 SizeLat:2 for: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)710; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %bitreverse711;712; GFNIAVX512F-LABEL: 'var_bitreverse_v16i8'713; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:6 SizeLat:2 for: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)714; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %bitreverse715;716; GFNIAVX512BW-LABEL: 'var_bitreverse_v16i8'717; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:6 SizeLat:2 for: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)718; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %bitreverse719;720  %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)721  ret <16 x i8> %bitreverse722}723 724define <32 x i8> @var_bitreverse_v32i8(<32 x i8> %a) {725; SSE2-LABEL: 'var_bitreverse_v32i8'726; SSE2-NEXT:  Cost Model: Found costs of RThru:22 CodeSize:42 Lat:24 SizeLat:42 for: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)727; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %bitreverse728;729; SSE42-LABEL: 'var_bitreverse_v32i8'730; SSE42-NEXT:  Cost Model: Found costs of RThru:22 CodeSize:20 Lat:24 SizeLat:32 for: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)731; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %bitreverse732;733; AVX1-LABEL: 'var_bitreverse_v32i8'734; AVX1-NEXT:  Cost Model: Found costs of RThru:13 CodeSize:17 Lat:15 SizeLat:26 for: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)735; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %bitreverse736;737; AVX2-LABEL: 'var_bitreverse_v32i8'738; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:9 Lat:5 SizeLat:15 for: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)739; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %bitreverse740;741; AVX512F-LABEL: 'var_bitreverse_v32i8'742; AVX512F-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:9 Lat:5 SizeLat:15 for: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)743; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %bitreverse744;745; AVX512BW-LABEL: 'var_bitreverse_v32i8'746; AVX512BW-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:9 Lat:5 SizeLat:9 for: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)747; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %bitreverse748;749; XOP-LABEL: 'var_bitreverse_v32i8'750; XOP-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:6 SizeLat:6 for: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)751; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %bitreverse752;753; GFNISSE-LABEL: 'var_bitreverse_v32i8'754; GFNISSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:12 SizeLat:4 for: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)755; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %bitreverse756;757; GFNIAVX-LABEL: 'var_bitreverse_v32i8'758; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:6 SizeLat:2 for: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)759; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %bitreverse760;761; GFNIAVX2-LABEL: 'var_bitreverse_v32i8'762; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:6 SizeLat:2 for: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)763; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %bitreverse764;765; GFNIAVX512F-LABEL: 'var_bitreverse_v32i8'766; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:6 SizeLat:2 for: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)767; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %bitreverse768;769; GFNIAVX512BW-LABEL: 'var_bitreverse_v32i8'770; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:6 SizeLat:2 for: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)771; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %bitreverse772;773  %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)774  ret <32 x i8> %bitreverse775}776 777define <64 x i8> @var_bitreverse_v64i8(<64 x i8> %a) {778; SSE2-LABEL: 'var_bitreverse_v64i8'779; SSE2-NEXT:  Cost Model: Found costs of RThru:44 CodeSize:84 Lat:48 SizeLat:84 for: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)780; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %bitreverse781;782; SSE42-LABEL: 'var_bitreverse_v64i8'783; SSE42-NEXT:  Cost Model: Found costs of RThru:44 CodeSize:40 Lat:48 SizeLat:64 for: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)784; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %bitreverse785;786; AVX1-LABEL: 'var_bitreverse_v64i8'787; AVX1-NEXT:  Cost Model: Found costs of RThru:26 CodeSize:34 Lat:30 SizeLat:52 for: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)788; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %bitreverse789;790; AVX2-LABEL: 'var_bitreverse_v64i8'791; AVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:18 Lat:10 SizeLat:30 for: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)792; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %bitreverse793;794; AVX512F-LABEL: 'var_bitreverse_v64i8'795; AVX512F-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:17 Lat:11 SizeLat:17 for: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)796; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %bitreverse797;798; AVX512BW-LABEL: 'var_bitreverse_v64i8'799; AVX512BW-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:9 Lat:5 SizeLat:12 for: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)800; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %bitreverse801;802; XOP-LABEL: 'var_bitreverse_v64i8'803; XOP-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:10 Lat:12 SizeLat:12 for: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)804; XOP-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %bitreverse805;806; GFNISSE-LABEL: 'var_bitreverse_v64i8'807; GFNISSE-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:24 SizeLat:8 for: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)808; GFNISSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %bitreverse809;810; GFNIAVX-LABEL: 'var_bitreverse_v64i8'811; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:12 SizeLat:4 for: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)812; GFNIAVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %bitreverse813;814; GFNIAVX2-LABEL: 'var_bitreverse_v64i8'815; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:12 SizeLat:4 for: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)816; GFNIAVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %bitreverse817;818; GFNIAVX512F-LABEL: 'var_bitreverse_v64i8'819; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:6 SizeLat:2 for: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)820; GFNIAVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %bitreverse821;822; GFNIAVX512BW-LABEL: 'var_bitreverse_v64i8'823; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:6 SizeLat:2 for: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)824; GFNIAVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %bitreverse825;826  %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)827  ret <64 x i8> %bitreverse828}829