xref: /llvm-project/llvm/test/Analysis/CostModel/X86/bitreverse-latency.ll (revision e49043512dbdc68319093da46e95a1e331ef837e)
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2; RUN: opt < %s -mtriple=i686-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+sse2 | FileCheck %s -check-prefixes=X86,SSE2
3; RUN: opt < %s -mtriple=i686-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+sse4.2 | FileCheck %s -check-prefixes=X86,SSE42
4; RUN: opt < %s -mtriple=i686-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+avx | FileCheck %s -check-prefixes=X86,AVX1
5; RUN: opt < %s -mtriple=i686-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+avx2 | FileCheck %s -check-prefixes=X86,AVX2
6; RUN: opt < %s -mtriple=i686-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+avx512f | FileCheck %s -check-prefixes=X86,AVX512,AVX512F
7; RUN: opt < %s -mtriple=i686-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+avx512vl,avx512bw,avx512dq | FileCheck %s -check-prefixes=X86,AVX512,AVX512BW
8; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+sse2 | FileCheck %s -check-prefixes=X64,SSE2
9; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+sse4.2 | FileCheck %s -check-prefixes=X64,SSE42
10; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+avx | FileCheck %s -check-prefixes=X64,AVX1
11; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+avx2 | FileCheck %s -check-prefixes=X64,AVX2
12; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+avx512f | FileCheck %s -check-prefixes=X64,AVX512,AVX512F
13; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+avx512vl,+avx512bw,+avx512dq | FileCheck %s -check-prefixes=X64,AVX512,AVX512BW
14; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+xop | FileCheck %s -check-prefixes=XOP
15; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+xop,+avx2 | FileCheck %s -check-prefixes=XOP
16; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+gfni,+ssse3 | FileCheck %s -check-prefixes=GFNISSE
17; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+gfni,+avx | FileCheck %s -check-prefixes=GFNIAVX
18; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+gfni,+avx2 | FileCheck %s -check-prefixes=GFNIAVX2
19; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+gfni,+avx512f | FileCheck %s -check-prefixes=GFNIAVX512F
20; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=latency -mattr=+gfni,+avx512bw | FileCheck %s -check-prefixes=GFNIAVX512BW
21
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 an estimated cost of 24 for instruction: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)
32; X86-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i64 %bitreverse
33;
34; X64-LABEL: 'var_bitreverse_i64'
35; X64-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)
36; X64-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i64 %bitreverse
37;
38; XOP-LABEL: 'var_bitreverse_i64'
39; XOP-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)
40; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i64 %bitreverse
41;
42; GFNISSE-LABEL: 'var_bitreverse_i64'
43; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)
44; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i64 %bitreverse
45;
46; GFNIAVX-LABEL: 'var_bitreverse_i64'
47; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)
48; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i64 %bitreverse
49;
50; GFNIAVX2-LABEL: 'var_bitreverse_i64'
51; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)
52; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i64 %bitreverse
53;
54; GFNIAVX512F-LABEL: 'var_bitreverse_i64'
55; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)
56; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i64 %bitreverse
57;
58; GFNIAVX512BW-LABEL: 'var_bitreverse_i64'
59; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)
60; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i64 %bitreverse
61;
62  %bitreverse = call i64 @llvm.bitreverse.i64(i64 %a)
63  ret i64 %bitreverse
64}
65
66define i32 @var_bitreverse_i32(i32 %a) {
67; X86-LABEL: 'var_bitreverse_i32'
68; X86-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)
69; X86-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 %bitreverse
70;
71; X64-LABEL: 'var_bitreverse_i32'
72; X64-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)
73; X64-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 %bitreverse
74;
75; XOP-LABEL: 'var_bitreverse_i32'
76; XOP-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)
77; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 %bitreverse
78;
79; GFNISSE-LABEL: 'var_bitreverse_i32'
80; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)
81; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 %bitreverse
82;
83; GFNIAVX-LABEL: 'var_bitreverse_i32'
84; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)
85; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 %bitreverse
86;
87; GFNIAVX2-LABEL: 'var_bitreverse_i32'
88; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)
89; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 %bitreverse
90;
91; GFNIAVX512F-LABEL: 'var_bitreverse_i32'
92; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)
93; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 %bitreverse
94;
95; GFNIAVX512BW-LABEL: 'var_bitreverse_i32'
96; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)
97; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 %bitreverse
98;
99  %bitreverse = call i32 @llvm.bitreverse.i32(i32 %a)
100  ret i32 %bitreverse
101}
102
103define i16 @var_bitreverse_i16(i16 %a) {
104; X86-LABEL: 'var_bitreverse_i16'
105; X86-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)
106; X86-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i16 %bitreverse
107;
108; X64-LABEL: 'var_bitreverse_i16'
109; X64-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)
110; X64-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i16 %bitreverse
111;
112; XOP-LABEL: 'var_bitreverse_i16'
113; XOP-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)
114; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i16 %bitreverse
115;
116; GFNISSE-LABEL: 'var_bitreverse_i16'
117; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)
118; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i16 %bitreverse
119;
120; GFNIAVX-LABEL: 'var_bitreverse_i16'
121; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)
122; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i16 %bitreverse
123;
124; GFNIAVX2-LABEL: 'var_bitreverse_i16'
125; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)
126; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i16 %bitreverse
127;
128; GFNIAVX512F-LABEL: 'var_bitreverse_i16'
129; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)
130; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i16 %bitreverse
131;
132; GFNIAVX512BW-LABEL: 'var_bitreverse_i16'
133; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)
134; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i16 %bitreverse
135;
136  %bitreverse = call i16 @llvm.bitreverse.i16(i16 %a)
137  ret i16 %bitreverse
138}
139
140define i8 @var_bitreverse_i8(i8 %a) {
141; X86-LABEL: 'var_bitreverse_i8'
142; X86-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)
143; X86-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i8 %bitreverse
144;
145; X64-LABEL: 'var_bitreverse_i8'
146; X64-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)
147; X64-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i8 %bitreverse
148;
149; XOP-LABEL: 'var_bitreverse_i8'
150; XOP-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)
151; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i8 %bitreverse
152;
153; GFNISSE-LABEL: 'var_bitreverse_i8'
154; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)
155; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i8 %bitreverse
156;
157; GFNIAVX-LABEL: 'var_bitreverse_i8'
158; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)
159; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i8 %bitreverse
160;
161; GFNIAVX2-LABEL: 'var_bitreverse_i8'
162; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)
163; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i8 %bitreverse
164;
165; GFNIAVX512F-LABEL: 'var_bitreverse_i8'
166; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)
167; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i8 %bitreverse
168;
169; GFNIAVX512BW-LABEL: 'var_bitreverse_i8'
170; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)
171; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i8 %bitreverse
172;
173  %bitreverse = call i8 @llvm.bitreverse.i8(i8 %a)
174  ret i8 %bitreverse
175}
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 an estimated cost of 20 for instruction: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)
197; SSE2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %bitreverse
198;
199; SSE42-LABEL: 'var_bitreverse_v2i64'
200; SSE42-NEXT:  Cost Model: Found an estimated cost of 20 for instruction: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)
201; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %bitreverse
202;
203; AVX1-LABEL: 'var_bitreverse_v2i64'
204; AVX1-NEXT:  Cost Model: Found an estimated cost of 13 for instruction: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)
205; AVX1-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %bitreverse
206;
207; AVX2-LABEL: 'var_bitreverse_v2i64'
208; AVX2-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)
209; AVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %bitreverse
210;
211; AVX512F-LABEL: 'var_bitreverse_v2i64'
212; AVX512F-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)
213; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %bitreverse
214;
215; AVX512BW-LABEL: 'var_bitreverse_v2i64'
216; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)
217; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %bitreverse
218;
219; XOP-LABEL: 'var_bitreverse_v2i64'
220; XOP-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)
221; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %bitreverse
222;
223; GFNISSE-LABEL: 'var_bitreverse_v2i64'
224; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)
225; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %bitreverse
226;
227; GFNIAVX-LABEL: 'var_bitreverse_v2i64'
228; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)
229; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %bitreverse
230;
231; GFNIAVX2-LABEL: 'var_bitreverse_v2i64'
232; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)
233; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %bitreverse
234;
235; GFNIAVX512F-LABEL: 'var_bitreverse_v2i64'
236; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)
237; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %bitreverse
238;
239; GFNIAVX512BW-LABEL: 'var_bitreverse_v2i64'
240; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)
241; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %bitreverse
242;
243  %bitreverse = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a)
244  ret <2 x i64> %bitreverse
245}
246
247define <4 x i64> @var_bitreverse_v4i64(<4 x i64> %a) {
248; SSE2-LABEL: 'var_bitreverse_v4i64'
249; SSE2-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)
250; SSE2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %bitreverse
251;
252; SSE42-LABEL: 'var_bitreverse_v4i64'
253; SSE42-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)
254; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %bitreverse
255;
256; AVX1-LABEL: 'var_bitreverse_v4i64'
257; AVX1-NEXT:  Cost Model: Found an estimated cost of 20 for instruction: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)
258; AVX1-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %bitreverse
259;
260; AVX2-LABEL: 'var_bitreverse_v4i64'
261; AVX2-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)
262; AVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %bitreverse
263;
264; AVX512-LABEL: 'var_bitreverse_v4i64'
265; AVX512-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)
266; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %bitreverse
267;
268; XOP-LABEL: 'var_bitreverse_v4i64'
269; XOP-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)
270; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %bitreverse
271;
272; GFNISSE-LABEL: 'var_bitreverse_v4i64'
273; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 16 for instruction: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)
274; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %bitreverse
275;
276; GFNIAVX-LABEL: 'var_bitreverse_v4i64'
277; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)
278; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %bitreverse
279;
280; GFNIAVX2-LABEL: 'var_bitreverse_v4i64'
281; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)
282; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %bitreverse
283;
284; GFNIAVX512F-LABEL: 'var_bitreverse_v4i64'
285; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)
286; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %bitreverse
287;
288; GFNIAVX512BW-LABEL: 'var_bitreverse_v4i64'
289; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)
290; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %bitreverse
291;
292  %bitreverse = call <4 x i64> @llvm.bitreverse.v4i64(<4 x i64> %a)
293  ret <4 x i64> %bitreverse
294}
295
296define <8 x i64> @var_bitreverse_v8i64(<8 x i64> %a) {
297; SSE2-LABEL: 'var_bitreverse_v8i64'
298; SSE2-NEXT:  Cost Model: Found an estimated cost of 80 for instruction: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)
299; SSE2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i64> %bitreverse
300;
301; SSE42-LABEL: 'var_bitreverse_v8i64'
302; SSE42-NEXT:  Cost Model: Found an estimated cost of 80 for instruction: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)
303; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i64> %bitreverse
304;
305; AVX1-LABEL: 'var_bitreverse_v8i64'
306; AVX1-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)
307; AVX1-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i64> %bitreverse
308;
309; AVX2-LABEL: 'var_bitreverse_v8i64'
310; AVX2-NEXT:  Cost Model: Found an estimated cost of 22 for instruction: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)
311; AVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i64> %bitreverse
312;
313; AVX512F-LABEL: 'var_bitreverse_v8i64'
314; AVX512F-NEXT:  Cost Model: Found an estimated cost of 13 for instruction: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)
315; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i64> %bitreverse
316;
317; AVX512BW-LABEL: 'var_bitreverse_v8i64'
318; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)
319; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i64> %bitreverse
320;
321; XOP-LABEL: 'var_bitreverse_v8i64'
322; XOP-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)
323; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i64> %bitreverse
324;
325; GFNISSE-LABEL: 'var_bitreverse_v8i64'
326; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 32 for instruction: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)
327; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i64> %bitreverse
328;
329; GFNIAVX-LABEL: 'var_bitreverse_v8i64'
330; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 18 for instruction: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)
331; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i64> %bitreverse
332;
333; GFNIAVX2-LABEL: 'var_bitreverse_v8i64'
334; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 18 for instruction: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)
335; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i64> %bitreverse
336;
337; GFNIAVX512F-LABEL: 'var_bitreverse_v8i64'
338; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)
339; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i64> %bitreverse
340;
341; GFNIAVX512BW-LABEL: 'var_bitreverse_v8i64'
342; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)
343; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i64> %bitreverse
344;
345  %bitreverse = call <8 x i64> @llvm.bitreverse.v8i64(<8 x i64> %a)
346  ret <8 x i64> %bitreverse
347}
348
349define <4 x i32> @var_bitreverse_v4i32(<4 x i32> %a) {
350; SSE2-LABEL: 'var_bitreverse_v4i32'
351; SSE2-NEXT:  Cost Model: Found an estimated cost of 20 for instruction: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)
352; SSE2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %bitreverse
353;
354; SSE42-LABEL: 'var_bitreverse_v4i32'
355; SSE42-NEXT:  Cost Model: Found an estimated cost of 20 for instruction: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)
356; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %bitreverse
357;
358; AVX1-LABEL: 'var_bitreverse_v4i32'
359; AVX1-NEXT:  Cost Model: Found an estimated cost of 13 for instruction: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)
360; AVX1-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %bitreverse
361;
362; AVX2-LABEL: 'var_bitreverse_v4i32'
363; AVX2-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)
364; AVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %bitreverse
365;
366; AVX512F-LABEL: 'var_bitreverse_v4i32'
367; AVX512F-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)
368; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %bitreverse
369;
370; AVX512BW-LABEL: 'var_bitreverse_v4i32'
371; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)
372; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %bitreverse
373;
374; XOP-LABEL: 'var_bitreverse_v4i32'
375; XOP-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)
376; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %bitreverse
377;
378; GFNISSE-LABEL: 'var_bitreverse_v4i32'
379; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)
380; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %bitreverse
381;
382; GFNIAVX-LABEL: 'var_bitreverse_v4i32'
383; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)
384; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %bitreverse
385;
386; GFNIAVX2-LABEL: 'var_bitreverse_v4i32'
387; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)
388; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %bitreverse
389;
390; GFNIAVX512F-LABEL: 'var_bitreverse_v4i32'
391; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)
392; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %bitreverse
393;
394; GFNIAVX512BW-LABEL: 'var_bitreverse_v4i32'
395; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)
396; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %bitreverse
397;
398  %bitreverse = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a)
399  ret <4 x i32> %bitreverse
400}
401
402define <8 x i32> @var_bitreverse_v8i32(<8 x i32> %a) {
403; SSE2-LABEL: 'var_bitreverse_v8i32'
404; SSE2-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)
405; SSE2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %bitreverse
406;
407; SSE42-LABEL: 'var_bitreverse_v8i32'
408; SSE42-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)
409; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %bitreverse
410;
411; AVX1-LABEL: 'var_bitreverse_v8i32'
412; AVX1-NEXT:  Cost Model: Found an estimated cost of 20 for instruction: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)
413; AVX1-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %bitreverse
414;
415; AVX2-LABEL: 'var_bitreverse_v8i32'
416; AVX2-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)
417; AVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %bitreverse
418;
419; AVX512-LABEL: 'var_bitreverse_v8i32'
420; AVX512-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)
421; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %bitreverse
422;
423; XOP-LABEL: 'var_bitreverse_v8i32'
424; XOP-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)
425; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %bitreverse
426;
427; GFNISSE-LABEL: 'var_bitreverse_v8i32'
428; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 16 for instruction: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)
429; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %bitreverse
430;
431; GFNIAVX-LABEL: 'var_bitreverse_v8i32'
432; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)
433; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %bitreverse
434;
435; GFNIAVX2-LABEL: 'var_bitreverse_v8i32'
436; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)
437; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %bitreverse
438;
439; GFNIAVX512F-LABEL: 'var_bitreverse_v8i32'
440; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)
441; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %bitreverse
442;
443; GFNIAVX512BW-LABEL: 'var_bitreverse_v8i32'
444; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)
445; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %bitreverse
446;
447  %bitreverse = call <8 x i32> @llvm.bitreverse.v8i32(<8 x i32> %a)
448  ret <8 x i32> %bitreverse
449}
450
451define <16 x i32> @var_bitreverse_v16i32(<16 x i32> %a) {
452; SSE2-LABEL: 'var_bitreverse_v16i32'
453; SSE2-NEXT:  Cost Model: Found an estimated cost of 80 for instruction: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)
454; SSE2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i32> %bitreverse
455;
456; SSE42-LABEL: 'var_bitreverse_v16i32'
457; SSE42-NEXT:  Cost Model: Found an estimated cost of 80 for instruction: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)
458; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i32> %bitreverse
459;
460; AVX1-LABEL: 'var_bitreverse_v16i32'
461; AVX1-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)
462; AVX1-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i32> %bitreverse
463;
464; AVX2-LABEL: 'var_bitreverse_v16i32'
465; AVX2-NEXT:  Cost Model: Found an estimated cost of 22 for instruction: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)
466; AVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i32> %bitreverse
467;
468; AVX512F-LABEL: 'var_bitreverse_v16i32'
469; AVX512F-NEXT:  Cost Model: Found an estimated cost of 13 for instruction: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)
470; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i32> %bitreverse
471;
472; AVX512BW-LABEL: 'var_bitreverse_v16i32'
473; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)
474; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i32> %bitreverse
475;
476; XOP-LABEL: 'var_bitreverse_v16i32'
477; XOP-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)
478; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i32> %bitreverse
479;
480; GFNISSE-LABEL: 'var_bitreverse_v16i32'
481; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 32 for instruction: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)
482; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i32> %bitreverse
483;
484; GFNIAVX-LABEL: 'var_bitreverse_v16i32'
485; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 18 for instruction: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)
486; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i32> %bitreverse
487;
488; GFNIAVX2-LABEL: 'var_bitreverse_v16i32'
489; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 18 for instruction: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)
490; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i32> %bitreverse
491;
492; GFNIAVX512F-LABEL: 'var_bitreverse_v16i32'
493; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)
494; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i32> %bitreverse
495;
496; GFNIAVX512BW-LABEL: 'var_bitreverse_v16i32'
497; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)
498; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i32> %bitreverse
499;
500  %bitreverse = call <16 x i32> @llvm.bitreverse.v16i32(<16 x i32> %a)
501  ret <16 x i32> %bitreverse
502}
503
504define <8 x i16> @var_bitreverse_v8i16(<8 x i16> %a) {
505; SSE2-LABEL: 'var_bitreverse_v8i16'
506; SSE2-NEXT:  Cost Model: Found an estimated cost of 20 for instruction: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)
507; SSE2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i16> %bitreverse
508;
509; SSE42-LABEL: 'var_bitreverse_v8i16'
510; SSE42-NEXT:  Cost Model: Found an estimated cost of 20 for instruction: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)
511; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i16> %bitreverse
512;
513; AVX1-LABEL: 'var_bitreverse_v8i16'
514; AVX1-NEXT:  Cost Model: Found an estimated cost of 13 for instruction: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)
515; AVX1-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i16> %bitreverse
516;
517; AVX2-LABEL: 'var_bitreverse_v8i16'
518; AVX2-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)
519; AVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i16> %bitreverse
520;
521; AVX512F-LABEL: 'var_bitreverse_v8i16'
522; AVX512F-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)
523; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i16> %bitreverse
524;
525; AVX512BW-LABEL: 'var_bitreverse_v8i16'
526; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)
527; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i16> %bitreverse
528;
529; XOP-LABEL: 'var_bitreverse_v8i16'
530; XOP-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)
531; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i16> %bitreverse
532;
533; GFNISSE-LABEL: 'var_bitreverse_v8i16'
534; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)
535; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i16> %bitreverse
536;
537; GFNIAVX-LABEL: 'var_bitreverse_v8i16'
538; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)
539; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i16> %bitreverse
540;
541; GFNIAVX2-LABEL: 'var_bitreverse_v8i16'
542; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)
543; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i16> %bitreverse
544;
545; GFNIAVX512F-LABEL: 'var_bitreverse_v8i16'
546; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)
547; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i16> %bitreverse
548;
549; GFNIAVX512BW-LABEL: 'var_bitreverse_v8i16'
550; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)
551; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i16> %bitreverse
552;
553  %bitreverse = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a)
554  ret <8 x i16> %bitreverse
555}
556
557define <16 x i16> @var_bitreverse_v16i16(<16 x i16> %a) {
558; SSE2-LABEL: 'var_bitreverse_v16i16'
559; SSE2-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)
560; SSE2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %bitreverse
561;
562; SSE42-LABEL: 'var_bitreverse_v16i16'
563; SSE42-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)
564; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %bitreverse
565;
566; AVX1-LABEL: 'var_bitreverse_v16i16'
567; AVX1-NEXT:  Cost Model: Found an estimated cost of 20 for instruction: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)
568; AVX1-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %bitreverse
569;
570; AVX2-LABEL: 'var_bitreverse_v16i16'
571; AVX2-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)
572; AVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %bitreverse
573;
574; AVX512-LABEL: 'var_bitreverse_v16i16'
575; AVX512-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)
576; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %bitreverse
577;
578; XOP-LABEL: 'var_bitreverse_v16i16'
579; XOP-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)
580; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %bitreverse
581;
582; GFNISSE-LABEL: 'var_bitreverse_v16i16'
583; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 16 for instruction: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)
584; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %bitreverse
585;
586; GFNIAVX-LABEL: 'var_bitreverse_v16i16'
587; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)
588; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %bitreverse
589;
590; GFNIAVX2-LABEL: 'var_bitreverse_v16i16'
591; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)
592; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %bitreverse
593;
594; GFNIAVX512F-LABEL: 'var_bitreverse_v16i16'
595; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)
596; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %bitreverse
597;
598; GFNIAVX512BW-LABEL: 'var_bitreverse_v16i16'
599; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)
600; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %bitreverse
601;
602  %bitreverse = call <16 x i16> @llvm.bitreverse.v16i16(<16 x i16> %a)
603  ret <16 x i16> %bitreverse
604}
605
606define <32 x i16> @var_bitreverse_v32i16(<32 x i16> %a) {
607; SSE2-LABEL: 'var_bitreverse_v32i16'
608; SSE2-NEXT:  Cost Model: Found an estimated cost of 80 for instruction: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)
609; SSE2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i16> %bitreverse
610;
611; SSE42-LABEL: 'var_bitreverse_v32i16'
612; SSE42-NEXT:  Cost Model: Found an estimated cost of 80 for instruction: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)
613; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i16> %bitreverse
614;
615; AVX1-LABEL: 'var_bitreverse_v32i16'
616; AVX1-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)
617; AVX1-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i16> %bitreverse
618;
619; AVX2-LABEL: 'var_bitreverse_v32i16'
620; AVX2-NEXT:  Cost Model: Found an estimated cost of 22 for instruction: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)
621; AVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i16> %bitreverse
622;
623; AVX512F-LABEL: 'var_bitreverse_v32i16'
624; AVX512F-NEXT:  Cost Model: Found an estimated cost of 13 for instruction: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)
625; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i16> %bitreverse
626;
627; AVX512BW-LABEL: 'var_bitreverse_v32i16'
628; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)
629; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i16> %bitreverse
630;
631; XOP-LABEL: 'var_bitreverse_v32i16'
632; XOP-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)
633; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i16> %bitreverse
634;
635; GFNISSE-LABEL: 'var_bitreverse_v32i16'
636; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 32 for instruction: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)
637; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i16> %bitreverse
638;
639; GFNIAVX-LABEL: 'var_bitreverse_v32i16'
640; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 18 for instruction: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)
641; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i16> %bitreverse
642;
643; GFNIAVX2-LABEL: 'var_bitreverse_v32i16'
644; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 18 for instruction: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)
645; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i16> %bitreverse
646;
647; GFNIAVX512F-LABEL: 'var_bitreverse_v32i16'
648; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)
649; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i16> %bitreverse
650;
651; GFNIAVX512BW-LABEL: 'var_bitreverse_v32i16'
652; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)
653; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i16> %bitreverse
654;
655  %bitreverse = call <32 x i16> @llvm.bitreverse.v32i16(<32 x i16> %a)
656  ret <32 x i16> %bitreverse
657}
658
659define <16 x i8> @var_bitreverse_v16i8(<16 x i8> %a) {
660; SSE2-LABEL: 'var_bitreverse_v16i8'
661; SSE2-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)
662; SSE2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %bitreverse
663;
664; SSE42-LABEL: 'var_bitreverse_v16i8'
665; SSE42-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)
666; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %bitreverse
667;
668; AVX1-LABEL: 'var_bitreverse_v16i8'
669; AVX1-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)
670; AVX1-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %bitreverse
671;
672; AVX2-LABEL: 'var_bitreverse_v16i8'
673; AVX2-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)
674; AVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %bitreverse
675;
676; AVX512F-LABEL: 'var_bitreverse_v16i8'
677; AVX512F-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)
678; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %bitreverse
679;
680; AVX512BW-LABEL: 'var_bitreverse_v16i8'
681; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)
682; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %bitreverse
683;
684; XOP-LABEL: 'var_bitreverse_v16i8'
685; XOP-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)
686; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %bitreverse
687;
688; GFNISSE-LABEL: 'var_bitreverse_v16i8'
689; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)
690; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %bitreverse
691;
692; GFNIAVX-LABEL: 'var_bitreverse_v16i8'
693; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)
694; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %bitreverse
695;
696; GFNIAVX2-LABEL: 'var_bitreverse_v16i8'
697; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)
698; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %bitreverse
699;
700; GFNIAVX512F-LABEL: 'var_bitreverse_v16i8'
701; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)
702; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %bitreverse
703;
704; GFNIAVX512BW-LABEL: 'var_bitreverse_v16i8'
705; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)
706; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %bitreverse
707;
708  %bitreverse = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a)
709  ret <16 x i8> %bitreverse
710}
711
712define <32 x i8> @var_bitreverse_v32i8(<32 x i8> %a) {
713; SSE2-LABEL: 'var_bitreverse_v32i8'
714; SSE2-NEXT:  Cost Model: Found an estimated cost of 24 for instruction: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)
715; SSE2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %bitreverse
716;
717; SSE42-LABEL: 'var_bitreverse_v32i8'
718; SSE42-NEXT:  Cost Model: Found an estimated cost of 24 for instruction: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)
719; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %bitreverse
720;
721; AVX1-LABEL: 'var_bitreverse_v32i8'
722; AVX1-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)
723; AVX1-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %bitreverse
724;
725; AVX2-LABEL: 'var_bitreverse_v32i8'
726; AVX2-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)
727; AVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %bitreverse
728;
729; AVX512-LABEL: 'var_bitreverse_v32i8'
730; AVX512-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)
731; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %bitreverse
732;
733; XOP-LABEL: 'var_bitreverse_v32i8'
734; XOP-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)
735; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %bitreverse
736;
737; GFNISSE-LABEL: 'var_bitreverse_v32i8'
738; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)
739; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %bitreverse
740;
741; GFNIAVX-LABEL: 'var_bitreverse_v32i8'
742; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)
743; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %bitreverse
744;
745; GFNIAVX2-LABEL: 'var_bitreverse_v32i8'
746; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)
747; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %bitreverse
748;
749; GFNIAVX512F-LABEL: 'var_bitreverse_v32i8'
750; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)
751; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %bitreverse
752;
753; GFNIAVX512BW-LABEL: 'var_bitreverse_v32i8'
754; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)
755; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %bitreverse
756;
757  %bitreverse = call <32 x i8> @llvm.bitreverse.v32i8(<32 x i8> %a)
758  ret <32 x i8> %bitreverse
759}
760
761define <64 x i8> @var_bitreverse_v64i8(<64 x i8> %a) {
762; SSE2-LABEL: 'var_bitreverse_v64i8'
763; SSE2-NEXT:  Cost Model: Found an estimated cost of 48 for instruction: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)
764; SSE2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <64 x i8> %bitreverse
765;
766; SSE42-LABEL: 'var_bitreverse_v64i8'
767; SSE42-NEXT:  Cost Model: Found an estimated cost of 48 for instruction: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)
768; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <64 x i8> %bitreverse
769;
770; AVX1-LABEL: 'var_bitreverse_v64i8'
771; AVX1-NEXT:  Cost Model: Found an estimated cost of 30 for instruction: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)
772; AVX1-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <64 x i8> %bitreverse
773;
774; AVX2-LABEL: 'var_bitreverse_v64i8'
775; AVX2-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)
776; AVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <64 x i8> %bitreverse
777;
778; AVX512F-LABEL: 'var_bitreverse_v64i8'
779; AVX512F-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)
780; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <64 x i8> %bitreverse
781;
782; AVX512BW-LABEL: 'var_bitreverse_v64i8'
783; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)
784; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <64 x i8> %bitreverse
785;
786; XOP-LABEL: 'var_bitreverse_v64i8'
787; XOP-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)
788; XOP-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <64 x i8> %bitreverse
789;
790; GFNISSE-LABEL: 'var_bitreverse_v64i8'
791; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 24 for instruction: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)
792; GFNISSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <64 x i8> %bitreverse
793;
794; GFNIAVX-LABEL: 'var_bitreverse_v64i8'
795; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)
796; GFNIAVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <64 x i8> %bitreverse
797;
798; GFNIAVX2-LABEL: 'var_bitreverse_v64i8'
799; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)
800; GFNIAVX2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <64 x i8> %bitreverse
801;
802; GFNIAVX512F-LABEL: 'var_bitreverse_v64i8'
803; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)
804; GFNIAVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <64 x i8> %bitreverse
805;
806; GFNIAVX512BW-LABEL: 'var_bitreverse_v64i8'
807; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)
808; GFNIAVX512BW-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <64 x i8> %bitreverse
809;
810  %bitreverse = call <64 x i8> @llvm.bitreverse.v64i8(<64 x i8> %a)
811  ret <64 x i8> %bitreverse
812}
813