[ARM] Split large truncating MVE stores
[llvm-complete.git] / test / Analysis / CostModel / SystemZ / cmpsel.ll
blobde72ec3a8b4ea69478302444fceaba9806e8e28e
1 ; RUN: opt < %s -cost-model -analyze -mtriple=systemz-unknown -mcpu=z13 | FileCheck %s
3 ; Note: Cost estimates of select of a fp-type is somewhat arbitrary, since it
4 ; involves a conditional jump.
5 ; Note: Vector fp32 is not directly supported, and not quite exact in
6 ; estimates (but it is big absolute values).
8 define i8 @fun0(i8 %val1, i8 %val2,
9                 i8 %val3, i8 %val4) {
10   %cmp = icmp eq i8 %val1, %val2
11   %sel = select i1 %cmp, i8 %val3, i8 %val4
12   ret i8 %sel
14 ; CHECK: fun0
15 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
16 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i8 %val3, i8 %val4
19 define i16 @fun1(i8 %val1, i8 %val2,
20                  i16 %val3, i16 %val4) {
21   %cmp = icmp eq i8 %val1, %val2
22   %sel = select i1 %cmp, i16 %val3, i16 %val4
23   ret i16 %sel
25 ; CHECK: fun1
26 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
27 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i16 %val3, i16 %val4
30 define i32 @fun2(i8 %val1, i8 %val2,
31                  i32 %val3, i32 %val4) {
32   %cmp = icmp eq i8 %val1, %val2
33   %sel = select i1 %cmp, i32 %val3, i32 %val4
34   ret i32 %sel
36 ; CHECK: fun2
37 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
38 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i32 %val3, i32 %val4
41 define i64 @fun3(i8 %val1, i8 %val2,
42                  i64 %val3, i64 %val4) {
43   %cmp = icmp eq i8 %val1, %val2
44   %sel = select i1 %cmp, i64 %val3, i64 %val4
45   ret i64 %sel
47 ; CHECK: fun3
48 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
49 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i64 %val3, i64 %val4
52 define float @fun4(i8 %val1, i8 %val2,
53                    float %val3, float %val4) {
54   %cmp = icmp eq i8 %val1, %val2
55   %sel = select i1 %cmp, float %val3, float %val4
56   ret float %sel
58 ; CHECK: fun4
59 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
60 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, float %val3, float %val4
63 define double @fun5(i8 %val1, i8 %val2,
64                     double %val3, double %val4) {
65   %cmp = icmp eq i8 %val1, %val2
66   %sel = select i1 %cmp, double %val3, double %val4
67   ret double %sel
69 ; CHECK: fun5
70 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
71 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, double %val3, double %val4
74 define i8 @fun6(i16 %val1, i16 %val2,
75                 i8 %val3, i8 %val4) {
76   %cmp = icmp eq i16 %val1, %val2
77   %sel = select i1 %cmp, i8 %val3, i8 %val4
78   ret i8 %sel
80 ; CHECK: fun6
81 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
82 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i8 %val3, i8 %val4
85 define i16 @fun7(i16 %val1, i16 %val2,
86                  i16 %val3, i16 %val4) {
87   %cmp = icmp eq i16 %val1, %val2
88   %sel = select i1 %cmp, i16 %val3, i16 %val4
89   ret i16 %sel
91 ; CHECK: fun7
92 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
93 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i16 %val3, i16 %val4
96 define i32 @fun8(i16 %val1, i16 %val2,
97                  i32 %val3, i32 %val4) {
98   %cmp = icmp eq i16 %val1, %val2
99   %sel = select i1 %cmp, i32 %val3, i32 %val4
100   ret i32 %sel
102 ; CHECK: fun8
103 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
104 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i32 %val3, i32 %val4
107 define i64 @fun9(i16 %val1, i16 %val2,
108                  i64 %val3, i64 %val4) {
109   %cmp = icmp eq i16 %val1, %val2
110   %sel = select i1 %cmp, i64 %val3, i64 %val4
111   ret i64 %sel
113 ; CHECK: fun9
114 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
115 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i64 %val3, i64 %val4
118 define float @fun10(i16 %val1, i16 %val2,
119                     float %val3, float %val4) {
120   %cmp = icmp eq i16 %val1, %val2
121   %sel = select i1 %cmp, float %val3, float %val4
122   ret float %sel
124 ; CHECK: fun10
125 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
126 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, float %val3, float %val4
129 define double @fun11(i16 %val1, i16 %val2,
130                      double %val3, double %val4) {
131   %cmp = icmp eq i16 %val1, %val2
132   %sel = select i1 %cmp, double %val3, double %val4
133   ret double %sel
135 ; CHECK: fun11
136 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
137 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, double %val3, double %val4
140 define i8 @fun12(i32 %val1, i32 %val2,
141                  i8 %val3, i8 %val4) {
142   %cmp = icmp eq i32 %val1, %val2
143   %sel = select i1 %cmp, i8 %val3, i8 %val4
144   ret i8 %sel
146 ; CHECK: fun12
147 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
148 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i8 %val3, i8 %val4
151 define i16 @fun13(i32 %val1, i32 %val2,
152                   i16 %val3, i16 %val4) {
153   %cmp = icmp eq i32 %val1, %val2
154   %sel = select i1 %cmp, i16 %val3, i16 %val4
155   ret i16 %sel
157 ; CHECK: fun13
158 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
159 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i16 %val3, i16 %val4
162 define i32 @fun14(i32 %val1, i32 %val2,
163                   i32 %val3, i32 %val4) {
164   %cmp = icmp eq i32 %val1, %val2
165   %sel = select i1 %cmp, i32 %val3, i32 %val4
166   ret i32 %sel
168 ; CHECK: fun14
169 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
170 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i32 %val3, i32 %val4
173 define i64 @fun15(i32 %val1, i32 %val2,
174                   i64 %val3, i64 %val4) {
175   %cmp = icmp eq i32 %val1, %val2
176   %sel = select i1 %cmp, i64 %val3, i64 %val4
177   ret i64 %sel
179 ; CHECK: fun15
180 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
181 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i64 %val3, i64 %val4
184 define float @fun16(i32 %val1, i32 %val2,
185                     float %val3, float %val4) {
186   %cmp = icmp eq i32 %val1, %val2
187   %sel = select i1 %cmp, float %val3, float %val4
188   ret float %sel
190 ; CHECK: fun16
191 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
192 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, float %val3, float %val4
195 define double @fun17(i32 %val1, i32 %val2,
196                      double %val3, double %val4) {
197   %cmp = icmp eq i32 %val1, %val2
198   %sel = select i1 %cmp, double %val3, double %val4
199   ret double %sel
201 ; CHECK: fun17
202 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
203 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, double %val3, double %val4
206 define i8 @fun18(i64 %val1, i64 %val2,
207                  i8 %val3, i8 %val4) {
208   %cmp = icmp eq i64 %val1, %val2
209   %sel = select i1 %cmp, i8 %val3, i8 %val4
210   ret i8 %sel
212 ; CHECK: fun18
213 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
214 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i8 %val3, i8 %val4
217 define i16 @fun19(i64 %val1, i64 %val2,
218                   i16 %val3, i16 %val4) {
219   %cmp = icmp eq i64 %val1, %val2
220   %sel = select i1 %cmp, i16 %val3, i16 %val4
221   ret i16 %sel
223 ; CHECK: fun19
224 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
225 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i16 %val3, i16 %val4
228 define i32 @fun20(i64 %val1, i64 %val2,
229                   i32 %val3, i32 %val4) {
230   %cmp = icmp eq i64 %val1, %val2
231   %sel = select i1 %cmp, i32 %val3, i32 %val4
232   ret i32 %sel
234 ; CHECK: fun20
235 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
236 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i32 %val3, i32 %val4
239 define i64 @fun21(i64 %val1, i64 %val2,
240                   i64 %val3, i64 %val4) {
241   %cmp = icmp eq i64 %val1, %val2
242   %sel = select i1 %cmp, i64 %val3, i64 %val4
243   ret i64 %sel
245 ; CHECK: fun21
246 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
247 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i64 %val3, i64 %val4
250 define float @fun22(i64 %val1, i64 %val2,
251                     float %val3, float %val4) {
252   %cmp = icmp eq i64 %val1, %val2
253   %sel = select i1 %cmp, float %val3, float %val4
254   ret float %sel
256 ; CHECK: fun22
257 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
258 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, float %val3, float %val4
261 define double @fun23(i64 %val1, i64 %val2,
262                      double %val3, double %val4) {
263   %cmp = icmp eq i64 %val1, %val2
264   %sel = select i1 %cmp, double %val3, double %val4
265   ret double %sel
267 ; CHECK: fun23
268 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
269 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, double %val3, double %val4
272 define <2 x i8> @fun24(<2 x i8> %val1, <2 x i8> %val2,
273                        <2 x i8> %val3, <2 x i8> %val4) {
274   %cmp = icmp eq <2 x i8> %val1, %val2
275   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
276   ret <2 x i8> %sel
278 ; CHECK: fun24
279 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
280 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
283 define <2 x i16> @fun25(<2 x i8> %val1, <2 x i8> %val2,
284                         <2 x i16> %val3, <2 x i16> %val4) {
285   %cmp = icmp eq <2 x i8> %val1, %val2
286   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
287   ret <2 x i16> %sel
289 ; CHECK: fun25
290 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
291 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
294 define <2 x i32> @fun26(<2 x i8> %val1, <2 x i8> %val2,
295                         <2 x i32> %val3, <2 x i32> %val4) {
296   %cmp = icmp eq <2 x i8> %val1, %val2
297   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
298   ret <2 x i32> %sel
300 ; CHECK: fun26
301 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
302 ; CHECK: cost of 3 for instruction:   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
305 define <2 x i64> @fun27(<2 x i8> %val1, <2 x i8> %val2,
306                         <2 x i64> %val3, <2 x i64> %val4) {
307   %cmp = icmp eq <2 x i8> %val1, %val2
308   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
309   ret <2 x i64> %sel
311 ; CHECK: fun27
312 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
313 ; CHECK: cost of 4 for instruction:   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
316 define <2 x float> @fun28(<2 x i8> %val1, <2 x i8> %val2,
317                           <2 x float> %val3, <2 x float> %val4) {
318   %cmp = icmp eq <2 x i8> %val1, %val2
319   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
320   ret <2 x float> %sel
322 ; CHECK: fun28
323 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
324 ; CHECK: cost of 3 for instruction:   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
327 define <2 x double> @fun29(<2 x i8> %val1, <2 x i8> %val2,
328                            <2 x double> %val3, <2 x double> %val4) {
329   %cmp = icmp eq <2 x i8> %val1, %val2
330   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
331   ret <2 x double> %sel
333 ; CHECK: fun29
334 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
335 ; CHECK: cost of 4 for instruction:   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
338 define <2 x i8> @fun30(<2 x i16> %val1, <2 x i16> %val2,
339                        <2 x i8> %val3, <2 x i8> %val4) {
340   %cmp = icmp eq <2 x i16> %val1, %val2
341   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
342   ret <2 x i8> %sel
344 ; CHECK: fun30
345 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
346 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
349 define <2 x i16> @fun31(<2 x i16> %val1, <2 x i16> %val2,
350                         <2 x i16> %val3, <2 x i16> %val4) {
351   %cmp = icmp eq <2 x i16> %val1, %val2
352   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
353   ret <2 x i16> %sel
355 ; CHECK: fun31
356 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
357 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
360 define <2 x i32> @fun32(<2 x i16> %val1, <2 x i16> %val2,
361                         <2 x i32> %val3, <2 x i32> %val4) {
362   %cmp = icmp eq <2 x i16> %val1, %val2
363   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
364   ret <2 x i32> %sel
366 ; CHECK: fun32
367 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
368 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
371 define <2 x i64> @fun33(<2 x i16> %val1, <2 x i16> %val2,
372                         <2 x i64> %val3, <2 x i64> %val4) {
373   %cmp = icmp eq <2 x i16> %val1, %val2
374   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
375   ret <2 x i64> %sel
377 ; CHECK: fun33
378 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
379 ; CHECK: cost of 3 for instruction:   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
382 define <2 x float> @fun34(<2 x i16> %val1, <2 x i16> %val2,
383                           <2 x float> %val3, <2 x float> %val4) {
384   %cmp = icmp eq <2 x i16> %val1, %val2
385   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
386   ret <2 x float> %sel
388 ; CHECK: fun34
389 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
390 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
393 define <2 x double> @fun35(<2 x i16> %val1, <2 x i16> %val2,
394                            <2 x double> %val3, <2 x double> %val4) {
395   %cmp = icmp eq <2 x i16> %val1, %val2
396   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
397   ret <2 x double> %sel
399 ; CHECK: fun35
400 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
401 ; CHECK: cost of 3 for instruction:   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
404 define <2 x i8> @fun36(<2 x i32> %val1, <2 x i32> %val2,
405                        <2 x i8> %val3, <2 x i8> %val4) {
406   %cmp = icmp eq <2 x i32> %val1, %val2
407   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
408   ret <2 x i8> %sel
410 ; CHECK: fun36
411 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
412 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
415 define <2 x i16> @fun37(<2 x i32> %val1, <2 x i32> %val2,
416                         <2 x i16> %val3, <2 x i16> %val4) {
417   %cmp = icmp eq <2 x i32> %val1, %val2
418   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
419   ret <2 x i16> %sel
421 ; CHECK: fun37
422 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
423 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
426 define <2 x i32> @fun38(<2 x i32> %val1, <2 x i32> %val2,
427                         <2 x i32> %val3, <2 x i32> %val4) {
428   %cmp = icmp eq <2 x i32> %val1, %val2
429   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
430   ret <2 x i32> %sel
432 ; CHECK: fun38
433 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
434 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
437 define <2 x i64> @fun39(<2 x i32> %val1, <2 x i32> %val2,
438                         <2 x i64> %val3, <2 x i64> %val4) {
439   %cmp = icmp eq <2 x i32> %val1, %val2
440   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
441   ret <2 x i64> %sel
443 ; CHECK: fun39
444 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
445 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
448 define <2 x float> @fun40(<2 x i32> %val1, <2 x i32> %val2,
449                           <2 x float> %val3, <2 x float> %val4) {
450   %cmp = icmp eq <2 x i32> %val1, %val2
451   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
452   ret <2 x float> %sel
454 ; CHECK: fun40
455 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
456 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
459 define <2 x double> @fun41(<2 x i32> %val1, <2 x i32> %val2,
460                            <2 x double> %val3, <2 x double> %val4) {
461   %cmp = icmp eq <2 x i32> %val1, %val2
462   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
463   ret <2 x double> %sel
465 ; CHECK: fun41
466 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
467 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
470 define <2 x i8> @fun42(<2 x i64> %val1, <2 x i64> %val2,
471                        <2 x i8> %val3, <2 x i8> %val4) {
472   %cmp = icmp eq <2 x i64> %val1, %val2
473   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
474   ret <2 x i8> %sel
476 ; CHECK: fun42
477 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
478 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
481 define <2 x i16> @fun43(<2 x i64> %val1, <2 x i64> %val2,
482                         <2 x i16> %val3, <2 x i16> %val4) {
483   %cmp = icmp eq <2 x i64> %val1, %val2
484   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
485   ret <2 x i16> %sel
487 ; CHECK: fun43
488 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
489 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
492 define <2 x i32> @fun44(<2 x i64> %val1, <2 x i64> %val2,
493                         <2 x i32> %val3, <2 x i32> %val4) {
494   %cmp = icmp eq <2 x i64> %val1, %val2
495   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
496   ret <2 x i32> %sel
498 ; CHECK: fun44
499 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
500 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
503 define <2 x i64> @fun45(<2 x i64> %val1, <2 x i64> %val2,
504                         <2 x i64> %val3, <2 x i64> %val4) {
505   %cmp = icmp eq <2 x i64> %val1, %val2
506   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
507   ret <2 x i64> %sel
509 ; CHECK: fun45
510 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
511 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
514 define <2 x float> @fun46(<2 x i64> %val1, <2 x i64> %val2,
515                           <2 x float> %val3, <2 x float> %val4) {
516   %cmp = icmp eq <2 x i64> %val1, %val2
517   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
518   ret <2 x float> %sel
520 ; CHECK: fun46
521 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
522 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
525 define <2 x double> @fun47(<2 x i64> %val1, <2 x i64> %val2,
526                            <2 x double> %val3, <2 x double> %val4) {
527   %cmp = icmp eq <2 x i64> %val1, %val2
528   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
529   ret <2 x double> %sel
531 ; CHECK: fun47
532 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
533 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
536 define <4 x i8> @fun48(<4 x i8> %val1, <4 x i8> %val2,
537                        <4 x i8> %val3, <4 x i8> %val4) {
538   %cmp = icmp eq <4 x i8> %val1, %val2
539   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
540   ret <4 x i8> %sel
542 ; CHECK: fun48
543 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
544 ; CHECK: cost of 1 for instruction:   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
547 define <4 x i16> @fun49(<4 x i8> %val1, <4 x i8> %val2,
548                         <4 x i16> %val3, <4 x i16> %val4) {
549   %cmp = icmp eq <4 x i8> %val1, %val2
550   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
551   ret <4 x i16> %sel
553 ; CHECK: fun49
554 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
555 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
558 define <4 x i32> @fun50(<4 x i8> %val1, <4 x i8> %val2,
559                         <4 x i32> %val3, <4 x i32> %val4) {
560   %cmp = icmp eq <4 x i8> %val1, %val2
561   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
562   ret <4 x i32> %sel
564 ; CHECK: fun50
565 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
566 ; CHECK: cost of 3 for instruction:   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
569 define <4 x i64> @fun51(<4 x i8> %val1, <4 x i8> %val2,
570                         <4 x i64> %val3, <4 x i64> %val4) {
571   %cmp = icmp eq <4 x i8> %val1, %val2
572   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
573   ret <4 x i64> %sel
575 ; CHECK: fun51
576 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
577 ; CHECK: cost of 9 for instruction:   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
580 define <4 x float> @fun52(<4 x i8> %val1, <4 x i8> %val2,
581                           <4 x float> %val3, <4 x float> %val4) {
582   %cmp = icmp eq <4 x i8> %val1, %val2
583   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
584   ret <4 x float> %sel
586 ; CHECK: fun52
587 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
588 ; CHECK: cost of 3 for instruction:   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
591 define <4 x double> @fun53(<4 x i8> %val1, <4 x i8> %val2,
592                            <4 x double> %val3, <4 x double> %val4) {
593   %cmp = icmp eq <4 x i8> %val1, %val2
594   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
595   ret <4 x double> %sel
597 ; CHECK: fun53
598 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
599 ; CHECK: cost of 9 for instruction:   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
602 define <4 x i8> @fun54(<4 x i16> %val1, <4 x i16> %val2,
603                        <4 x i8> %val3, <4 x i8> %val4) {
604   %cmp = icmp eq <4 x i16> %val1, %val2
605   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
606   ret <4 x i8> %sel
608 ; CHECK: fun54
609 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
610 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
613 define <4 x i16> @fun55(<4 x i16> %val1, <4 x i16> %val2,
614                         <4 x i16> %val3, <4 x i16> %val4) {
615   %cmp = icmp eq <4 x i16> %val1, %val2
616   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
617   ret <4 x i16> %sel
619 ; CHECK: fun55
620 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
621 ; CHECK: cost of 1 for instruction:   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
624 define <4 x i32> @fun56(<4 x i16> %val1, <4 x i16> %val2,
625                         <4 x i32> %val3, <4 x i32> %val4) {
626   %cmp = icmp eq <4 x i16> %val1, %val2
627   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
628   ret <4 x i32> %sel
630 ; CHECK: fun56
631 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
632 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
635 define <4 x i64> @fun57(<4 x i16> %val1, <4 x i16> %val2,
636                         <4 x i64> %val3, <4 x i64> %val4) {
637   %cmp = icmp eq <4 x i16> %val1, %val2
638   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
639   ret <4 x i64> %sel
641 ; CHECK: fun57
642 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
643 ; CHECK: cost of 7 for instruction:   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
646 define <4 x float> @fun58(<4 x i16> %val1, <4 x i16> %val2,
647                           <4 x float> %val3, <4 x float> %val4) {
648   %cmp = icmp eq <4 x i16> %val1, %val2
649   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
650   ret <4 x float> %sel
652 ; CHECK: fun58
653 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
654 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
657 define <4 x double> @fun59(<4 x i16> %val1, <4 x i16> %val2,
658                            <4 x double> %val3, <4 x double> %val4) {
659   %cmp = icmp eq <4 x i16> %val1, %val2
660   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
661   ret <4 x double> %sel
663 ; CHECK: fun59
664 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
665 ; CHECK: cost of 7 for instruction:   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
668 define <4 x i8> @fun60(<4 x i32> %val1, <4 x i32> %val2,
669                        <4 x i8> %val3, <4 x i8> %val4) {
670   %cmp = icmp eq <4 x i32> %val1, %val2
671   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
672   ret <4 x i8> %sel
674 ; CHECK: fun60
675 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
676 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
679 define <4 x i16> @fun61(<4 x i32> %val1, <4 x i32> %val2,
680                         <4 x i16> %val3, <4 x i16> %val4) {
681   %cmp = icmp eq <4 x i32> %val1, %val2
682   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
683   ret <4 x i16> %sel
685 ; CHECK: fun61
686 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
687 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
690 define <4 x i32> @fun62(<4 x i32> %val1, <4 x i32> %val2,
691                         <4 x i32> %val3, <4 x i32> %val4) {
692   %cmp = icmp eq <4 x i32> %val1, %val2
693   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
694   ret <4 x i32> %sel
696 ; CHECK: fun62
697 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
698 ; CHECK: cost of 1 for instruction:   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
701 define <4 x i64> @fun63(<4 x i32> %val1, <4 x i32> %val2,
702                         <4 x i64> %val3, <4 x i64> %val4) {
703   %cmp = icmp eq <4 x i32> %val1, %val2
704   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
705   ret <4 x i64> %sel
707 ; CHECK: fun63
708 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
709 ; CHECK: cost of 5 for instruction:   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
712 define <4 x float> @fun64(<4 x i32> %val1, <4 x i32> %val2,
713                           <4 x float> %val3, <4 x float> %val4) {
714   %cmp = icmp eq <4 x i32> %val1, %val2
715   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
716   ret <4 x float> %sel
718 ; CHECK: fun64
719 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
720 ; CHECK: cost of 1 for instruction:   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
723 define <4 x double> @fun65(<4 x i32> %val1, <4 x i32> %val2,
724                            <4 x double> %val3, <4 x double> %val4) {
725   %cmp = icmp eq <4 x i32> %val1, %val2
726   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
727   ret <4 x double> %sel
729 ; CHECK: fun65
730 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
731 ; CHECK: cost of 5 for instruction:   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
734 define <4 x i8> @fun66(<4 x i64> %val1, <4 x i64> %val2,
735                        <4 x i8> %val3, <4 x i8> %val4) {
736   %cmp = icmp eq <4 x i64> %val1, %val2
737   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
738   ret <4 x i8> %sel
740 ; CHECK: fun66
741 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
742 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
745 define <4 x i16> @fun67(<4 x i64> %val1, <4 x i64> %val2,
746                         <4 x i16> %val3, <4 x i16> %val4) {
747   %cmp = icmp eq <4 x i64> %val1, %val2
748   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
749   ret <4 x i16> %sel
751 ; CHECK: fun67
752 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
753 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
756 define <4 x i32> @fun68(<4 x i64> %val1, <4 x i64> %val2,
757                         <4 x i32> %val3, <4 x i32> %val4) {
758   %cmp = icmp eq <4 x i64> %val1, %val2
759   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
760   ret <4 x i32> %sel
762 ; CHECK: fun68
763 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
764 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
767 define <4 x i64> @fun69(<4 x i64> %val1, <4 x i64> %val2,
768                         <4 x i64> %val3, <4 x i64> %val4) {
769   %cmp = icmp eq <4 x i64> %val1, %val2
770   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
771   ret <4 x i64> %sel
773 ; CHECK: fun69
774 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
775 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
778 define <4 x float> @fun70(<4 x i64> %val1, <4 x i64> %val2,
779                           <4 x float> %val3, <4 x float> %val4) {
780   %cmp = icmp eq <4 x i64> %val1, %val2
781   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
782   ret <4 x float> %sel
784 ; CHECK: fun70
785 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
786 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
789 define <4 x double> @fun71(<4 x i64> %val1, <4 x i64> %val2,
790                            <4 x double> %val3, <4 x double> %val4) {
791   %cmp = icmp eq <4 x i64> %val1, %val2
792   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
793   ret <4 x double> %sel
795 ; CHECK: fun71
796 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
797 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
800 define <8 x i8> @fun72(<8 x i8> %val1, <8 x i8> %val2,
801                        <8 x i8> %val3, <8 x i8> %val4) {
802   %cmp = icmp eq <8 x i8> %val1, %val2
803   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
804   ret <8 x i8> %sel
806 ; CHECK: fun72
807 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
808 ; CHECK: cost of 1 for instruction:   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
811 define <8 x i16> @fun73(<8 x i8> %val1, <8 x i8> %val2,
812                         <8 x i16> %val3, <8 x i16> %val4) {
813   %cmp = icmp eq <8 x i8> %val1, %val2
814   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
815   ret <8 x i16> %sel
817 ; CHECK: fun73
818 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
819 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
822 define <8 x i32> @fun74(<8 x i8> %val1, <8 x i8> %val2,
823                         <8 x i32> %val3, <8 x i32> %val4) {
824   %cmp = icmp eq <8 x i8> %val1, %val2
825   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
826   ret <8 x i32> %sel
828 ; CHECK: fun74
829 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
830 ; CHECK: cost of 7 for instruction:   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
833 define <8 x i64> @fun75(<8 x i8> %val1, <8 x i8> %val2,
834                         <8 x i64> %val3, <8 x i64> %val4) {
835   %cmp = icmp eq <8 x i8> %val1, %val2
836   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
837   ret <8 x i64> %sel
839 ; CHECK: fun75
840 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
841 ; CHECK: cost of 19 for instruction:   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
844 define <8 x float> @fun76(<8 x i8> %val1, <8 x i8> %val2,
845                           <8 x float> %val3, <8 x float> %val4) {
846   %cmp = icmp eq <8 x i8> %val1, %val2
847   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
848   ret <8 x float> %sel
850 ; CHECK: fun76
851 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
852 ; CHECK: cost of 7 for instruction:   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
855 define <8 x double> @fun77(<8 x i8> %val1, <8 x i8> %val2,
856                            <8 x double> %val3, <8 x double> %val4) {
857   %cmp = icmp eq <8 x i8> %val1, %val2
858   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
859   ret <8 x double> %sel
861 ; CHECK: fun77
862 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
863 ; CHECK: cost of 19 for instruction:   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
866 define <8 x i8> @fun78(<8 x i16> %val1, <8 x i16> %val2,
867                        <8 x i8> %val3, <8 x i8> %val4) {
868   %cmp = icmp eq <8 x i16> %val1, %val2
869   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
870   ret <8 x i8> %sel
872 ; CHECK: fun78
873 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
874 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
877 define <8 x i16> @fun79(<8 x i16> %val1, <8 x i16> %val2,
878                         <8 x i16> %val3, <8 x i16> %val4) {
879   %cmp = icmp eq <8 x i16> %val1, %val2
880   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
881   ret <8 x i16> %sel
883 ; CHECK: fun79
884 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
885 ; CHECK: cost of 1 for instruction:   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
888 define <8 x i32> @fun80(<8 x i16> %val1, <8 x i16> %val2,
889                         <8 x i32> %val3, <8 x i32> %val4) {
890   %cmp = icmp eq <8 x i16> %val1, %val2
891   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
892   ret <8 x i32> %sel
894 ; CHECK: fun80
895 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
896 ; CHECK: cost of 5 for instruction:   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
899 define <8 x i64> @fun81(<8 x i16> %val1, <8 x i16> %val2,
900                         <8 x i64> %val3, <8 x i64> %val4) {
901   %cmp = icmp eq <8 x i16> %val1, %val2
902   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
903   ret <8 x i64> %sel
905 ; CHECK: fun81
906 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
907 ; CHECK: cost of 15 for instruction:   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
910 define <8 x float> @fun82(<8 x i16> %val1, <8 x i16> %val2,
911                           <8 x float> %val3, <8 x float> %val4) {
912   %cmp = icmp eq <8 x i16> %val1, %val2
913   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
914   ret <8 x float> %sel
916 ; CHECK: fun82
917 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
918 ; CHECK: cost of 5 for instruction:   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
921 define <8 x double> @fun83(<8 x i16> %val1, <8 x i16> %val2,
922                            <8 x double> %val3, <8 x double> %val4) {
923   %cmp = icmp eq <8 x i16> %val1, %val2
924   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
925   ret <8 x double> %sel
927 ; CHECK: fun83
928 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
929 ; CHECK: cost of 15 for instruction:   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
932 define <8 x i8> @fun84(<8 x i32> %val1, <8 x i32> %val2,
933                        <8 x i8> %val3, <8 x i8> %val4) {
934   %cmp = icmp eq <8 x i32> %val1, %val2
935   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
936   ret <8 x i8> %sel
938 ; CHECK: fun84
939 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
940 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
943 define <8 x i16> @fun85(<8 x i32> %val1, <8 x i32> %val2,
944                         <8 x i16> %val3, <8 x i16> %val4) {
945   %cmp = icmp eq <8 x i32> %val1, %val2
946   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
947   ret <8 x i16> %sel
949 ; CHECK: fun85
950 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
951 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
954 define <8 x i32> @fun86(<8 x i32> %val1, <8 x i32> %val2,
955                         <8 x i32> %val3, <8 x i32> %val4) {
956   %cmp = icmp eq <8 x i32> %val1, %val2
957   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
958   ret <8 x i32> %sel
960 ; CHECK: fun86
961 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
962 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
965 define <8 x i64> @fun87(<8 x i32> %val1, <8 x i32> %val2,
966                         <8 x i64> %val3, <8 x i64> %val4) {
967   %cmp = icmp eq <8 x i32> %val1, %val2
968   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
969   ret <8 x i64> %sel
971 ; CHECK: fun87
972 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
973 ; CHECK: cost of 11 for instruction:   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
976 define <8 x float> @fun88(<8 x i32> %val1, <8 x i32> %val2,
977                           <8 x float> %val3, <8 x float> %val4) {
978   %cmp = icmp eq <8 x i32> %val1, %val2
979   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
980   ret <8 x float> %sel
982 ; CHECK: fun88
983 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
984 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
987 define <8 x double> @fun89(<8 x i32> %val1, <8 x i32> %val2,
988                            <8 x double> %val3, <8 x double> %val4) {
989   %cmp = icmp eq <8 x i32> %val1, %val2
990   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
991   ret <8 x double> %sel
993 ; CHECK: fun89
994 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
995 ; CHECK: cost of 11 for instruction:   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
998 define <8 x i8> @fun90(<8 x i64> %val1, <8 x i64> %val2,
999                        <8 x i8> %val3, <8 x i8> %val4) {
1000   %cmp = icmp eq <8 x i64> %val1, %val2
1001   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
1002   ret <8 x i8> %sel
1004 ; CHECK: fun90
1005 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
1006 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
1009 define <8 x i16> @fun91(<8 x i64> %val1, <8 x i64> %val2,
1010                         <8 x i16> %val3, <8 x i16> %val4) {
1011   %cmp = icmp eq <8 x i64> %val1, %val2
1012   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
1013   ret <8 x i16> %sel
1015 ; CHECK: fun91
1016 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
1017 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
1020 define <8 x i32> @fun92(<8 x i64> %val1, <8 x i64> %val2,
1021                         <8 x i32> %val3, <8 x i32> %val4) {
1022   %cmp = icmp eq <8 x i64> %val1, %val2
1023   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
1024   ret <8 x i32> %sel
1026 ; CHECK: fun92
1027 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
1028 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
1031 define <8 x i64> @fun93(<8 x i64> %val1, <8 x i64> %val2,
1032                         <8 x i64> %val3, <8 x i64> %val4) {
1033   %cmp = icmp eq <8 x i64> %val1, %val2
1034   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
1035   ret <8 x i64> %sel
1037 ; CHECK: fun93
1038 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
1039 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
1042 define <8 x float> @fun94(<8 x i64> %val1, <8 x i64> %val2,
1043                           <8 x float> %val3, <8 x float> %val4) {
1044   %cmp = icmp eq <8 x i64> %val1, %val2
1045   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
1046   ret <8 x float> %sel
1048 ; CHECK: fun94
1049 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
1050 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
1053 define <8 x double> @fun95(<8 x i64> %val1, <8 x i64> %val2,
1054                            <8 x double> %val3, <8 x double> %val4) {
1055   %cmp = icmp eq <8 x i64> %val1, %val2
1056   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
1057   ret <8 x double> %sel
1059 ; CHECK: fun95
1060 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
1061 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
1064 define <16 x i8> @fun96(<16 x i8> %val1, <16 x i8> %val2,
1065                         <16 x i8> %val3, <16 x i8> %val4) {
1066   %cmp = icmp eq <16 x i8> %val1, %val2
1067   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1068   ret <16 x i8> %sel
1070 ; CHECK: fun96
1071 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
1072 ; CHECK: cost of 1 for instruction:   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1075 define <16 x i16> @fun97(<16 x i8> %val1, <16 x i8> %val2,
1076                          <16 x i16> %val3, <16 x i16> %val4) {
1077   %cmp = icmp eq <16 x i8> %val1, %val2
1078   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1079   ret <16 x i16> %sel
1081 ; CHECK: fun97
1082 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
1083 ; CHECK: cost of 5 for instruction:   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1086 define <16 x i32> @fun98(<16 x i8> %val1, <16 x i8> %val2,
1087                          <16 x i32> %val3, <16 x i32> %val4) {
1088   %cmp = icmp eq <16 x i8> %val1, %val2
1089   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1090   ret <16 x i32> %sel
1092 ; CHECK: fun98
1093 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
1094 ; CHECK: cost of 15 for instruction:   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1097 define <16 x i64> @fun99(<16 x i8> %val1, <16 x i8> %val2,
1098                          <16 x i64> %val3, <16 x i64> %val4) {
1099   %cmp = icmp eq <16 x i8> %val1, %val2
1100   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1101   ret <16 x i64> %sel
1103 ; CHECK: fun99
1104 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
1105 ; CHECK: cost of 39 for instruction:   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1108 define <16 x float> @fun100(<16 x i8> %val1, <16 x i8> %val2,
1109                             <16 x float> %val3, <16 x float> %val4) {
1110   %cmp = icmp eq <16 x i8> %val1, %val2
1111   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1112   ret <16 x float> %sel
1114 ; CHECK: fun100
1115 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
1116 ; CHECK: cost of 15 for instruction:   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1119 define <16 x double> @fun101(<16 x i8> %val1, <16 x i8> %val2,
1120                              <16 x double> %val3, <16 x double> %val4) {
1121   %cmp = icmp eq <16 x i8> %val1, %val2
1122   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1123   ret <16 x double> %sel
1125 ; CHECK: fun101
1126 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
1127 ; CHECK: cost of 39 for instruction:   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1130 define <16 x i8> @fun102(<16 x i16> %val1, <16 x i16> %val2,
1131                          <16 x i8> %val3, <16 x i8> %val4) {
1132   %cmp = icmp eq <16 x i16> %val1, %val2
1133   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1134   ret <16 x i8> %sel
1136 ; CHECK: fun102
1137 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
1138 ; CHECK: cost of 2 for instruction:   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1141 define <16 x i16> @fun103(<16 x i16> %val1, <16 x i16> %val2,
1142                           <16 x i16> %val3, <16 x i16> %val4) {
1143   %cmp = icmp eq <16 x i16> %val1, %val2
1144   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1145   ret <16 x i16> %sel
1147 ; CHECK: fun103
1148 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
1149 ; CHECK: cost of 2 for instruction:   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1152 define <16 x i32> @fun104(<16 x i16> %val1, <16 x i16> %val2,
1153                           <16 x i32> %val3, <16 x i32> %val4) {
1154   %cmp = icmp eq <16 x i16> %val1, %val2
1155   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1156   ret <16 x i32> %sel
1158 ; CHECK: fun104
1159 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
1160 ; CHECK: cost of 11 for instruction:   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1163 define <16 x i64> @fun105(<16 x i16> %val1, <16 x i16> %val2,
1164                           <16 x i64> %val3, <16 x i64> %val4) {
1165   %cmp = icmp eq <16 x i16> %val1, %val2
1166   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1167   ret <16 x i64> %sel
1169 ; CHECK: fun105
1170 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
1171 ; CHECK: cost of 31 for instruction:   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1174 define <16 x float> @fun106(<16 x i16> %val1, <16 x i16> %val2,
1175                             <16 x float> %val3, <16 x float> %val4) {
1176   %cmp = icmp eq <16 x i16> %val1, %val2
1177   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1178   ret <16 x float> %sel
1180 ; CHECK: fun106
1181 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
1182 ; CHECK: cost of 11 for instruction:   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1185 define <16 x double> @fun107(<16 x i16> %val1, <16 x i16> %val2,
1186                              <16 x double> %val3, <16 x double> %val4) {
1187   %cmp = icmp eq <16 x i16> %val1, %val2
1188   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1189   ret <16 x double> %sel
1191 ; CHECK: fun107
1192 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
1193 ; CHECK: cost of 31 for instruction:   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1196 define <16 x i8> @fun108(<16 x i32> %val1, <16 x i32> %val2,
1197                          <16 x i8> %val3, <16 x i8> %val4) {
1198   %cmp = icmp eq <16 x i32> %val1, %val2
1199   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1200   ret <16 x i8> %sel
1202 ; CHECK: fun108
1203 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
1204 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1207 define <16 x i16> @fun109(<16 x i32> %val1, <16 x i32> %val2,
1208                           <16 x i16> %val3, <16 x i16> %val4) {
1209   %cmp = icmp eq <16 x i32> %val1, %val2
1210   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1211   ret <16 x i16> %sel
1213 ; CHECK: fun109
1214 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
1215 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1218 define <16 x i32> @fun110(<16 x i32> %val1, <16 x i32> %val2,
1219                           <16 x i32> %val3, <16 x i32> %val4) {
1220   %cmp = icmp eq <16 x i32> %val1, %val2
1221   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1222   ret <16 x i32> %sel
1224 ; CHECK: fun110
1225 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
1226 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1229 define <16 x i64> @fun111(<16 x i32> %val1, <16 x i32> %val2,
1230                           <16 x i64> %val3, <16 x i64> %val4) {
1231   %cmp = icmp eq <16 x i32> %val1, %val2
1232   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1233   ret <16 x i64> %sel
1235 ; CHECK: fun111
1236 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
1237 ; CHECK: cost of 23 for instruction:   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1240 define <16 x float> @fun112(<16 x i32> %val1, <16 x i32> %val2,
1241                             <16 x float> %val3, <16 x float> %val4) {
1242   %cmp = icmp eq <16 x i32> %val1, %val2
1243   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1244   ret <16 x float> %sel
1246 ; CHECK: fun112
1247 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
1248 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1251 define <16 x double> @fun113(<16 x i32> %val1, <16 x i32> %val2,
1252                              <16 x double> %val3, <16 x double> %val4) {
1253   %cmp = icmp eq <16 x i32> %val1, %val2
1254   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1255   ret <16 x double> %sel
1257 ; CHECK: fun113
1258 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
1259 ; CHECK: cost of 23 for instruction:   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1262 define <16 x i8> @fun114(<16 x i64> %val1, <16 x i64> %val2,
1263                          <16 x i8> %val3, <16 x i8> %val4) {
1264   %cmp = icmp eq <16 x i64> %val1, %val2
1265   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1266   ret <16 x i8> %sel
1268 ; CHECK: fun114
1269 ; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
1270 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1273 define <16 x i16> @fun115(<16 x i64> %val1, <16 x i64> %val2,
1274                           <16 x i16> %val3, <16 x i16> %val4) {
1275   %cmp = icmp eq <16 x i64> %val1, %val2
1276   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1277   ret <16 x i16> %sel
1279 ; CHECK: fun115
1280 ; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
1281 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1284 define <16 x i32> @fun116(<16 x i64> %val1, <16 x i64> %val2,
1285                           <16 x i32> %val3, <16 x i32> %val4) {
1286   %cmp = icmp eq <16 x i64> %val1, %val2
1287   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1288   ret <16 x i32> %sel
1290 ; CHECK: fun116
1291 ; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
1292 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1295 define <16 x i64> @fun117(<16 x i64> %val1, <16 x i64> %val2,
1296                           <16 x i64> %val3, <16 x i64> %val4) {
1297   %cmp = icmp eq <16 x i64> %val1, %val2
1298   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1299   ret <16 x i64> %sel
1301 ; CHECK: fun117
1302 ; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
1303 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1306 define <16 x float> @fun118(<16 x i64> %val1, <16 x i64> %val2,
1307                             <16 x float> %val3, <16 x float> %val4) {
1308   %cmp = icmp eq <16 x i64> %val1, %val2
1309   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1310   ret <16 x float> %sel
1312 ; CHECK: fun118
1313 ; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
1314 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1317 define <16 x double> @fun119(<16 x i64> %val1, <16 x i64> %val2,
1318                              <16 x double> %val3, <16 x double> %val4) {
1319   %cmp = icmp eq <16 x i64> %val1, %val2
1320   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1321   ret <16 x double> %sel
1323 ; CHECK: fun119
1324 ; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
1325 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1328 define i8 @fun120(float %val1, float %val2,
1329                   i8 %val3, i8 %val4) {
1330   %cmp = fcmp ogt float %val1, %val2
1331   %sel = select i1 %cmp, i8 %val3, i8 %val4
1332   ret i8 %sel
1334 ; CHECK: fun120
1335 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
1336 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i8 %val3, i8 %val4
1339 define i16 @fun121(float %val1, float %val2,
1340                    i16 %val3, i16 %val4) {
1341   %cmp = fcmp ogt float %val1, %val2
1342   %sel = select i1 %cmp, i16 %val3, i16 %val4
1343   ret i16 %sel
1345 ; CHECK: fun121
1346 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
1347 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i16 %val3, i16 %val4
1350 define i32 @fun122(float %val1, float %val2,
1351                    i32 %val3, i32 %val4) {
1352   %cmp = fcmp ogt float %val1, %val2
1353   %sel = select i1 %cmp, i32 %val3, i32 %val4
1354   ret i32 %sel
1356 ; CHECK: fun122
1357 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
1358 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i32 %val3, i32 %val4
1361 define i64 @fun123(float %val1, float %val2,
1362                    i64 %val3, i64 %val4) {
1363   %cmp = fcmp ogt float %val1, %val2
1364   %sel = select i1 %cmp, i64 %val3, i64 %val4
1365   ret i64 %sel
1367 ; CHECK: fun123
1368 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
1369 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i64 %val3, i64 %val4
1372 define float @fun124(float %val1, float %val2,
1373                      float %val3, float %val4) {
1374   %cmp = fcmp ogt float %val1, %val2
1375   %sel = select i1 %cmp, float %val3, float %val4
1376   ret float %sel
1378 ; CHECK: fun124
1379 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
1380 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, float %val3, float %val4
1383 define double @fun125(float %val1, float %val2,
1384                       double %val3, double %val4) {
1385   %cmp = fcmp ogt float %val1, %val2
1386   %sel = select i1 %cmp, double %val3, double %val4
1387   ret double %sel
1389 ; CHECK: fun125
1390 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
1391 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, double %val3, double %val4
1394 define i8 @fun126(double %val1, double %val2,
1395                   i8 %val3, i8 %val4) {
1396   %cmp = fcmp ogt double %val1, %val2
1397   %sel = select i1 %cmp, i8 %val3, i8 %val4
1398   ret i8 %sel
1400 ; CHECK: fun126
1401 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
1402 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i8 %val3, i8 %val4
1405 define i16 @fun127(double %val1, double %val2,
1406                    i16 %val3, i16 %val4) {
1407   %cmp = fcmp ogt double %val1, %val2
1408   %sel = select i1 %cmp, i16 %val3, i16 %val4
1409   ret i16 %sel
1411 ; CHECK: fun127
1412 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
1413 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i16 %val3, i16 %val4
1416 define i32 @fun128(double %val1, double %val2,
1417                    i32 %val3, i32 %val4) {
1418   %cmp = fcmp ogt double %val1, %val2
1419   %sel = select i1 %cmp, i32 %val3, i32 %val4
1420   ret i32 %sel
1422 ; CHECK: fun128
1423 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
1424 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i32 %val3, i32 %val4
1427 define i64 @fun129(double %val1, double %val2,
1428                    i64 %val3, i64 %val4) {
1429   %cmp = fcmp ogt double %val1, %val2
1430   %sel = select i1 %cmp, i64 %val3, i64 %val4
1431   ret i64 %sel
1433 ; CHECK: fun129
1434 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
1435 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i64 %val3, i64 %val4
1438 define float @fun130(double %val1, double %val2,
1439                      float %val3, float %val4) {
1440   %cmp = fcmp ogt double %val1, %val2
1441   %sel = select i1 %cmp, float %val3, float %val4
1442   ret float %sel
1444 ; CHECK: fun130
1445 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
1446 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, float %val3, float %val4
1449 define double @fun131(double %val1, double %val2,
1450                       double %val3, double %val4) {
1451   %cmp = fcmp ogt double %val1, %val2
1452   %sel = select i1 %cmp, double %val3, double %val4
1453   ret double %sel
1455 ; CHECK: fun131
1456 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
1457 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, double %val3, double %val4
1460 define <2 x i8> @fun132(<2 x float> %val1, <2 x float> %val2,
1461                         <2 x i8> %val3, <2 x i8> %val4) {
1462   %cmp = fcmp ogt <2 x float> %val1, %val2
1463   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
1464   ret <2 x i8> %sel
1466 ; CHECK: fun132
1467 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
1468 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
1471 define <2 x i16> @fun133(<2 x float> %val1, <2 x float> %val2,
1472                          <2 x i16> %val3, <2 x i16> %val4) {
1473   %cmp = fcmp ogt <2 x float> %val1, %val2
1474   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
1475   ret <2 x i16> %sel
1477 ; CHECK: fun133
1478 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
1479 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
1482 define <2 x i32> @fun134(<2 x float> %val1, <2 x float> %val2,
1483                          <2 x i32> %val3, <2 x i32> %val4) {
1484   %cmp = fcmp ogt <2 x float> %val1, %val2
1485   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
1486   ret <2 x i32> %sel
1488 ; CHECK: fun134
1489 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
1490 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
1493 define <2 x i64> @fun135(<2 x float> %val1, <2 x float> %val2,
1494                          <2 x i64> %val3, <2 x i64> %val4) {
1495   %cmp = fcmp ogt <2 x float> %val1, %val2
1496   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
1497   ret <2 x i64> %sel
1499 ; CHECK: fun135
1500 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
1501 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
1504 define <2 x float> @fun136(<2 x float> %val1, <2 x float> %val2,
1505                            <2 x float> %val3, <2 x float> %val4) {
1506   %cmp = fcmp ogt <2 x float> %val1, %val2
1507   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
1508   ret <2 x float> %sel
1510 ; CHECK: fun136
1511 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
1512 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
1515 define <2 x double> @fun137(<2 x float> %val1, <2 x float> %val2,
1516                             <2 x double> %val3, <2 x double> %val4) {
1517   %cmp = fcmp ogt <2 x float> %val1, %val2
1518   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
1519   ret <2 x double> %sel
1521 ; CHECK: fun137
1522 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
1523 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
1526 define <2 x i8> @fun138(<2 x double> %val1, <2 x double> %val2,
1527                         <2 x i8> %val3, <2 x i8> %val4) {
1528   %cmp = fcmp ogt <2 x double> %val1, %val2
1529   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
1530   ret <2 x i8> %sel
1532 ; CHECK: fun138
1533 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
1534 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
1537 define <2 x i16> @fun139(<2 x double> %val1, <2 x double> %val2,
1538                          <2 x i16> %val3, <2 x i16> %val4) {
1539   %cmp = fcmp ogt <2 x double> %val1, %val2
1540   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
1541   ret <2 x i16> %sel
1543 ; CHECK: fun139
1544 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
1545 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
1548 define <2 x i32> @fun140(<2 x double> %val1, <2 x double> %val2,
1549                          <2 x i32> %val3, <2 x i32> %val4) {
1550   %cmp = fcmp ogt <2 x double> %val1, %val2
1551   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
1552   ret <2 x i32> %sel
1554 ; CHECK: fun140
1555 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
1556 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
1559 define <2 x i64> @fun141(<2 x double> %val1, <2 x double> %val2,
1560                          <2 x i64> %val3, <2 x i64> %val4) {
1561   %cmp = fcmp ogt <2 x double> %val1, %val2
1562   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
1563   ret <2 x i64> %sel
1565 ; CHECK: fun141
1566 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
1567 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
1570 define <2 x float> @fun142(<2 x double> %val1, <2 x double> %val2,
1571                            <2 x float> %val3, <2 x float> %val4) {
1572   %cmp = fcmp ogt <2 x double> %val1, %val2
1573   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
1574   ret <2 x float> %sel
1576 ; CHECK: fun142
1577 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
1578 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
1581 define <2 x double> @fun143(<2 x double> %val1, <2 x double> %val2,
1582                             <2 x double> %val3, <2 x double> %val4) {
1583   %cmp = fcmp ogt <2 x double> %val1, %val2
1584   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
1585   ret <2 x double> %sel
1587 ; CHECK: fun143
1588 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
1589 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
1592 define <4 x i8> @fun144(<4 x float> %val1, <4 x float> %val2,
1593                         <4 x i8> %val3, <4 x i8> %val4) {
1594   %cmp = fcmp ogt <4 x float> %val1, %val2
1595   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
1596   ret <4 x i8> %sel
1598 ; CHECK: fun144
1599 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
1600 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
1603 define <4 x i16> @fun145(<4 x float> %val1, <4 x float> %val2,
1604                          <4 x i16> %val3, <4 x i16> %val4) {
1605   %cmp = fcmp ogt <4 x float> %val1, %val2
1606   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
1607   ret <4 x i16> %sel
1609 ; CHECK: fun145
1610 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
1611 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
1614 define <4 x i32> @fun146(<4 x float> %val1, <4 x float> %val2,
1615                          <4 x i32> %val3, <4 x i32> %val4) {
1616   %cmp = fcmp ogt <4 x float> %val1, %val2
1617   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
1618   ret <4 x i32> %sel
1620 ; CHECK: fun146
1621 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
1622 ; CHECK: cost of 1 for instruction:   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
1625 define <4 x i64> @fun147(<4 x float> %val1, <4 x float> %val2,
1626                          <4 x i64> %val3, <4 x i64> %val4) {
1627   %cmp = fcmp ogt <4 x float> %val1, %val2
1628   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
1629   ret <4 x i64> %sel
1631 ; CHECK: fun147
1632 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
1633 ; CHECK: cost of 5 for instruction:   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
1636 define <4 x float> @fun148(<4 x float> %val1, <4 x float> %val2,
1637                            <4 x float> %val3, <4 x float> %val4) {
1638   %cmp = fcmp ogt <4 x float> %val1, %val2
1639   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
1640   ret <4 x float> %sel
1642 ; CHECK: fun148
1643 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
1644 ; CHECK: cost of 1 for instruction:   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
1647 define <4 x double> @fun149(<4 x float> %val1, <4 x float> %val2,
1648                             <4 x double> %val3, <4 x double> %val4) {
1649   %cmp = fcmp ogt <4 x float> %val1, %val2
1650   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
1651   ret <4 x double> %sel
1653 ; CHECK: fun149
1654 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
1655 ; CHECK: cost of 5 for instruction:   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
1658 define <4 x i8> @fun150(<4 x double> %val1, <4 x double> %val2,
1659                         <4 x i8> %val3, <4 x i8> %val4) {
1660   %cmp = fcmp ogt <4 x double> %val1, %val2
1661   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
1662   ret <4 x i8> %sel
1664 ; CHECK: fun150
1665 ; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
1666 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
1669 define <4 x i16> @fun151(<4 x double> %val1, <4 x double> %val2,
1670                          <4 x i16> %val3, <4 x i16> %val4) {
1671   %cmp = fcmp ogt <4 x double> %val1, %val2
1672   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
1673   ret <4 x i16> %sel
1675 ; CHECK: fun151
1676 ; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
1677 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
1680 define <4 x i32> @fun152(<4 x double> %val1, <4 x double> %val2,
1681                          <4 x i32> %val3, <4 x i32> %val4) {
1682   %cmp = fcmp ogt <4 x double> %val1, %val2
1683   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
1684   ret <4 x i32> %sel
1686 ; CHECK: fun152
1687 ; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
1688 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
1691 define <4 x i64> @fun153(<4 x double> %val1, <4 x double> %val2,
1692                          <4 x i64> %val3, <4 x i64> %val4) {
1693   %cmp = fcmp ogt <4 x double> %val1, %val2
1694   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
1695   ret <4 x i64> %sel
1697 ; CHECK: fun153
1698 ; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
1699 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
1702 define <4 x float> @fun154(<4 x double> %val1, <4 x double> %val2,
1703                            <4 x float> %val3, <4 x float> %val4) {
1704   %cmp = fcmp ogt <4 x double> %val1, %val2
1705   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
1706   ret <4 x float> %sel
1708 ; CHECK: fun154
1709 ; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
1710 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
1713 define <4 x double> @fun155(<4 x double> %val1, <4 x double> %val2,
1714                             <4 x double> %val3, <4 x double> %val4) {
1715   %cmp = fcmp ogt <4 x double> %val1, %val2
1716   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
1717   ret <4 x double> %sel
1719 ; CHECK: fun155
1720 ; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
1721 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
1724 define <8 x i8> @fun156(<8 x float> %val1, <8 x float> %val2,
1725                         <8 x i8> %val3, <8 x i8> %val4) {
1726   %cmp = fcmp ogt <8 x float> %val1, %val2
1727   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
1728   ret <8 x i8> %sel
1730 ; CHECK: fun156
1731 ; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
1732 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
1735 define <8 x i16> @fun157(<8 x float> %val1, <8 x float> %val2,
1736                          <8 x i16> %val3, <8 x i16> %val4) {
1737   %cmp = fcmp ogt <8 x float> %val1, %val2
1738   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
1739   ret <8 x i16> %sel
1741 ; CHECK: fun157
1742 ; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
1743 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
1746 define <8 x i32> @fun158(<8 x float> %val1, <8 x float> %val2,
1747                          <8 x i32> %val3, <8 x i32> %val4) {
1748   %cmp = fcmp ogt <8 x float> %val1, %val2
1749   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
1750   ret <8 x i32> %sel
1752 ; CHECK: fun158
1753 ; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
1754 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
1757 define <8 x i64> @fun159(<8 x float> %val1, <8 x float> %val2,
1758                          <8 x i64> %val3, <8 x i64> %val4) {
1759   %cmp = fcmp ogt <8 x float> %val1, %val2
1760   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
1761   ret <8 x i64> %sel
1763 ; CHECK: fun159
1764 ; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
1765 ; CHECK: cost of 11 for instruction:   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
1768 define <8 x float> @fun160(<8 x float> %val1, <8 x float> %val2,
1769                            <8 x float> %val3, <8 x float> %val4) {
1770   %cmp = fcmp ogt <8 x float> %val1, %val2
1771   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
1772   ret <8 x float> %sel
1774 ; CHECK: fun160
1775 ; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
1776 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
1779 define <8 x double> @fun161(<8 x float> %val1, <8 x float> %val2,
1780                             <8 x double> %val3, <8 x double> %val4) {
1781   %cmp = fcmp ogt <8 x float> %val1, %val2
1782   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
1783   ret <8 x double> %sel
1785 ; CHECK: fun161
1786 ; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
1787 ; CHECK: cost of 11 for instruction:   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
1790 define <8 x i8> @fun162(<8 x double> %val1, <8 x double> %val2,
1791                         <8 x i8> %val3, <8 x i8> %val4) {
1792   %cmp = fcmp ogt <8 x double> %val1, %val2
1793   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
1794   ret <8 x i8> %sel
1796 ; CHECK: fun162
1797 ; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
1798 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
1801 define <8 x i16> @fun163(<8 x double> %val1, <8 x double> %val2,
1802                          <8 x i16> %val3, <8 x i16> %val4) {
1803   %cmp = fcmp ogt <8 x double> %val1, %val2
1804   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
1805   ret <8 x i16> %sel
1807 ; CHECK: fun163
1808 ; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
1809 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
1812 define <8 x i32> @fun164(<8 x double> %val1, <8 x double> %val2,
1813                          <8 x i32> %val3, <8 x i32> %val4) {
1814   %cmp = fcmp ogt <8 x double> %val1, %val2
1815   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
1816   ret <8 x i32> %sel
1818 ; CHECK: fun164
1819 ; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
1820 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
1823 define <8 x i64> @fun165(<8 x double> %val1, <8 x double> %val2,
1824                          <8 x i64> %val3, <8 x i64> %val4) {
1825   %cmp = fcmp ogt <8 x double> %val1, %val2
1826   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
1827   ret <8 x i64> %sel
1829 ; CHECK: fun165
1830 ; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
1831 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
1834 define <8 x float> @fun166(<8 x double> %val1, <8 x double> %val2,
1835                            <8 x float> %val3, <8 x float> %val4) {
1836   %cmp = fcmp ogt <8 x double> %val1, %val2
1837   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
1838   ret <8 x float> %sel
1840 ; CHECK: fun166
1841 ; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
1842 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
1845 define <8 x double> @fun167(<8 x double> %val1, <8 x double> %val2,
1846                             <8 x double> %val3, <8 x double> %val4) {
1847   %cmp = fcmp ogt <8 x double> %val1, %val2
1848   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
1849   ret <8 x double> %sel
1851 ; CHECK: fun167
1852 ; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
1853 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
1856 define <16 x i8> @fun168(<16 x float> %val1, <16 x float> %val2,
1857                          <16 x i8> %val3, <16 x i8> %val4) {
1858   %cmp = fcmp ogt <16 x float> %val1, %val2
1859   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1860   ret <16 x i8> %sel
1862 ; CHECK: fun168
1863 ; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
1864 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1867 define <16 x i16> @fun169(<16 x float> %val1, <16 x float> %val2,
1868                           <16 x i16> %val3, <16 x i16> %val4) {
1869   %cmp = fcmp ogt <16 x float> %val1, %val2
1870   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1871   ret <16 x i16> %sel
1873 ; CHECK: fun169
1874 ; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
1875 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1878 define <16 x i32> @fun170(<16 x float> %val1, <16 x float> %val2,
1879                           <16 x i32> %val3, <16 x i32> %val4) {
1880   %cmp = fcmp ogt <16 x float> %val1, %val2
1881   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1882   ret <16 x i32> %sel
1884 ; CHECK: fun170
1885 ; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
1886 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1889 define <16 x i64> @fun171(<16 x float> %val1, <16 x float> %val2,
1890                           <16 x i64> %val3, <16 x i64> %val4) {
1891   %cmp = fcmp ogt <16 x float> %val1, %val2
1892   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1893   ret <16 x i64> %sel
1895 ; CHECK: fun171
1896 ; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
1897 ; CHECK: cost of 23 for instruction:   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1900 define <16 x float> @fun172(<16 x float> %val1, <16 x float> %val2,
1901                             <16 x float> %val3, <16 x float> %val4) {
1902   %cmp = fcmp ogt <16 x float> %val1, %val2
1903   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1904   ret <16 x float> %sel
1906 ; CHECK: fun172
1907 ; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
1908 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1911 define <16 x double> @fun173(<16 x float> %val1, <16 x float> %val2,
1912                              <16 x double> %val3, <16 x double> %val4) {
1913   %cmp = fcmp ogt <16 x float> %val1, %val2
1914   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1915   ret <16 x double> %sel
1917 ; CHECK: fun173
1918 ; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
1919 ; CHECK: cost of 23 for instruction:   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1922 define <16 x i8> @fun174(<16 x double> %val1, <16 x double> %val2,
1923                          <16 x i8> %val3, <16 x i8> %val4) {
1924   %cmp = fcmp ogt <16 x double> %val1, %val2
1925   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1926   ret <16 x i8> %sel
1928 ; CHECK: fun174
1929 ; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
1930 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1933 define <16 x i16> @fun175(<16 x double> %val1, <16 x double> %val2,
1934                           <16 x i16> %val3, <16 x i16> %val4) {
1935   %cmp = fcmp ogt <16 x double> %val1, %val2
1936   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1937   ret <16 x i16> %sel
1939 ; CHECK: fun175
1940 ; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
1941 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1944 define <16 x i32> @fun176(<16 x double> %val1, <16 x double> %val2,
1945                           <16 x i32> %val3, <16 x i32> %val4) {
1946   %cmp = fcmp ogt <16 x double> %val1, %val2
1947   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1948   ret <16 x i32> %sel
1950 ; CHECK: fun176
1951 ; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
1952 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1955 define <16 x i64> @fun177(<16 x double> %val1, <16 x double> %val2,
1956                           <16 x i64> %val3, <16 x i64> %val4) {
1957   %cmp = fcmp ogt <16 x double> %val1, %val2
1958   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1959   ret <16 x i64> %sel
1961 ; CHECK: fun177
1962 ; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
1963 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1966 define <16 x float> @fun178(<16 x double> %val1, <16 x double> %val2,
1967                             <16 x float> %val3, <16 x float> %val4) {
1968   %cmp = fcmp ogt <16 x double> %val1, %val2
1969   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1970   ret <16 x float> %sel
1972 ; CHECK: fun178
1973 ; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
1974 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1977 define <16 x double> @fun179(<16 x double> %val1, <16 x double> %val2,
1978                              <16 x double> %val3, <16 x double> %val4) {
1979   %cmp = fcmp ogt <16 x double> %val1, %val2
1980   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1981   ret <16 x double> %sel
1983 ; CHECK: fun179
1984 ; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
1985 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4