1; RUN: opt < %s -cost-model -analyze -mtriple=systemz-unknown -mcpu=z13 | FileCheck %s
2;
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).
7
8define 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
13
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
17}
18
19define 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
24
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
28}
29
30define 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
35
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
39}
40
41define 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
46
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
50}
51
52define 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
57
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
61}
62
63define 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
68
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
72}
73
74define 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
79
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
83}
84
85define 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
90
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
94}
95
96define 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
101
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
105}
106
107define 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
112
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
116}
117
118define 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
123
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
127}
128
129define 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
134
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
138}
139
140define 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
145
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
149}
150
151define 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
156
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
160}
161
162define 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
167
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
171}
172
173define 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
178
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
182}
183
184define 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
189
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
193}
194
195define 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
200
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
204}
205
206define 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
211
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
215}
216
217define 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
222
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
226}
227
228define 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
233
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
237}
238
239define 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
244
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
248}
249
250define 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
255
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
259}
260
261define 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
266
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
270}
271
272define <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
277
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
281}
282
283define <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
288
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
292}
293
294define <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
299
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
303}
304
305define <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
310
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
314}
315
316define <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
321
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
325}
326
327define <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
332
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
336}
337
338define <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
343
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
347}
348
349define <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
354
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
358}
359
360define <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
365
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
369}
370
371define <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
376
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
380}
381
382define <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
387
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
391}
392
393define <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
398
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
402}
403
404define <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
409
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
413}
414
415define <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
420
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
424}
425
426define <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
431
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
435}
436
437define <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
442
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
446}
447
448define <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
453
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
457}
458
459define <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
464
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
468}
469
470define <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
475
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
479}
480
481define <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
486
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
490}
491
492define <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
497
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
501}
502
503define <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
508
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
512}
513
514define <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
519
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
523}
524
525define <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
530
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
534}
535
536define <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
541
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
545}
546
547define <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
552
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
556}
557
558define <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
563
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
567}
568
569define <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
574
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
578}
579
580define <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
585
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
589}
590
591define <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
596
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
600}
601
602define <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
607
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
611}
612
613define <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
618
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
622}
623
624define <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
629
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
633}
634
635define <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
640
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
644}
645
646define <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
651
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
655}
656
657define <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
662
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
666}
667
668define <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
673
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
677}
678
679define <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
684
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
688}
689
690define <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
695
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
699}
700
701define <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
706
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
710}
711
712define <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
717
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
721}
722
723define <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
728
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
732}
733
734define <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
739
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
743}
744
745define <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
750
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
754}
755
756define <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
761
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
765}
766
767define <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
772
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
776}
777
778define <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
783
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
787}
788
789define <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
794
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
798}
799
800define <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
805
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
809}
810
811define <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
816
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
820}
821
822define <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
827
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
831}
832
833define <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
838
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
842}
843
844define <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
849
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
853}
854
855define <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
860
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
864}
865
866define <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
871
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
875}
876
877define <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
882
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
886}
887
888define <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
893
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
897}
898
899define <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
904
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
908}
909
910define <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
915
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
919}
920
921define <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
926
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
930}
931
932define <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
937
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
941}
942
943define <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
948
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
952}
953
954define <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
959
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
963}
964
965define <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
970
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
974}
975
976define <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
981
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
985}
986
987define <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
992
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
996}
997
998define <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
1003
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
1007}
1008
1009define <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
1014
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
1018}
1019
1020define <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
1025
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
1029}
1030
1031define <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
1036
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
1040}
1041
1042define <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
1047
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
1051}
1052
1053define <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
1058
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
1062}
1063
1064define <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
1069
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
1073}
1074
1075define <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
1080
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
1084}
1085
1086define <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
1091
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
1095}
1096
1097define <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
1102
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
1106}
1107
1108define <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
1113
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
1117}
1118
1119define <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
1124
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
1128}
1129
1130define <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
1135
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
1139}
1140
1141define <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
1146
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
1150}
1151
1152define <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
1157
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
1161}
1162
1163define <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
1168
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
1172}
1173
1174define <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
1179
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
1183}
1184
1185define <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
1190
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
1194}
1195
1196define <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
1201
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
1205}
1206
1207define <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
1212
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
1216}
1217
1218define <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
1223
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
1227}
1228
1229define <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
1234
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
1238}
1239
1240define <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
1245
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
1249}
1250
1251define <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
1256
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
1260}
1261
1262define <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
1267
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
1271}
1272
1273define <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
1278
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
1282}
1283
1284define <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
1289
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
1293}
1294
1295define <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
1300
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
1304}
1305
1306define <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
1311
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
1315}
1316
1317define <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
1322
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
1326}
1327
1328define 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
1333
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
1337}
1338
1339define 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
1344
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
1348}
1349
1350define 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
1355
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
1359}
1360
1361define 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
1366
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
1370}
1371
1372define 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
1377
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
1381}
1382
1383define 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
1388
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
1392}
1393
1394define 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
1399
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
1403}
1404
1405define 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
1410
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
1414}
1415
1416define 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
1421
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
1425}
1426
1427define 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
1432
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
1436}
1437
1438define 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
1443
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
1447}
1448
1449define 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
1454
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
1458}
1459
1460define <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
1465
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
1469}
1470
1471define <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
1476
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
1480}
1481
1482define <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
1487
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
1491}
1492
1493define <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
1498
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
1502}
1503
1504define <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
1509
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
1513}
1514
1515define <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
1520
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
1524}
1525
1526define <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
1531
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
1535}
1536
1537define <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
1542
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
1546}
1547
1548define <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
1553
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
1557}
1558
1559define <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
1564
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
1568}
1569
1570define <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
1575
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
1579}
1580
1581define <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
1586
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
1590}
1591
1592define <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
1597
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
1601}
1602
1603define <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
1608
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
1612}
1613
1614define <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
1619
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
1623}
1624
1625define <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
1630
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
1634}
1635
1636define <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
1641
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
1645}
1646
1647define <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
1652
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
1656}
1657
1658define <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
1663
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
1667}
1668
1669define <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
1674
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
1678}
1679
1680define <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
1685
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
1689}
1690
1691define <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
1696
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
1700}
1701
1702define <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
1707
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
1711}
1712
1713define <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
1718
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
1722}
1723
1724define <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
1729
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
1733}
1734
1735define <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
1740
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
1744}
1745
1746define <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
1751
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
1755}
1756
1757define <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
1762
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
1766}
1767
1768define <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
1773
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
1777}
1778
1779define <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
1784
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
1788}
1789
1790define <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
1795
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
1799}
1800
1801define <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
1806
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
1810}
1811
1812define <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
1817
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
1821}
1822
1823define <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
1828
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
1832}
1833
1834define <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
1839
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
1843}
1844
1845define <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
1850
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
1854}
1855
1856define <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
1861
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
1865}
1866
1867define <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
1872
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
1876}
1877
1878define <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
1883
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
1887}
1888
1889define <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
1894
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
1898}
1899
1900define <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
1905
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
1909}
1910
1911define <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
1916
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
1920}
1921
1922define <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
1927
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
1931}
1932
1933define <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
1938
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
1942}
1943
1944define <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
1949
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
1953}
1954
1955define <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
1960
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
1964}
1965
1966define <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
1971
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
1975}
1976
1977define <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
1982
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
1986}
1987
1988