• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt < %s -cost-model -analyze -mtriple=systemz-unknown -mcpu=z13 | FileCheck %s
2;
3
4define i8 @fun0(i8 %val1, i8 %val2) {
5  %cmp = icmp eq i8 %val1, %val2
6  %v = sext i1 %cmp to i8
7  ret i8 %v
8
9; CHECK: fun0
10; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
11; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i8
12}
13
14define i16 @fun1(i8 %val1, i8 %val2) {
15  %cmp = icmp eq i8 %val1, %val2
16  %v = sext i1 %cmp to i16
17  ret i16 %v
18
19; CHECK: fun1
20; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
21; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i16
22}
23
24define i32 @fun2(i8 %val1, i8 %val2) {
25  %cmp = icmp eq i8 %val1, %val2
26  %v = sext i1 %cmp to i32
27  ret i32 %v
28
29; CHECK: fun2
30; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
31; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i32
32}
33
34define i64 @fun3(i8 %val1, i8 %val2) {
35  %cmp = icmp eq i8 %val1, %val2
36  %v = sext i1 %cmp to i64
37  ret i64 %v
38
39; CHECK: fun3
40; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
41; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i64
42}
43
44define i8 @fun4(i16 %val1, i16 %val2) {
45  %cmp = icmp eq i16 %val1, %val2
46  %v = sext i1 %cmp to i8
47  ret i8 %v
48
49; CHECK: fun4
50; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
51; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i8
52}
53
54define i16 @fun5(i16 %val1, i16 %val2) {
55  %cmp = icmp eq i16 %val1, %val2
56  %v = sext i1 %cmp to i16
57  ret i16 %v
58
59; CHECK: fun5
60; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
61; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i16
62}
63
64define i32 @fun6(i16 %val1, i16 %val2) {
65  %cmp = icmp eq i16 %val1, %val2
66  %v = sext i1 %cmp to i32
67  ret i32 %v
68
69; CHECK: fun6
70; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
71; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i32
72}
73
74define i64 @fun7(i16 %val1, i16 %val2) {
75  %cmp = icmp eq i16 %val1, %val2
76  %v = sext i1 %cmp to i64
77  ret i64 %v
78
79; CHECK: fun7
80; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
81; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i64
82}
83
84define i8 @fun8(i32 %val1, i32 %val2) {
85  %cmp = icmp eq i32 %val1, %val2
86  %v = sext i1 %cmp to i8
87  ret i8 %v
88
89; CHECK: fun8
90; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
91; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i8
92}
93
94define i16 @fun9(i32 %val1, i32 %val2) {
95  %cmp = icmp eq i32 %val1, %val2
96  %v = sext i1 %cmp to i16
97  ret i16 %v
98
99; CHECK: fun9
100; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
101; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i16
102}
103
104define i32 @fun10(i32 %val1, i32 %val2) {
105  %cmp = icmp eq i32 %val1, %val2
106  %v = sext i1 %cmp to i32
107  ret i32 %v
108
109; CHECK: fun10
110; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
111; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i32
112}
113
114define i64 @fun11(i32 %val1, i32 %val2) {
115  %cmp = icmp eq i32 %val1, %val2
116  %v = sext i1 %cmp to i64
117  ret i64 %v
118
119; CHECK: fun11
120; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
121; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i64
122}
123
124define i8 @fun12(i64 %val1, i64 %val2) {
125  %cmp = icmp eq i64 %val1, %val2
126  %v = sext i1 %cmp to i8
127  ret i8 %v
128
129; CHECK: fun12
130; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
131; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i8
132}
133
134define i16 @fun13(i64 %val1, i64 %val2) {
135  %cmp = icmp eq i64 %val1, %val2
136  %v = sext i1 %cmp to i16
137  ret i16 %v
138
139; CHECK: fun13
140; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
141; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i16
142}
143
144define i32 @fun14(i64 %val1, i64 %val2) {
145  %cmp = icmp eq i64 %val1, %val2
146  %v = sext i1 %cmp to i32
147  ret i32 %v
148
149; CHECK: fun14
150; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
151; CHECK: cost of 3 for instruction:   %v = sext i1 %cmp to i32
152}
153
154define i64 @fun15(i64 %val1, i64 %val2) {
155  %cmp = icmp eq i64 %val1, %val2
156  %v = sext i1 %cmp to i64
157  ret i64 %v
158
159; CHECK: fun15
160; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
161; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i64
162}
163
164define i8 @fun16(float %val1, float %val2) {
165  %cmp = fcmp ogt float %val1, %val2
166  %v = sext i1 %cmp to i8
167  ret i8 %v
168
169; CHECK: fun16
170; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
171; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i8
172}
173
174define i16 @fun17(float %val1, float %val2) {
175  %cmp = fcmp ogt float %val1, %val2
176  %v = sext i1 %cmp to i16
177  ret i16 %v
178
179; CHECK: fun17
180; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
181; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i16
182}
183
184define i32 @fun18(float %val1, float %val2) {
185  %cmp = fcmp ogt float %val1, %val2
186  %v = sext i1 %cmp to i32
187  ret i32 %v
188
189; CHECK: fun18
190; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
191; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i32
192}
193
194define i64 @fun19(float %val1, float %val2) {
195  %cmp = fcmp ogt float %val1, %val2
196  %v = sext i1 %cmp to i64
197  ret i64 %v
198
199; CHECK: fun19
200; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
201; CHECK: cost of 5 for instruction:   %v = sext i1 %cmp to i64
202}
203
204define i8 @fun20(double %val1, double %val2) {
205  %cmp = fcmp ogt double %val1, %val2
206  %v = sext i1 %cmp to i8
207  ret i8 %v
208
209; CHECK: fun20
210; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
211; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i8
212}
213
214define i16 @fun21(double %val1, double %val2) {
215  %cmp = fcmp ogt double %val1, %val2
216  %v = sext i1 %cmp to i16
217  ret i16 %v
218
219; CHECK: fun21
220; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
221; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i16
222}
223
224define i32 @fun22(double %val1, double %val2) {
225  %cmp = fcmp ogt double %val1, %val2
226  %v = sext i1 %cmp to i32
227  ret i32 %v
228
229; CHECK: fun22
230; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
231; CHECK: cost of 4 for instruction:   %v = sext i1 %cmp to i32
232}
233
234define i64 @fun23(double %val1, double %val2) {
235  %cmp = fcmp ogt double %val1, %val2
236  %v = sext i1 %cmp to i64
237  ret i64 %v
238
239; CHECK: fun23
240; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
241; CHECK: cost of 5 for instruction:   %v = sext i1 %cmp to i64
242}
243
244define <2 x i8> @fun24(<2 x i8> %val1, <2 x i8> %val2) {
245  %cmp = icmp eq <2 x i8> %val1, %val2
246  %v = sext <2 x i1> %cmp to <2 x i8>
247  ret <2 x i8> %v
248
249; CHECK: fun24
250; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
251; CHECK: cost of 0 for instruction:   %v = sext <2 x i1> %cmp to <2 x i8>
252}
253
254define <2 x i16> @fun25(<2 x i8> %val1, <2 x i8> %val2) {
255  %cmp = icmp eq <2 x i8> %val1, %val2
256  %v = sext <2 x i1> %cmp to <2 x i16>
257  ret <2 x i16> %v
258
259; CHECK: fun25
260; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
261; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i16>
262}
263
264define <2 x i32> @fun26(<2 x i8> %val1, <2 x i8> %val2) {
265  %cmp = icmp eq <2 x i8> %val1, %val2
266  %v = sext <2 x i1> %cmp to <2 x i32>
267  ret <2 x i32> %v
268
269; CHECK: fun26
270; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
271; CHECK: cost of 2 for instruction:   %v = sext <2 x i1> %cmp to <2 x i32>
272}
273
274define <2 x i64> @fun27(<2 x i8> %val1, <2 x i8> %val2) {
275  %cmp = icmp eq <2 x i8> %val1, %val2
276  %v = sext <2 x i1> %cmp to <2 x i64>
277  ret <2 x i64> %v
278
279; CHECK: fun27
280; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
281; CHECK: cost of 3 for instruction:   %v = sext <2 x i1> %cmp to <2 x i64>
282}
283
284define <2 x i8> @fun28(<2 x i16> %val1, <2 x i16> %val2) {
285  %cmp = icmp eq <2 x i16> %val1, %val2
286  %v = sext <2 x i1> %cmp to <2 x i8>
287  ret <2 x i8> %v
288
289; CHECK: fun28
290; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
291; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i8>
292}
293
294define <2 x i16> @fun29(<2 x i16> %val1, <2 x i16> %val2) {
295  %cmp = icmp eq <2 x i16> %val1, %val2
296  %v = sext <2 x i1> %cmp to <2 x i16>
297  ret <2 x i16> %v
298
299; CHECK: fun29
300; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
301; CHECK: cost of 0 for instruction:   %v = sext <2 x i1> %cmp to <2 x i16>
302}
303
304define <2 x i32> @fun30(<2 x i16> %val1, <2 x i16> %val2) {
305  %cmp = icmp eq <2 x i16> %val1, %val2
306  %v = sext <2 x i1> %cmp to <2 x i32>
307  ret <2 x i32> %v
308
309; CHECK: fun30
310; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
311; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i32>
312}
313
314define <2 x i64> @fun31(<2 x i16> %val1, <2 x i16> %val2) {
315  %cmp = icmp eq <2 x i16> %val1, %val2
316  %v = sext <2 x i1> %cmp to <2 x i64>
317  ret <2 x i64> %v
318
319; CHECK: fun31
320; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
321; CHECK: cost of 2 for instruction:   %v = sext <2 x i1> %cmp to <2 x i64>
322}
323
324define <2 x i8> @fun32(<2 x i32> %val1, <2 x i32> %val2) {
325  %cmp = icmp eq <2 x i32> %val1, %val2
326  %v = sext <2 x i1> %cmp to <2 x i8>
327  ret <2 x i8> %v
328
329; CHECK: fun32
330; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
331; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i8>
332}
333
334define <2 x i16> @fun33(<2 x i32> %val1, <2 x i32> %val2) {
335  %cmp = icmp eq <2 x i32> %val1, %val2
336  %v = sext <2 x i1> %cmp to <2 x i16>
337  ret <2 x i16> %v
338
339; CHECK: fun33
340; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
341; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i16>
342}
343
344define <2 x i32> @fun34(<2 x i32> %val1, <2 x i32> %val2) {
345  %cmp = icmp eq <2 x i32> %val1, %val2
346  %v = sext <2 x i1> %cmp to <2 x i32>
347  ret <2 x i32> %v
348
349; CHECK: fun34
350; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
351; CHECK: cost of 0 for instruction:   %v = sext <2 x i1> %cmp to <2 x i32>
352}
353
354define <2 x i64> @fun35(<2 x i32> %val1, <2 x i32> %val2) {
355  %cmp = icmp eq <2 x i32> %val1, %val2
356  %v = sext <2 x i1> %cmp to <2 x i64>
357  ret <2 x i64> %v
358
359; CHECK: fun35
360; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
361; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i64>
362}
363
364define <2 x i8> @fun36(<2 x i64> %val1, <2 x i64> %val2) {
365  %cmp = icmp eq <2 x i64> %val1, %val2
366  %v = sext <2 x i1> %cmp to <2 x i8>
367  ret <2 x i8> %v
368
369; CHECK: fun36
370; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
371; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i8>
372}
373
374define <2 x i16> @fun37(<2 x i64> %val1, <2 x i64> %val2) {
375  %cmp = icmp eq <2 x i64> %val1, %val2
376  %v = sext <2 x i1> %cmp to <2 x i16>
377  ret <2 x i16> %v
378
379; CHECK: fun37
380; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
381; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i16>
382}
383
384define <2 x i32> @fun38(<2 x i64> %val1, <2 x i64> %val2) {
385  %cmp = icmp eq <2 x i64> %val1, %val2
386  %v = sext <2 x i1> %cmp to <2 x i32>
387  ret <2 x i32> %v
388
389; CHECK: fun38
390; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
391; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i32>
392}
393
394define <2 x i64> @fun39(<2 x i64> %val1, <2 x i64> %val2) {
395  %cmp = icmp eq <2 x i64> %val1, %val2
396  %v = sext <2 x i1> %cmp to <2 x i64>
397  ret <2 x i64> %v
398
399; CHECK: fun39
400; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
401; CHECK: cost of 0 for instruction:   %v = sext <2 x i1> %cmp to <2 x i64>
402}
403
404define <2 x i8> @fun40(<2 x float> %val1, <2 x float> %val2) {
405  %cmp = fcmp ogt <2 x float> %val1, %val2
406  %v = sext <2 x i1> %cmp to <2 x i8>
407  ret <2 x i8> %v
408
409; CHECK: fun40
410; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
411; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i8>
412}
413
414define <2 x i16> @fun41(<2 x float> %val1, <2 x float> %val2) {
415  %cmp = fcmp ogt <2 x float> %val1, %val2
416  %v = sext <2 x i1> %cmp to <2 x i16>
417  ret <2 x i16> %v
418
419; CHECK: fun41
420; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
421; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i16>
422}
423
424define <2 x i32> @fun42(<2 x float> %val1, <2 x float> %val2) {
425  %cmp = fcmp ogt <2 x float> %val1, %val2
426  %v = sext <2 x i1> %cmp to <2 x i32>
427  ret <2 x i32> %v
428
429; CHECK: fun42
430; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
431; CHECK: cost of 0 for instruction:   %v = sext <2 x i1> %cmp to <2 x i32>
432}
433
434define <2 x i64> @fun43(<2 x float> %val1, <2 x float> %val2) {
435  %cmp = fcmp ogt <2 x float> %val1, %val2
436  %v = sext <2 x i1> %cmp to <2 x i64>
437  ret <2 x i64> %v
438
439; CHECK: fun43
440; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
441; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i64>
442}
443
444define <2 x i8> @fun44(<2 x double> %val1, <2 x double> %val2) {
445  %cmp = fcmp ogt <2 x double> %val1, %val2
446  %v = sext <2 x i1> %cmp to <2 x i8>
447  ret <2 x i8> %v
448
449; CHECK: fun44
450; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
451; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i8>
452}
453
454define <2 x i16> @fun45(<2 x double> %val1, <2 x double> %val2) {
455  %cmp = fcmp ogt <2 x double> %val1, %val2
456  %v = sext <2 x i1> %cmp to <2 x i16>
457  ret <2 x i16> %v
458
459; CHECK: fun45
460; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
461; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i16>
462}
463
464define <2 x i32> @fun46(<2 x double> %val1, <2 x double> %val2) {
465  %cmp = fcmp ogt <2 x double> %val1, %val2
466  %v = sext <2 x i1> %cmp to <2 x i32>
467  ret <2 x i32> %v
468
469; CHECK: fun46
470; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
471; CHECK: cost of 1 for instruction:   %v = sext <2 x i1> %cmp to <2 x i32>
472}
473
474define <2 x i64> @fun47(<2 x double> %val1, <2 x double> %val2) {
475  %cmp = fcmp ogt <2 x double> %val1, %val2
476  %v = sext <2 x i1> %cmp to <2 x i64>
477  ret <2 x i64> %v
478
479; CHECK: fun47
480; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
481; CHECK: cost of 0 for instruction:   %v = sext <2 x i1> %cmp to <2 x i64>
482}
483
484define <4 x i8> @fun48(<4 x i8> %val1, <4 x i8> %val2) {
485  %cmp = icmp eq <4 x i8> %val1, %val2
486  %v = sext <4 x i1> %cmp to <4 x i8>
487  ret <4 x i8> %v
488
489; CHECK: fun48
490; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
491; CHECK: cost of 0 for instruction:   %v = sext <4 x i1> %cmp to <4 x i8>
492}
493
494define <4 x i16> @fun49(<4 x i8> %val1, <4 x i8> %val2) {
495  %cmp = icmp eq <4 x i8> %val1, %val2
496  %v = sext <4 x i1> %cmp to <4 x i16>
497  ret <4 x i16> %v
498
499; CHECK: fun49
500; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
501; CHECK: cost of 1 for instruction:   %v = sext <4 x i1> %cmp to <4 x i16>
502}
503
504define <4 x i32> @fun50(<4 x i8> %val1, <4 x i8> %val2) {
505  %cmp = icmp eq <4 x i8> %val1, %val2
506  %v = sext <4 x i1> %cmp to <4 x i32>
507  ret <4 x i32> %v
508
509; CHECK: fun50
510; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
511; CHECK: cost of 2 for instruction:   %v = sext <4 x i1> %cmp to <4 x i32>
512}
513
514define <4 x i64> @fun51(<4 x i8> %val1, <4 x i8> %val2) {
515  %cmp = icmp eq <4 x i8> %val1, %val2
516  %v = sext <4 x i1> %cmp to <4 x i64>
517  ret <4 x i64> %v
518
519; CHECK: fun51
520; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
521; CHECK: cost of 7 for instruction:   %v = sext <4 x i1> %cmp to <4 x i64>
522}
523
524define <4 x i8> @fun52(<4 x i16> %val1, <4 x i16> %val2) {
525  %cmp = icmp eq <4 x i16> %val1, %val2
526  %v = sext <4 x i1> %cmp to <4 x i8>
527  ret <4 x i8> %v
528
529; CHECK: fun52
530; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
531; CHECK: cost of 1 for instruction:   %v = sext <4 x i1> %cmp to <4 x i8>
532}
533
534define <4 x i16> @fun53(<4 x i16> %val1, <4 x i16> %val2) {
535  %cmp = icmp eq <4 x i16> %val1, %val2
536  %v = sext <4 x i1> %cmp to <4 x i16>
537  ret <4 x i16> %v
538
539; CHECK: fun53
540; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
541; CHECK: cost of 0 for instruction:   %v = sext <4 x i1> %cmp to <4 x i16>
542}
543
544define <4 x i32> @fun54(<4 x i16> %val1, <4 x i16> %val2) {
545  %cmp = icmp eq <4 x i16> %val1, %val2
546  %v = sext <4 x i1> %cmp to <4 x i32>
547  ret <4 x i32> %v
548
549; CHECK: fun54
550; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
551; CHECK: cost of 1 for instruction:   %v = sext <4 x i1> %cmp to <4 x i32>
552}
553
554define <4 x i64> @fun55(<4 x i16> %val1, <4 x i16> %val2) {
555  %cmp = icmp eq <4 x i16> %val1, %val2
556  %v = sext <4 x i1> %cmp to <4 x i64>
557  ret <4 x i64> %v
558
559; CHECK: fun55
560; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
561; CHECK: cost of 5 for instruction:   %v = sext <4 x i1> %cmp to <4 x i64>
562}
563
564define <4 x i8> @fun56(<4 x i32> %val1, <4 x i32> %val2) {
565  %cmp = icmp eq <4 x i32> %val1, %val2
566  %v = sext <4 x i1> %cmp to <4 x i8>
567  ret <4 x i8> %v
568
569; CHECK: fun56
570; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
571; CHECK: cost of 1 for instruction:   %v = sext <4 x i1> %cmp to <4 x i8>
572}
573
574define <4 x i16> @fun57(<4 x i32> %val1, <4 x i32> %val2) {
575  %cmp = icmp eq <4 x i32> %val1, %val2
576  %v = sext <4 x i1> %cmp to <4 x i16>
577  ret <4 x i16> %v
578
579; CHECK: fun57
580; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
581; CHECK: cost of 1 for instruction:   %v = sext <4 x i1> %cmp to <4 x i16>
582}
583
584define <4 x i32> @fun58(<4 x i32> %val1, <4 x i32> %val2) {
585  %cmp = icmp eq <4 x i32> %val1, %val2
586  %v = sext <4 x i1> %cmp to <4 x i32>
587  ret <4 x i32> %v
588
589; CHECK: fun58
590; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
591; CHECK: cost of 0 for instruction:   %v = sext <4 x i1> %cmp to <4 x i32>
592}
593
594define <4 x i64> @fun59(<4 x i32> %val1, <4 x i32> %val2) {
595  %cmp = icmp eq <4 x i32> %val1, %val2
596  %v = sext <4 x i1> %cmp to <4 x i64>
597  ret <4 x i64> %v
598
599; CHECK: fun59
600; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
601; CHECK: cost of 3 for instruction:   %v = sext <4 x i1> %cmp to <4 x i64>
602}
603
604define <4 x i8> @fun60(<4 x i64> %val1, <4 x i64> %val2) {
605  %cmp = icmp eq <4 x i64> %val1, %val2
606  %v = sext <4 x i1> %cmp to <4 x i8>
607  ret <4 x i8> %v
608
609; CHECK: fun60
610; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
611; CHECK: cost of 1 for instruction:   %v = sext <4 x i1> %cmp to <4 x i8>
612}
613
614define <4 x i16> @fun61(<4 x i64> %val1, <4 x i64> %val2) {
615  %cmp = icmp eq <4 x i64> %val1, %val2
616  %v = sext <4 x i1> %cmp to <4 x i16>
617  ret <4 x i16> %v
618
619; CHECK: fun61
620; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
621; CHECK: cost of 1 for instruction:   %v = sext <4 x i1> %cmp to <4 x i16>
622}
623
624define <4 x i32> @fun62(<4 x i64> %val1, <4 x i64> %val2) {
625  %cmp = icmp eq <4 x i64> %val1, %val2
626  %v = sext <4 x i1> %cmp to <4 x i32>
627  ret <4 x i32> %v
628
629; CHECK: fun62
630; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
631; CHECK: cost of 1 for instruction:   %v = sext <4 x i1> %cmp to <4 x i32>
632}
633
634define <4 x i64> @fun63(<4 x i64> %val1, <4 x i64> %val2) {
635  %cmp = icmp eq <4 x i64> %val1, %val2
636  %v = sext <4 x i1> %cmp to <4 x i64>
637  ret <4 x i64> %v
638
639; CHECK: fun63
640; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
641; CHECK: cost of 0 for instruction:   %v = sext <4 x i1> %cmp to <4 x i64>
642}
643
644define <4 x i8> @fun64(<4 x float> %val1, <4 x float> %val2) {
645  %cmp = fcmp ogt <4 x float> %val1, %val2
646  %v = sext <4 x i1> %cmp to <4 x i8>
647  ret <4 x i8> %v
648
649; CHECK: fun64
650; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
651; CHECK: cost of 1 for instruction:   %v = sext <4 x i1> %cmp to <4 x i8>
652}
653
654define <4 x i16> @fun65(<4 x float> %val1, <4 x float> %val2) {
655  %cmp = fcmp ogt <4 x float> %val1, %val2
656  %v = sext <4 x i1> %cmp to <4 x i16>
657  ret <4 x i16> %v
658
659; CHECK: fun65
660; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
661; CHECK: cost of 1 for instruction:   %v = sext <4 x i1> %cmp to <4 x i16>
662}
663
664define <4 x i32> @fun66(<4 x float> %val1, <4 x float> %val2) {
665  %cmp = fcmp ogt <4 x float> %val1, %val2
666  %v = sext <4 x i1> %cmp to <4 x i32>
667  ret <4 x i32> %v
668
669; CHECK: fun66
670; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
671; CHECK: cost of 0 for instruction:   %v = sext <4 x i1> %cmp to <4 x i32>
672}
673
674define <4 x i64> @fun67(<4 x float> %val1, <4 x float> %val2) {
675  %cmp = fcmp ogt <4 x float> %val1, %val2
676  %v = sext <4 x i1> %cmp to <4 x i64>
677  ret <4 x i64> %v
678
679; CHECK: fun67
680; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
681; CHECK: cost of 3 for instruction:   %v = sext <4 x i1> %cmp to <4 x i64>
682}
683
684define <4 x i8> @fun68(<4 x double> %val1, <4 x double> %val2) {
685  %cmp = fcmp ogt <4 x double> %val1, %val2
686  %v = sext <4 x i1> %cmp to <4 x i8>
687  ret <4 x i8> %v
688
689; CHECK: fun68
690; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
691; CHECK: cost of 1 for instruction:   %v = sext <4 x i1> %cmp to <4 x i8>
692}
693
694define <4 x i16> @fun69(<4 x double> %val1, <4 x double> %val2) {
695  %cmp = fcmp ogt <4 x double> %val1, %val2
696  %v = sext <4 x i1> %cmp to <4 x i16>
697  ret <4 x i16> %v
698
699; CHECK: fun69
700; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
701; CHECK: cost of 1 for instruction:   %v = sext <4 x i1> %cmp to <4 x i16>
702}
703
704define <4 x i32> @fun70(<4 x double> %val1, <4 x double> %val2) {
705  %cmp = fcmp ogt <4 x double> %val1, %val2
706  %v = sext <4 x i1> %cmp to <4 x i32>
707  ret <4 x i32> %v
708
709; CHECK: fun70
710; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
711; CHECK: cost of 1 for instruction:   %v = sext <4 x i1> %cmp to <4 x i32>
712}
713
714define <4 x i64> @fun71(<4 x double> %val1, <4 x double> %val2) {
715  %cmp = fcmp ogt <4 x double> %val1, %val2
716  %v = sext <4 x i1> %cmp to <4 x i64>
717  ret <4 x i64> %v
718
719; CHECK: fun71
720; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
721; CHECK: cost of 0 for instruction:   %v = sext <4 x i1> %cmp to <4 x i64>
722}
723
724define <8 x i8> @fun72(<8 x i8> %val1, <8 x i8> %val2) {
725  %cmp = icmp eq <8 x i8> %val1, %val2
726  %v = sext <8 x i1> %cmp to <8 x i8>
727  ret <8 x i8> %v
728
729; CHECK: fun72
730; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
731; CHECK: cost of 0 for instruction:   %v = sext <8 x i1> %cmp to <8 x i8>
732}
733
734define <8 x i16> @fun73(<8 x i8> %val1, <8 x i8> %val2) {
735  %cmp = icmp eq <8 x i8> %val1, %val2
736  %v = sext <8 x i1> %cmp to <8 x i16>
737  ret <8 x i16> %v
738
739; CHECK: fun73
740; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
741; CHECK: cost of 1 for instruction:   %v = sext <8 x i1> %cmp to <8 x i16>
742}
743
744define <8 x i32> @fun74(<8 x i8> %val1, <8 x i8> %val2) {
745  %cmp = icmp eq <8 x i8> %val1, %val2
746  %v = sext <8 x i1> %cmp to <8 x i32>
747  ret <8 x i32> %v
748
749; CHECK: fun74
750; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
751; CHECK: cost of 5 for instruction:   %v = sext <8 x i1> %cmp to <8 x i32>
752}
753
754define <8 x i64> @fun75(<8 x i8> %val1, <8 x i8> %val2) {
755  %cmp = icmp eq <8 x i8> %val1, %val2
756  %v = sext <8 x i1> %cmp to <8 x i64>
757  ret <8 x i64> %v
758
759; CHECK: fun75
760; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
761; CHECK: cost of 15 for instruction:   %v = sext <8 x i1> %cmp to <8 x i64>
762}
763
764define <8 x i8> @fun76(<8 x i16> %val1, <8 x i16> %val2) {
765  %cmp = icmp eq <8 x i16> %val1, %val2
766  %v = sext <8 x i1> %cmp to <8 x i8>
767  ret <8 x i8> %v
768
769; CHECK: fun76
770; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
771; CHECK: cost of 1 for instruction:   %v = sext <8 x i1> %cmp to <8 x i8>
772}
773
774define <8 x i16> @fun77(<8 x i16> %val1, <8 x i16> %val2) {
775  %cmp = icmp eq <8 x i16> %val1, %val2
776  %v = sext <8 x i1> %cmp to <8 x i16>
777  ret <8 x i16> %v
778
779; CHECK: fun77
780; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
781; CHECK: cost of 0 for instruction:   %v = sext <8 x i1> %cmp to <8 x i16>
782}
783
784define <8 x i32> @fun78(<8 x i16> %val1, <8 x i16> %val2) {
785  %cmp = icmp eq <8 x i16> %val1, %val2
786  %v = sext <8 x i1> %cmp to <8 x i32>
787  ret <8 x i32> %v
788
789; CHECK: fun78
790; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
791; CHECK: cost of 3 for instruction:   %v = sext <8 x i1> %cmp to <8 x i32>
792}
793
794define <8 x i64> @fun79(<8 x i16> %val1, <8 x i16> %val2) {
795  %cmp = icmp eq <8 x i16> %val1, %val2
796  %v = sext <8 x i1> %cmp to <8 x i64>
797  ret <8 x i64> %v
798
799; CHECK: fun79
800; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
801; CHECK: cost of 11 for instruction:   %v = sext <8 x i1> %cmp to <8 x i64>
802}
803
804define <8 x i8> @fun80(<8 x i32> %val1, <8 x i32> %val2) {
805  %cmp = icmp eq <8 x i32> %val1, %val2
806  %v = sext <8 x i1> %cmp to <8 x i8>
807  ret <8 x i8> %v
808
809; CHECK: fun80
810; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
811; CHECK: cost of 1 for instruction:   %v = sext <8 x i1> %cmp to <8 x i8>
812}
813
814define <8 x i16> @fun81(<8 x i32> %val1, <8 x i32> %val2) {
815  %cmp = icmp eq <8 x i32> %val1, %val2
816  %v = sext <8 x i1> %cmp to <8 x i16>
817  ret <8 x i16> %v
818
819; CHECK: fun81
820; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
821; CHECK: cost of 1 for instruction:   %v = sext <8 x i1> %cmp to <8 x i16>
822}
823
824define <8 x i32> @fun82(<8 x i32> %val1, <8 x i32> %val2) {
825  %cmp = icmp eq <8 x i32> %val1, %val2
826  %v = sext <8 x i1> %cmp to <8 x i32>
827  ret <8 x i32> %v
828
829; CHECK: fun82
830; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
831; CHECK: cost of 0 for instruction:   %v = sext <8 x i1> %cmp to <8 x i32>
832}
833
834define <8 x i64> @fun83(<8 x i32> %val1, <8 x i32> %val2) {
835  %cmp = icmp eq <8 x i32> %val1, %val2
836  %v = sext <8 x i1> %cmp to <8 x i64>
837  ret <8 x i64> %v
838
839; CHECK: fun83
840; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
841; CHECK: cost of 7 for instruction:   %v = sext <8 x i1> %cmp to <8 x i64>
842}
843
844define <8 x i8> @fun84(<8 x i64> %val1, <8 x i64> %val2) {
845  %cmp = icmp eq <8 x i64> %val1, %val2
846  %v = sext <8 x i1> %cmp to <8 x i8>
847  ret <8 x i8> %v
848
849; CHECK: fun84
850; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
851; CHECK: cost of 3 for instruction:   %v = sext <8 x i1> %cmp to <8 x i8>
852}
853
854define <8 x i16> @fun85(<8 x i64> %val1, <8 x i64> %val2) {
855  %cmp = icmp eq <8 x i64> %val1, %val2
856  %v = sext <8 x i1> %cmp to <8 x i16>
857  ret <8 x i16> %v
858
859; CHECK: fun85
860; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
861; CHECK: cost of 3 for instruction:   %v = sext <8 x i1> %cmp to <8 x i16>
862}
863
864define <8 x i32> @fun86(<8 x i64> %val1, <8 x i64> %val2) {
865  %cmp = icmp eq <8 x i64> %val1, %val2
866  %v = sext <8 x i1> %cmp to <8 x i32>
867  ret <8 x i32> %v
868
869; CHECK: fun86
870; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
871; CHECK: cost of 2 for instruction:   %v = sext <8 x i1> %cmp to <8 x i32>
872}
873
874define <8 x i64> @fun87(<8 x i64> %val1, <8 x i64> %val2) {
875  %cmp = icmp eq <8 x i64> %val1, %val2
876  %v = sext <8 x i1> %cmp to <8 x i64>
877  ret <8 x i64> %v
878
879; CHECK: fun87
880; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
881; CHECK: cost of 0 for instruction:   %v = sext <8 x i1> %cmp to <8 x i64>
882}
883
884define <8 x i8> @fun88(<8 x float> %val1, <8 x float> %val2) {
885  %cmp = fcmp ogt <8 x float> %val1, %val2
886  %v = sext <8 x i1> %cmp to <8 x i8>
887  ret <8 x i8> %v
888
889; CHECK: fun88
890; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
891; CHECK: cost of 1 for instruction:   %v = sext <8 x i1> %cmp to <8 x i8>
892}
893
894define <8 x i16> @fun89(<8 x float> %val1, <8 x float> %val2) {
895  %cmp = fcmp ogt <8 x float> %val1, %val2
896  %v = sext <8 x i1> %cmp to <8 x i16>
897  ret <8 x i16> %v
898
899; CHECK: fun89
900; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
901; CHECK: cost of 1 for instruction:   %v = sext <8 x i1> %cmp to <8 x i16>
902}
903
904define <8 x i32> @fun90(<8 x float> %val1, <8 x float> %val2) {
905  %cmp = fcmp ogt <8 x float> %val1, %val2
906  %v = sext <8 x i1> %cmp to <8 x i32>
907  ret <8 x i32> %v
908
909; CHECK: fun90
910; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
911; CHECK: cost of 0 for instruction:   %v = sext <8 x i1> %cmp to <8 x i32>
912}
913
914define <8 x i64> @fun91(<8 x float> %val1, <8 x float> %val2) {
915  %cmp = fcmp ogt <8 x float> %val1, %val2
916  %v = sext <8 x i1> %cmp to <8 x i64>
917  ret <8 x i64> %v
918
919; CHECK: fun91
920; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
921; CHECK: cost of 7 for instruction:   %v = sext <8 x i1> %cmp to <8 x i64>
922}
923
924define <8 x i8> @fun92(<8 x double> %val1, <8 x double> %val2) {
925  %cmp = fcmp ogt <8 x double> %val1, %val2
926  %v = sext <8 x i1> %cmp to <8 x i8>
927  ret <8 x i8> %v
928
929; CHECK: fun92
930; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
931; CHECK: cost of 3 for instruction:   %v = sext <8 x i1> %cmp to <8 x i8>
932}
933
934define <8 x i16> @fun93(<8 x double> %val1, <8 x double> %val2) {
935  %cmp = fcmp ogt <8 x double> %val1, %val2
936  %v = sext <8 x i1> %cmp to <8 x i16>
937  ret <8 x i16> %v
938
939; CHECK: fun93
940; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
941; CHECK: cost of 3 for instruction:   %v = sext <8 x i1> %cmp to <8 x i16>
942}
943
944define <8 x i32> @fun94(<8 x double> %val1, <8 x double> %val2) {
945  %cmp = fcmp ogt <8 x double> %val1, %val2
946  %v = sext <8 x i1> %cmp to <8 x i32>
947  ret <8 x i32> %v
948
949; CHECK: fun94
950; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
951; CHECK: cost of 2 for instruction:   %v = sext <8 x i1> %cmp to <8 x i32>
952}
953
954define <8 x i64> @fun95(<8 x double> %val1, <8 x double> %val2) {
955  %cmp = fcmp ogt <8 x double> %val1, %val2
956  %v = sext <8 x i1> %cmp to <8 x i64>
957  ret <8 x i64> %v
958
959; CHECK: fun95
960; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
961; CHECK: cost of 0 for instruction:   %v = sext <8 x i1> %cmp to <8 x i64>
962}
963
964define <16 x i8> @fun96(<16 x i8> %val1, <16 x i8> %val2) {
965  %cmp = icmp eq <16 x i8> %val1, %val2
966  %v = sext <16 x i1> %cmp to <16 x i8>
967  ret <16 x i8> %v
968
969; CHECK: fun96
970; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
971; CHECK: cost of 0 for instruction:   %v = sext <16 x i1> %cmp to <16 x i8>
972}
973
974define <16 x i16> @fun97(<16 x i8> %val1, <16 x i8> %val2) {
975  %cmp = icmp eq <16 x i8> %val1, %val2
976  %v = sext <16 x i1> %cmp to <16 x i16>
977  ret <16 x i16> %v
978
979; CHECK: fun97
980; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
981; CHECK: cost of 3 for instruction:   %v = sext <16 x i1> %cmp to <16 x i16>
982}
983
984define <16 x i32> @fun98(<16 x i8> %val1, <16 x i8> %val2) {
985  %cmp = icmp eq <16 x i8> %val1, %val2
986  %v = sext <16 x i1> %cmp to <16 x i32>
987  ret <16 x i32> %v
988
989; CHECK: fun98
990; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
991; CHECK: cost of 11 for instruction:   %v = sext <16 x i1> %cmp to <16 x i32>
992}
993
994define <16 x i64> @fun99(<16 x i8> %val1, <16 x i8> %val2) {
995  %cmp = icmp eq <16 x i8> %val1, %val2
996  %v = sext <16 x i1> %cmp to <16 x i64>
997  ret <16 x i64> %v
998
999; CHECK: fun99
1000; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
1001; CHECK: cost of 31 for instruction:   %v = sext <16 x i1> %cmp to <16 x i64>
1002}
1003
1004define <16 x i8> @fun100(<16 x i16> %val1, <16 x i16> %val2) {
1005  %cmp = icmp eq <16 x i16> %val1, %val2
1006  %v = sext <16 x i1> %cmp to <16 x i8>
1007  ret <16 x i8> %v
1008
1009; CHECK: fun100
1010; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
1011; CHECK: cost of 1 for instruction:   %v = sext <16 x i1> %cmp to <16 x i8>
1012}
1013
1014define <16 x i16> @fun101(<16 x i16> %val1, <16 x i16> %val2) {
1015  %cmp = icmp eq <16 x i16> %val1, %val2
1016  %v = sext <16 x i1> %cmp to <16 x i16>
1017  ret <16 x i16> %v
1018
1019; CHECK: fun101
1020; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
1021; CHECK: cost of 0 for instruction:   %v = sext <16 x i1> %cmp to <16 x i16>
1022}
1023
1024define <16 x i32> @fun102(<16 x i16> %val1, <16 x i16> %val2) {
1025  %cmp = icmp eq <16 x i16> %val1, %val2
1026  %v = sext <16 x i1> %cmp to <16 x i32>
1027  ret <16 x i32> %v
1028
1029; CHECK: fun102
1030; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
1031; CHECK: cost of 7 for instruction:   %v = sext <16 x i1> %cmp to <16 x i32>
1032}
1033
1034define <16 x i64> @fun103(<16 x i16> %val1, <16 x i16> %val2) {
1035  %cmp = icmp eq <16 x i16> %val1, %val2
1036  %v = sext <16 x i1> %cmp to <16 x i64>
1037  ret <16 x i64> %v
1038
1039; CHECK: fun103
1040; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
1041; CHECK: cost of 23 for instruction:   %v = sext <16 x i1> %cmp to <16 x i64>
1042}
1043
1044define <16 x i8> @fun104(<16 x i32> %val1, <16 x i32> %val2) {
1045  %cmp = icmp eq <16 x i32> %val1, %val2
1046  %v = sext <16 x i1> %cmp to <16 x i8>
1047  ret <16 x i8> %v
1048
1049; CHECK: fun104
1050; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
1051; CHECK: cost of 3 for instruction:   %v = sext <16 x i1> %cmp to <16 x i8>
1052}
1053
1054define <16 x i16> @fun105(<16 x i32> %val1, <16 x i32> %val2) {
1055  %cmp = icmp eq <16 x i32> %val1, %val2
1056  %v = sext <16 x i1> %cmp to <16 x i16>
1057  ret <16 x i16> %v
1058
1059; CHECK: fun105
1060; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
1061; CHECK: cost of 2 for instruction:   %v = sext <16 x i1> %cmp to <16 x i16>
1062}
1063
1064define <16 x i32> @fun106(<16 x i32> %val1, <16 x i32> %val2) {
1065  %cmp = icmp eq <16 x i32> %val1, %val2
1066  %v = sext <16 x i1> %cmp to <16 x i32>
1067  ret <16 x i32> %v
1068
1069; CHECK: fun106
1070; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
1071; CHECK: cost of 0 for instruction:   %v = sext <16 x i1> %cmp to <16 x i32>
1072}
1073
1074define <16 x i64> @fun107(<16 x i32> %val1, <16 x i32> %val2) {
1075  %cmp = icmp eq <16 x i32> %val1, %val2
1076  %v = sext <16 x i1> %cmp to <16 x i64>
1077  ret <16 x i64> %v
1078
1079; CHECK: fun107
1080; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
1081; CHECK: cost of 15 for instruction:   %v = sext <16 x i1> %cmp to <16 x i64>
1082}
1083
1084define <16 x i8> @fun108(<16 x i64> %val1, <16 x i64> %val2) {
1085  %cmp = icmp eq <16 x i64> %val1, %val2
1086  %v = sext <16 x i1> %cmp to <16 x i8>
1087  ret <16 x i8> %v
1088
1089; CHECK: fun108
1090; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
1091; CHECK: cost of 7 for instruction:   %v = sext <16 x i1> %cmp to <16 x i8>
1092}
1093
1094define <16 x i16> @fun109(<16 x i64> %val1, <16 x i64> %val2) {
1095  %cmp = icmp eq <16 x i64> %val1, %val2
1096  %v = sext <16 x i1> %cmp to <16 x i16>
1097  ret <16 x i16> %v
1098
1099; CHECK: fun109
1100; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
1101; CHECK: cost of 6 for instruction:   %v = sext <16 x i1> %cmp to <16 x i16>
1102}
1103
1104define <16 x i32> @fun110(<16 x i64> %val1, <16 x i64> %val2) {
1105  %cmp = icmp eq <16 x i64> %val1, %val2
1106  %v = sext <16 x i1> %cmp to <16 x i32>
1107  ret <16 x i32> %v
1108
1109; CHECK: fun110
1110; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
1111; CHECK: cost of 4 for instruction:   %v = sext <16 x i1> %cmp to <16 x i32>
1112}
1113
1114define <16 x i64> @fun111(<16 x i64> %val1, <16 x i64> %val2) {
1115  %cmp = icmp eq <16 x i64> %val1, %val2
1116  %v = sext <16 x i1> %cmp to <16 x i64>
1117  ret <16 x i64> %v
1118
1119; CHECK: fun111
1120; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
1121; CHECK: cost of 0 for instruction:   %v = sext <16 x i1> %cmp to <16 x i64>
1122}
1123
1124define <16 x i8> @fun112(<16 x float> %val1, <16 x float> %val2) {
1125  %cmp = fcmp ogt <16 x float> %val1, %val2
1126  %v = sext <16 x i1> %cmp to <16 x i8>
1127  ret <16 x i8> %v
1128
1129; CHECK: fun112
1130; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
1131; CHECK: cost of 3 for instruction:   %v = sext <16 x i1> %cmp to <16 x i8>
1132}
1133
1134define <16 x i16> @fun113(<16 x float> %val1, <16 x float> %val2) {
1135  %cmp = fcmp ogt <16 x float> %val1, %val2
1136  %v = sext <16 x i1> %cmp to <16 x i16>
1137  ret <16 x i16> %v
1138
1139; CHECK: fun113
1140; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
1141; CHECK: cost of 2 for instruction:   %v = sext <16 x i1> %cmp to <16 x i16>
1142}
1143
1144define <16 x i32> @fun114(<16 x float> %val1, <16 x float> %val2) {
1145  %cmp = fcmp ogt <16 x float> %val1, %val2
1146  %v = sext <16 x i1> %cmp to <16 x i32>
1147  ret <16 x i32> %v
1148
1149; CHECK: fun114
1150; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
1151; CHECK: cost of 0 for instruction:   %v = sext <16 x i1> %cmp to <16 x i32>
1152}
1153
1154define <16 x i64> @fun115(<16 x float> %val1, <16 x float> %val2) {
1155  %cmp = fcmp ogt <16 x float> %val1, %val2
1156  %v = sext <16 x i1> %cmp to <16 x i64>
1157  ret <16 x i64> %v
1158
1159; CHECK: fun115
1160; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
1161; CHECK: cost of 15 for instruction:   %v = sext <16 x i1> %cmp to <16 x i64>
1162}
1163
1164define <16 x i8> @fun116(<16 x double> %val1, <16 x double> %val2) {
1165  %cmp = fcmp ogt <16 x double> %val1, %val2
1166  %v = sext <16 x i1> %cmp to <16 x i8>
1167  ret <16 x i8> %v
1168
1169; CHECK: fun116
1170; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
1171; CHECK: cost of 7 for instruction:   %v = sext <16 x i1> %cmp to <16 x i8>
1172}
1173
1174define <16 x i16> @fun117(<16 x double> %val1, <16 x double> %val2) {
1175  %cmp = fcmp ogt <16 x double> %val1, %val2
1176  %v = sext <16 x i1> %cmp to <16 x i16>
1177  ret <16 x i16> %v
1178
1179; CHECK: fun117
1180; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
1181; CHECK: cost of 6 for instruction:   %v = sext <16 x i1> %cmp to <16 x i16>
1182}
1183
1184define <16 x i32> @fun118(<16 x double> %val1, <16 x double> %val2) {
1185  %cmp = fcmp ogt <16 x double> %val1, %val2
1186  %v = sext <16 x i1> %cmp to <16 x i32>
1187  ret <16 x i32> %v
1188
1189; CHECK: fun118
1190; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
1191; CHECK: cost of 4 for instruction:   %v = sext <16 x i1> %cmp to <16 x i32>
1192}
1193
1194define <16 x i64> @fun119(<16 x double> %val1, <16 x double> %val2) {
1195  %cmp = fcmp ogt <16 x double> %val1, %val2
1196  %v = sext <16 x i1> %cmp to <16 x i64>
1197  ret <16 x i64> %v
1198
1199; CHECK: fun119
1200; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
1201; CHECK: cost of 0 for instruction:   %v = sext <16 x i1> %cmp to <16 x i64>
1202}
1203
1204define i8 @fun120(i8 %val1, i8 %val2) {
1205  %cmp = icmp eq i8 %val1, %val2
1206  %v = zext i1 %cmp to i8
1207  ret i8 %v
1208
1209; CHECK: fun120
1210; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
1211; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i8
1212}
1213
1214define i16 @fun121(i8 %val1, i8 %val2) {
1215  %cmp = icmp eq i8 %val1, %val2
1216  %v = zext i1 %cmp to i16
1217  ret i16 %v
1218
1219; CHECK: fun121
1220; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
1221; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i16
1222}
1223
1224define i32 @fun122(i8 %val1, i8 %val2) {
1225  %cmp = icmp eq i8 %val1, %val2
1226  %v = zext i1 %cmp to i32
1227  ret i32 %v
1228
1229; CHECK: fun122
1230; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
1231; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i32
1232}
1233
1234define i64 @fun123(i8 %val1, i8 %val2) {
1235  %cmp = icmp eq i8 %val1, %val2
1236  %v = zext i1 %cmp to i64
1237  ret i64 %v
1238
1239; CHECK: fun123
1240; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
1241; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i64
1242}
1243
1244define i8 @fun124(i16 %val1, i16 %val2) {
1245  %cmp = icmp eq i16 %val1, %val2
1246  %v = zext i1 %cmp to i8
1247  ret i8 %v
1248
1249; CHECK: fun124
1250; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
1251; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i8
1252}
1253
1254define i16 @fun125(i16 %val1, i16 %val2) {
1255  %cmp = icmp eq i16 %val1, %val2
1256  %v = zext i1 %cmp to i16
1257  ret i16 %v
1258
1259; CHECK: fun125
1260; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
1261; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i16
1262}
1263
1264define i32 @fun126(i16 %val1, i16 %val2) {
1265  %cmp = icmp eq i16 %val1, %val2
1266  %v = zext i1 %cmp to i32
1267  ret i32 %v
1268
1269; CHECK: fun126
1270; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
1271; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i32
1272}
1273
1274define i64 @fun127(i16 %val1, i16 %val2) {
1275  %cmp = icmp eq i16 %val1, %val2
1276  %v = zext i1 %cmp to i64
1277  ret i64 %v
1278
1279; CHECK: fun127
1280; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
1281; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i64
1282}
1283
1284define i8 @fun128(i32 %val1, i32 %val2) {
1285  %cmp = icmp eq i32 %val1, %val2
1286  %v = zext i1 %cmp to i8
1287  ret i8 %v
1288
1289; CHECK: fun128
1290; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
1291; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i8
1292}
1293
1294define i16 @fun129(i32 %val1, i32 %val2) {
1295  %cmp = icmp eq i32 %val1, %val2
1296  %v = zext i1 %cmp to i16
1297  ret i16 %v
1298
1299; CHECK: fun129
1300; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
1301; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i16
1302}
1303
1304define i32 @fun130(i32 %val1, i32 %val2) {
1305  %cmp = icmp eq i32 %val1, %val2
1306  %v = zext i1 %cmp to i32
1307  ret i32 %v
1308
1309; CHECK: fun130
1310; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
1311; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i32
1312}
1313
1314define i64 @fun131(i32 %val1, i32 %val2) {
1315  %cmp = icmp eq i32 %val1, %val2
1316  %v = zext i1 %cmp to i64
1317  ret i64 %v
1318
1319; CHECK: fun131
1320; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
1321; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i64
1322}
1323
1324define i8 @fun132(i64 %val1, i64 %val2) {
1325  %cmp = icmp eq i64 %val1, %val2
1326  %v = zext i1 %cmp to i8
1327  ret i8 %v
1328
1329; CHECK: fun132
1330; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
1331; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i8
1332}
1333
1334define i16 @fun133(i64 %val1, i64 %val2) {
1335  %cmp = icmp eq i64 %val1, %val2
1336  %v = zext i1 %cmp to i16
1337  ret i16 %v
1338
1339; CHECK: fun133
1340; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
1341; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i16
1342}
1343
1344define i32 @fun134(i64 %val1, i64 %val2) {
1345  %cmp = icmp eq i64 %val1, %val2
1346  %v = zext i1 %cmp to i32
1347  ret i32 %v
1348
1349; CHECK: fun134
1350; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
1351; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i32
1352}
1353
1354define i64 @fun135(i64 %val1, i64 %val2) {
1355  %cmp = icmp eq i64 %val1, %val2
1356  %v = zext i1 %cmp to i64
1357  ret i64 %v
1358
1359; CHECK: fun135
1360; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
1361; CHECK: cost of 3 for instruction:   %v = zext i1 %cmp to i64
1362}
1363
1364define i8 @fun136(float %val1, float %val2) {
1365  %cmp = fcmp ogt float %val1, %val2
1366  %v = zext i1 %cmp to i8
1367  ret i8 %v
1368
1369; CHECK: fun136
1370; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
1371; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i8
1372}
1373
1374define i16 @fun137(float %val1, float %val2) {
1375  %cmp = fcmp ogt float %val1, %val2
1376  %v = zext i1 %cmp to i16
1377  ret i16 %v
1378
1379; CHECK: fun137
1380; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
1381; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i16
1382}
1383
1384define i32 @fun138(float %val1, float %val2) {
1385  %cmp = fcmp ogt float %val1, %val2
1386  %v = zext i1 %cmp to i32
1387  ret i32 %v
1388
1389; CHECK: fun138
1390; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
1391; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i32
1392}
1393
1394define i64 @fun139(float %val1, float %val2) {
1395  %cmp = fcmp ogt float %val1, %val2
1396  %v = zext i1 %cmp to i64
1397  ret i64 %v
1398
1399; CHECK: fun139
1400; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
1401; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i64
1402}
1403
1404define i8 @fun140(double %val1, double %val2) {
1405  %cmp = fcmp ogt double %val1, %val2
1406  %v = zext i1 %cmp to i8
1407  ret i8 %v
1408
1409; CHECK: fun140
1410; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
1411; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i8
1412}
1413
1414define i16 @fun141(double %val1, double %val2) {
1415  %cmp = fcmp ogt double %val1, %val2
1416  %v = zext i1 %cmp to i16
1417  ret i16 %v
1418
1419; CHECK: fun141
1420; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
1421; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i16
1422}
1423
1424define i32 @fun142(double %val1, double %val2) {
1425  %cmp = fcmp ogt double %val1, %val2
1426  %v = zext i1 %cmp to i32
1427  ret i32 %v
1428
1429; CHECK: fun142
1430; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
1431; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i32
1432}
1433
1434define i64 @fun143(double %val1, double %val2) {
1435  %cmp = fcmp ogt double %val1, %val2
1436  %v = zext i1 %cmp to i64
1437  ret i64 %v
1438
1439; CHECK: fun143
1440; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
1441; CHECK: cost of 4 for instruction:   %v = zext i1 %cmp to i64
1442}
1443
1444define <2 x i8> @fun144(<2 x i8> %val1, <2 x i8> %val2) {
1445  %cmp = icmp eq <2 x i8> %val1, %val2
1446  %v = zext <2 x i1> %cmp to <2 x i8>
1447  ret <2 x i8> %v
1448
1449; CHECK: fun144
1450; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
1451; CHECK: cost of 1 for instruction:   %v = zext <2 x i1> %cmp to <2 x i8>
1452}
1453
1454define <2 x i16> @fun145(<2 x i8> %val1, <2 x i8> %val2) {
1455  %cmp = icmp eq <2 x i8> %val1, %val2
1456  %v = zext <2 x i1> %cmp to <2 x i16>
1457  ret <2 x i16> %v
1458
1459; CHECK: fun145
1460; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
1461; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i16>
1462}
1463
1464define <2 x i32> @fun146(<2 x i8> %val1, <2 x i8> %val2) {
1465  %cmp = icmp eq <2 x i8> %val1, %val2
1466  %v = zext <2 x i1> %cmp to <2 x i32>
1467  ret <2 x i32> %v
1468
1469; CHECK: fun146
1470; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
1471; CHECK: cost of 3 for instruction:   %v = zext <2 x i1> %cmp to <2 x i32>
1472}
1473
1474define <2 x i64> @fun147(<2 x i8> %val1, <2 x i8> %val2) {
1475  %cmp = icmp eq <2 x i8> %val1, %val2
1476  %v = zext <2 x i1> %cmp to <2 x i64>
1477  ret <2 x i64> %v
1478
1479; CHECK: fun147
1480; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
1481; CHECK: cost of 4 for instruction:   %v = zext <2 x i1> %cmp to <2 x i64>
1482}
1483
1484define <2 x i8> @fun148(<2 x i16> %val1, <2 x i16> %val2) {
1485  %cmp = icmp eq <2 x i16> %val1, %val2
1486  %v = zext <2 x i1> %cmp to <2 x i8>
1487  ret <2 x i8> %v
1488
1489; CHECK: fun148
1490; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
1491; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i8>
1492}
1493
1494define <2 x i16> @fun149(<2 x i16> %val1, <2 x i16> %val2) {
1495  %cmp = icmp eq <2 x i16> %val1, %val2
1496  %v = zext <2 x i1> %cmp to <2 x i16>
1497  ret <2 x i16> %v
1498
1499; CHECK: fun149
1500; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
1501; CHECK: cost of 1 for instruction:   %v = zext <2 x i1> %cmp to <2 x i16>
1502}
1503
1504define <2 x i32> @fun150(<2 x i16> %val1, <2 x i16> %val2) {
1505  %cmp = icmp eq <2 x i16> %val1, %val2
1506  %v = zext <2 x i1> %cmp to <2 x i32>
1507  ret <2 x i32> %v
1508
1509; CHECK: fun150
1510; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
1511; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i32>
1512}
1513
1514define <2 x i64> @fun151(<2 x i16> %val1, <2 x i16> %val2) {
1515  %cmp = icmp eq <2 x i16> %val1, %val2
1516  %v = zext <2 x i1> %cmp to <2 x i64>
1517  ret <2 x i64> %v
1518
1519; CHECK: fun151
1520; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
1521; CHECK: cost of 3 for instruction:   %v = zext <2 x i1> %cmp to <2 x i64>
1522}
1523
1524define <2 x i8> @fun152(<2 x i32> %val1, <2 x i32> %val2) {
1525  %cmp = icmp eq <2 x i32> %val1, %val2
1526  %v = zext <2 x i1> %cmp to <2 x i8>
1527  ret <2 x i8> %v
1528
1529; CHECK: fun152
1530; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
1531; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i8>
1532}
1533
1534define <2 x i16> @fun153(<2 x i32> %val1, <2 x i32> %val2) {
1535  %cmp = icmp eq <2 x i32> %val1, %val2
1536  %v = zext <2 x i1> %cmp to <2 x i16>
1537  ret <2 x i16> %v
1538
1539; CHECK: fun153
1540; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
1541; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i16>
1542}
1543
1544define <2 x i32> @fun154(<2 x i32> %val1, <2 x i32> %val2) {
1545  %cmp = icmp eq <2 x i32> %val1, %val2
1546  %v = zext <2 x i1> %cmp to <2 x i32>
1547  ret <2 x i32> %v
1548
1549; CHECK: fun154
1550; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
1551; CHECK: cost of 1 for instruction:   %v = zext <2 x i1> %cmp to <2 x i32>
1552}
1553
1554define <2 x i64> @fun155(<2 x i32> %val1, <2 x i32> %val2) {
1555  %cmp = icmp eq <2 x i32> %val1, %val2
1556  %v = zext <2 x i1> %cmp to <2 x i64>
1557  ret <2 x i64> %v
1558
1559; CHECK: fun155
1560; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
1561; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i64>
1562}
1563
1564define <2 x i8> @fun156(<2 x i64> %val1, <2 x i64> %val2) {
1565  %cmp = icmp eq <2 x i64> %val1, %val2
1566  %v = zext <2 x i1> %cmp to <2 x i8>
1567  ret <2 x i8> %v
1568
1569; CHECK: fun156
1570; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
1571; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i8>
1572}
1573
1574define <2 x i16> @fun157(<2 x i64> %val1, <2 x i64> %val2) {
1575  %cmp = icmp eq <2 x i64> %val1, %val2
1576  %v = zext <2 x i1> %cmp to <2 x i16>
1577  ret <2 x i16> %v
1578
1579; CHECK: fun157
1580; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
1581; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i16>
1582}
1583
1584define <2 x i32> @fun158(<2 x i64> %val1, <2 x i64> %val2) {
1585  %cmp = icmp eq <2 x i64> %val1, %val2
1586  %v = zext <2 x i1> %cmp to <2 x i32>
1587  ret <2 x i32> %v
1588
1589; CHECK: fun158
1590; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
1591; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i32>
1592}
1593
1594define <2 x i64> @fun159(<2 x i64> %val1, <2 x i64> %val2) {
1595  %cmp = icmp eq <2 x i64> %val1, %val2
1596  %v = zext <2 x i1> %cmp to <2 x i64>
1597  ret <2 x i64> %v
1598
1599; CHECK: fun159
1600; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
1601; CHECK: cost of 1 for instruction:   %v = zext <2 x i1> %cmp to <2 x i64>
1602}
1603
1604define <2 x i8> @fun160(<2 x float> %val1, <2 x float> %val2) {
1605  %cmp = fcmp ogt <2 x float> %val1, %val2
1606  %v = zext <2 x i1> %cmp to <2 x i8>
1607  ret <2 x i8> %v
1608
1609; CHECK: fun160
1610; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
1611; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i8>
1612}
1613
1614define <2 x i16> @fun161(<2 x float> %val1, <2 x float> %val2) {
1615  %cmp = fcmp ogt <2 x float> %val1, %val2
1616  %v = zext <2 x i1> %cmp to <2 x i16>
1617  ret <2 x i16> %v
1618
1619; CHECK: fun161
1620; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
1621; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i16>
1622}
1623
1624define <2 x i32> @fun162(<2 x float> %val1, <2 x float> %val2) {
1625  %cmp = fcmp ogt <2 x float> %val1, %val2
1626  %v = zext <2 x i1> %cmp to <2 x i32>
1627  ret <2 x i32> %v
1628
1629; CHECK: fun162
1630; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
1631; CHECK: cost of 1 for instruction:   %v = zext <2 x i1> %cmp to <2 x i32>
1632}
1633
1634define <2 x i64> @fun163(<2 x float> %val1, <2 x float> %val2) {
1635  %cmp = fcmp ogt <2 x float> %val1, %val2
1636  %v = zext <2 x i1> %cmp to <2 x i64>
1637  ret <2 x i64> %v
1638
1639; CHECK: fun163
1640; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
1641; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i64>
1642}
1643
1644define <2 x i8> @fun164(<2 x double> %val1, <2 x double> %val2) {
1645  %cmp = fcmp ogt <2 x double> %val1, %val2
1646  %v = zext <2 x i1> %cmp to <2 x i8>
1647  ret <2 x i8> %v
1648
1649; CHECK: fun164
1650; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
1651; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i8>
1652}
1653
1654define <2 x i16> @fun165(<2 x double> %val1, <2 x double> %val2) {
1655  %cmp = fcmp ogt <2 x double> %val1, %val2
1656  %v = zext <2 x i1> %cmp to <2 x i16>
1657  ret <2 x i16> %v
1658
1659; CHECK: fun165
1660; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
1661; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i16>
1662}
1663
1664define <2 x i32> @fun166(<2 x double> %val1, <2 x double> %val2) {
1665  %cmp = fcmp ogt <2 x double> %val1, %val2
1666  %v = zext <2 x i1> %cmp to <2 x i32>
1667  ret <2 x i32> %v
1668
1669; CHECK: fun166
1670; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
1671; CHECK: cost of 2 for instruction:   %v = zext <2 x i1> %cmp to <2 x i32>
1672}
1673
1674define <2 x i64> @fun167(<2 x double> %val1, <2 x double> %val2) {
1675  %cmp = fcmp ogt <2 x double> %val1, %val2
1676  %v = zext <2 x i1> %cmp to <2 x i64>
1677  ret <2 x i64> %v
1678
1679; CHECK: fun167
1680; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
1681; CHECK: cost of 1 for instruction:   %v = zext <2 x i1> %cmp to <2 x i64>
1682}
1683
1684define <4 x i8> @fun168(<4 x i8> %val1, <4 x i8> %val2) {
1685  %cmp = icmp eq <4 x i8> %val1, %val2
1686  %v = zext <4 x i1> %cmp to <4 x i8>
1687  ret <4 x i8> %v
1688
1689; CHECK: fun168
1690; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
1691; CHECK: cost of 1 for instruction:   %v = zext <4 x i1> %cmp to <4 x i8>
1692}
1693
1694define <4 x i16> @fun169(<4 x i8> %val1, <4 x i8> %val2) {
1695  %cmp = icmp eq <4 x i8> %val1, %val2
1696  %v = zext <4 x i1> %cmp to <4 x i16>
1697  ret <4 x i16> %v
1698
1699; CHECK: fun169
1700; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
1701; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i16>
1702}
1703
1704define <4 x i32> @fun170(<4 x i8> %val1, <4 x i8> %val2) {
1705  %cmp = icmp eq <4 x i8> %val1, %val2
1706  %v = zext <4 x i1> %cmp to <4 x i32>
1707  ret <4 x i32> %v
1708
1709; CHECK: fun170
1710; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
1711; CHECK: cost of 3 for instruction:   %v = zext <4 x i1> %cmp to <4 x i32>
1712}
1713
1714define <4 x i64> @fun171(<4 x i8> %val1, <4 x i8> %val2) {
1715  %cmp = icmp eq <4 x i8> %val1, %val2
1716  %v = zext <4 x i1> %cmp to <4 x i64>
1717  ret <4 x i64> %v
1718
1719; CHECK: fun171
1720; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
1721; CHECK: cost of 9 for instruction:   %v = zext <4 x i1> %cmp to <4 x i64>
1722}
1723
1724define <4 x i8> @fun172(<4 x i16> %val1, <4 x i16> %val2) {
1725  %cmp = icmp eq <4 x i16> %val1, %val2
1726  %v = zext <4 x i1> %cmp to <4 x i8>
1727  ret <4 x i8> %v
1728
1729; CHECK: fun172
1730; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
1731; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i8>
1732}
1733
1734define <4 x i16> @fun173(<4 x i16> %val1, <4 x i16> %val2) {
1735  %cmp = icmp eq <4 x i16> %val1, %val2
1736  %v = zext <4 x i1> %cmp to <4 x i16>
1737  ret <4 x i16> %v
1738
1739; CHECK: fun173
1740; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
1741; CHECK: cost of 1 for instruction:   %v = zext <4 x i1> %cmp to <4 x i16>
1742}
1743
1744define <4 x i32> @fun174(<4 x i16> %val1, <4 x i16> %val2) {
1745  %cmp = icmp eq <4 x i16> %val1, %val2
1746  %v = zext <4 x i1> %cmp to <4 x i32>
1747  ret <4 x i32> %v
1748
1749; CHECK: fun174
1750; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
1751; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i32>
1752}
1753
1754define <4 x i64> @fun175(<4 x i16> %val1, <4 x i16> %val2) {
1755  %cmp = icmp eq <4 x i16> %val1, %val2
1756  %v = zext <4 x i1> %cmp to <4 x i64>
1757  ret <4 x i64> %v
1758
1759; CHECK: fun175
1760; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
1761; CHECK: cost of 7 for instruction:   %v = zext <4 x i1> %cmp to <4 x i64>
1762}
1763
1764define <4 x i8> @fun176(<4 x i32> %val1, <4 x i32> %val2) {
1765  %cmp = icmp eq <4 x i32> %val1, %val2
1766  %v = zext <4 x i1> %cmp to <4 x i8>
1767  ret <4 x i8> %v
1768
1769; CHECK: fun176
1770; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
1771; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i8>
1772}
1773
1774define <4 x i16> @fun177(<4 x i32> %val1, <4 x i32> %val2) {
1775  %cmp = icmp eq <4 x i32> %val1, %val2
1776  %v = zext <4 x i1> %cmp to <4 x i16>
1777  ret <4 x i16> %v
1778
1779; CHECK: fun177
1780; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
1781; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i16>
1782}
1783
1784define <4 x i32> @fun178(<4 x i32> %val1, <4 x i32> %val2) {
1785  %cmp = icmp eq <4 x i32> %val1, %val2
1786  %v = zext <4 x i1> %cmp to <4 x i32>
1787  ret <4 x i32> %v
1788
1789; CHECK: fun178
1790; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
1791; CHECK: cost of 1 for instruction:   %v = zext <4 x i1> %cmp to <4 x i32>
1792}
1793
1794define <4 x i64> @fun179(<4 x i32> %val1, <4 x i32> %val2) {
1795  %cmp = icmp eq <4 x i32> %val1, %val2
1796  %v = zext <4 x i1> %cmp to <4 x i64>
1797  ret <4 x i64> %v
1798
1799; CHECK: fun179
1800; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
1801; CHECK: cost of 5 for instruction:   %v = zext <4 x i1> %cmp to <4 x i64>
1802}
1803
1804define <4 x i8> @fun180(<4 x i64> %val1, <4 x i64> %val2) {
1805  %cmp = icmp eq <4 x i64> %val1, %val2
1806  %v = zext <4 x i1> %cmp to <4 x i8>
1807  ret <4 x i8> %v
1808
1809; CHECK: fun180
1810; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
1811; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i8>
1812}
1813
1814define <4 x i16> @fun181(<4 x i64> %val1, <4 x i64> %val2) {
1815  %cmp = icmp eq <4 x i64> %val1, %val2
1816  %v = zext <4 x i1> %cmp to <4 x i16>
1817  ret <4 x i16> %v
1818
1819; CHECK: fun181
1820; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
1821; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i16>
1822}
1823
1824define <4 x i32> @fun182(<4 x i64> %val1, <4 x i64> %val2) {
1825  %cmp = icmp eq <4 x i64> %val1, %val2
1826  %v = zext <4 x i1> %cmp to <4 x i32>
1827  ret <4 x i32> %v
1828
1829; CHECK: fun182
1830; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
1831; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i32>
1832}
1833
1834define <4 x i64> @fun183(<4 x i64> %val1, <4 x i64> %val2) {
1835  %cmp = icmp eq <4 x i64> %val1, %val2
1836  %v = zext <4 x i1> %cmp to <4 x i64>
1837  ret <4 x i64> %v
1838
1839; CHECK: fun183
1840; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
1841; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i64>
1842}
1843
1844define <4 x i8> @fun184(<4 x float> %val1, <4 x float> %val2) {
1845  %cmp = fcmp ogt <4 x float> %val1, %val2
1846  %v = zext <4 x i1> %cmp to <4 x i8>
1847  ret <4 x i8> %v
1848
1849; CHECK: fun184
1850; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
1851; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i8>
1852}
1853
1854define <4 x i16> @fun185(<4 x float> %val1, <4 x float> %val2) {
1855  %cmp = fcmp ogt <4 x float> %val1, %val2
1856  %v = zext <4 x i1> %cmp to <4 x i16>
1857  ret <4 x i16> %v
1858
1859; CHECK: fun185
1860; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
1861; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i16>
1862}
1863
1864define <4 x i32> @fun186(<4 x float> %val1, <4 x float> %val2) {
1865  %cmp = fcmp ogt <4 x float> %val1, %val2
1866  %v = zext <4 x i1> %cmp to <4 x i32>
1867  ret <4 x i32> %v
1868
1869; CHECK: fun186
1870; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
1871; CHECK: cost of 1 for instruction:   %v = zext <4 x i1> %cmp to <4 x i32>
1872}
1873
1874define <4 x i64> @fun187(<4 x float> %val1, <4 x float> %val2) {
1875  %cmp = fcmp ogt <4 x float> %val1, %val2
1876  %v = zext <4 x i1> %cmp to <4 x i64>
1877  ret <4 x i64> %v
1878
1879; CHECK: fun187
1880; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
1881; CHECK: cost of 5 for instruction:   %v = zext <4 x i1> %cmp to <4 x i64>
1882}
1883
1884define <4 x i8> @fun188(<4 x double> %val1, <4 x double> %val2) {
1885  %cmp = fcmp ogt <4 x double> %val1, %val2
1886  %v = zext <4 x i1> %cmp to <4 x i8>
1887  ret <4 x i8> %v
1888
1889; CHECK: fun188
1890; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
1891; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i8>
1892}
1893
1894define <4 x i16> @fun189(<4 x double> %val1, <4 x double> %val2) {
1895  %cmp = fcmp ogt <4 x double> %val1, %val2
1896  %v = zext <4 x i1> %cmp to <4 x i16>
1897  ret <4 x i16> %v
1898
1899; CHECK: fun189
1900; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
1901; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i16>
1902}
1903
1904define <4 x i32> @fun190(<4 x double> %val1, <4 x double> %val2) {
1905  %cmp = fcmp ogt <4 x double> %val1, %val2
1906  %v = zext <4 x i1> %cmp to <4 x i32>
1907  ret <4 x i32> %v
1908
1909; CHECK: fun190
1910; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
1911; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i32>
1912}
1913
1914define <4 x i64> @fun191(<4 x double> %val1, <4 x double> %val2) {
1915  %cmp = fcmp ogt <4 x double> %val1, %val2
1916  %v = zext <4 x i1> %cmp to <4 x i64>
1917  ret <4 x i64> %v
1918
1919; CHECK: fun191
1920; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
1921; CHECK: cost of 2 for instruction:   %v = zext <4 x i1> %cmp to <4 x i64>
1922}
1923
1924define <8 x i8> @fun192(<8 x i8> %val1, <8 x i8> %val2) {
1925  %cmp = icmp eq <8 x i8> %val1, %val2
1926  %v = zext <8 x i1> %cmp to <8 x i8>
1927  ret <8 x i8> %v
1928
1929; CHECK: fun192
1930; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
1931; CHECK: cost of 1 for instruction:   %v = zext <8 x i1> %cmp to <8 x i8>
1932}
1933
1934define <8 x i16> @fun193(<8 x i8> %val1, <8 x i8> %val2) {
1935  %cmp = icmp eq <8 x i8> %val1, %val2
1936  %v = zext <8 x i1> %cmp to <8 x i16>
1937  ret <8 x i16> %v
1938
1939; CHECK: fun193
1940; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
1941; CHECK: cost of 2 for instruction:   %v = zext <8 x i1> %cmp to <8 x i16>
1942}
1943
1944define <8 x i32> @fun194(<8 x i8> %val1, <8 x i8> %val2) {
1945  %cmp = icmp eq <8 x i8> %val1, %val2
1946  %v = zext <8 x i1> %cmp to <8 x i32>
1947  ret <8 x i32> %v
1948
1949; CHECK: fun194
1950; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
1951; CHECK: cost of 7 for instruction:   %v = zext <8 x i1> %cmp to <8 x i32>
1952}
1953
1954define <8 x i64> @fun195(<8 x i8> %val1, <8 x i8> %val2) {
1955  %cmp = icmp eq <8 x i8> %val1, %val2
1956  %v = zext <8 x i1> %cmp to <8 x i64>
1957  ret <8 x i64> %v
1958
1959; CHECK: fun195
1960; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
1961; CHECK: cost of 19 for instruction:   %v = zext <8 x i1> %cmp to <8 x i64>
1962}
1963
1964define <8 x i8> @fun196(<8 x i16> %val1, <8 x i16> %val2) {
1965  %cmp = icmp eq <8 x i16> %val1, %val2
1966  %v = zext <8 x i1> %cmp to <8 x i8>
1967  ret <8 x i8> %v
1968
1969; CHECK: fun196
1970; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
1971; CHECK: cost of 2 for instruction:   %v = zext <8 x i1> %cmp to <8 x i8>
1972}
1973
1974define <8 x i16> @fun197(<8 x i16> %val1, <8 x i16> %val2) {
1975  %cmp = icmp eq <8 x i16> %val1, %val2
1976  %v = zext <8 x i1> %cmp to <8 x i16>
1977  ret <8 x i16> %v
1978
1979; CHECK: fun197
1980; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
1981; CHECK: cost of 1 for instruction:   %v = zext <8 x i1> %cmp to <8 x i16>
1982}
1983
1984define <8 x i32> @fun198(<8 x i16> %val1, <8 x i16> %val2) {
1985  %cmp = icmp eq <8 x i16> %val1, %val2
1986  %v = zext <8 x i1> %cmp to <8 x i32>
1987  ret <8 x i32> %v
1988
1989; CHECK: fun198
1990; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
1991; CHECK: cost of 5 for instruction:   %v = zext <8 x i1> %cmp to <8 x i32>
1992}
1993
1994define <8 x i64> @fun199(<8 x i16> %val1, <8 x i16> %val2) {
1995  %cmp = icmp eq <8 x i16> %val1, %val2
1996  %v = zext <8 x i1> %cmp to <8 x i64>
1997  ret <8 x i64> %v
1998
1999; CHECK: fun199
2000; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
2001; CHECK: cost of 15 for instruction:   %v = zext <8 x i1> %cmp to <8 x i64>
2002}
2003
2004define <8 x i8> @fun200(<8 x i32> %val1, <8 x i32> %val2) {
2005  %cmp = icmp eq <8 x i32> %val1, %val2
2006  %v = zext <8 x i1> %cmp to <8 x i8>
2007  ret <8 x i8> %v
2008
2009; CHECK: fun200
2010; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
2011; CHECK: cost of 2 for instruction:   %v = zext <8 x i1> %cmp to <8 x i8>
2012}
2013
2014define <8 x i16> @fun201(<8 x i32> %val1, <8 x i32> %val2) {
2015  %cmp = icmp eq <8 x i32> %val1, %val2
2016  %v = zext <8 x i1> %cmp to <8 x i16>
2017  ret <8 x i16> %v
2018
2019; CHECK: fun201
2020; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
2021; CHECK: cost of 2 for instruction:   %v = zext <8 x i1> %cmp to <8 x i16>
2022}
2023
2024define <8 x i32> @fun202(<8 x i32> %val1, <8 x i32> %val2) {
2025  %cmp = icmp eq <8 x i32> %val1, %val2
2026  %v = zext <8 x i1> %cmp to <8 x i32>
2027  ret <8 x i32> %v
2028
2029; CHECK: fun202
2030; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
2031; CHECK: cost of 2 for instruction:   %v = zext <8 x i1> %cmp to <8 x i32>
2032}
2033
2034define <8 x i64> @fun203(<8 x i32> %val1, <8 x i32> %val2) {
2035  %cmp = icmp eq <8 x i32> %val1, %val2
2036  %v = zext <8 x i1> %cmp to <8 x i64>
2037  ret <8 x i64> %v
2038
2039; CHECK: fun203
2040; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
2041; CHECK: cost of 11 for instruction:   %v = zext <8 x i1> %cmp to <8 x i64>
2042}
2043
2044define <8 x i8> @fun204(<8 x i64> %val1, <8 x i64> %val2) {
2045  %cmp = icmp eq <8 x i64> %val1, %val2
2046  %v = zext <8 x i1> %cmp to <8 x i8>
2047  ret <8 x i8> %v
2048
2049; CHECK: fun204
2050; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
2051; CHECK: cost of 4 for instruction:   %v = zext <8 x i1> %cmp to <8 x i8>
2052}
2053
2054define <8 x i16> @fun205(<8 x i64> %val1, <8 x i64> %val2) {
2055  %cmp = icmp eq <8 x i64> %val1, %val2
2056  %v = zext <8 x i1> %cmp to <8 x i16>
2057  ret <8 x i16> %v
2058
2059; CHECK: fun205
2060; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
2061; CHECK: cost of 4 for instruction:   %v = zext <8 x i1> %cmp to <8 x i16>
2062}
2063
2064define <8 x i32> @fun206(<8 x i64> %val1, <8 x i64> %val2) {
2065  %cmp = icmp eq <8 x i64> %val1, %val2
2066  %v = zext <8 x i1> %cmp to <8 x i32>
2067  ret <8 x i32> %v
2068
2069; CHECK: fun206
2070; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
2071; CHECK: cost of 4 for instruction:   %v = zext <8 x i1> %cmp to <8 x i32>
2072}
2073
2074define <8 x i64> @fun207(<8 x i64> %val1, <8 x i64> %val2) {
2075  %cmp = icmp eq <8 x i64> %val1, %val2
2076  %v = zext <8 x i1> %cmp to <8 x i64>
2077  ret <8 x i64> %v
2078
2079; CHECK: fun207
2080; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
2081; CHECK: cost of 4 for instruction:   %v = zext <8 x i1> %cmp to <8 x i64>
2082}
2083
2084define <8 x i8> @fun208(<8 x float> %val1, <8 x float> %val2) {
2085  %cmp = fcmp ogt <8 x float> %val1, %val2
2086  %v = zext <8 x i1> %cmp to <8 x i8>
2087  ret <8 x i8> %v
2088
2089; CHECK: fun208
2090; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
2091; CHECK: cost of 2 for instruction:   %v = zext <8 x i1> %cmp to <8 x i8>
2092}
2093
2094define <8 x i16> @fun209(<8 x float> %val1, <8 x float> %val2) {
2095  %cmp = fcmp ogt <8 x float> %val1, %val2
2096  %v = zext <8 x i1> %cmp to <8 x i16>
2097  ret <8 x i16> %v
2098
2099; CHECK: fun209
2100; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
2101; CHECK: cost of 2 for instruction:   %v = zext <8 x i1> %cmp to <8 x i16>
2102}
2103
2104define <8 x i32> @fun210(<8 x float> %val1, <8 x float> %val2) {
2105  %cmp = fcmp ogt <8 x float> %val1, %val2
2106  %v = zext <8 x i1> %cmp to <8 x i32>
2107  ret <8 x i32> %v
2108
2109; CHECK: fun210
2110; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
2111; CHECK: cost of 2 for instruction:   %v = zext <8 x i1> %cmp to <8 x i32>
2112}
2113
2114define <8 x i64> @fun211(<8 x float> %val1, <8 x float> %val2) {
2115  %cmp = fcmp ogt <8 x float> %val1, %val2
2116  %v = zext <8 x i1> %cmp to <8 x i64>
2117  ret <8 x i64> %v
2118
2119; CHECK: fun211
2120; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
2121; CHECK: cost of 11 for instruction:   %v = zext <8 x i1> %cmp to <8 x i64>
2122}
2123
2124define <8 x i8> @fun212(<8 x double> %val1, <8 x double> %val2) {
2125  %cmp = fcmp ogt <8 x double> %val1, %val2
2126  %v = zext <8 x i1> %cmp to <8 x i8>
2127  ret <8 x i8> %v
2128
2129; CHECK: fun212
2130; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
2131; CHECK: cost of 4 for instruction:   %v = zext <8 x i1> %cmp to <8 x i8>
2132}
2133
2134define <8 x i16> @fun213(<8 x double> %val1, <8 x double> %val2) {
2135  %cmp = fcmp ogt <8 x double> %val1, %val2
2136  %v = zext <8 x i1> %cmp to <8 x i16>
2137  ret <8 x i16> %v
2138
2139; CHECK: fun213
2140; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
2141; CHECK: cost of 4 for instruction:   %v = zext <8 x i1> %cmp to <8 x i16>
2142}
2143
2144define <8 x i32> @fun214(<8 x double> %val1, <8 x double> %val2) {
2145  %cmp = fcmp ogt <8 x double> %val1, %val2
2146  %v = zext <8 x i1> %cmp to <8 x i32>
2147  ret <8 x i32> %v
2148
2149; CHECK: fun214
2150; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
2151; CHECK: cost of 4 for instruction:   %v = zext <8 x i1> %cmp to <8 x i32>
2152}
2153
2154define <8 x i64> @fun215(<8 x double> %val1, <8 x double> %val2) {
2155  %cmp = fcmp ogt <8 x double> %val1, %val2
2156  %v = zext <8 x i1> %cmp to <8 x i64>
2157  ret <8 x i64> %v
2158
2159; CHECK: fun215
2160; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
2161; CHECK: cost of 4 for instruction:   %v = zext <8 x i1> %cmp to <8 x i64>
2162}
2163
2164define <16 x i8> @fun216(<16 x i8> %val1, <16 x i8> %val2) {
2165  %cmp = icmp eq <16 x i8> %val1, %val2
2166  %v = zext <16 x i1> %cmp to <16 x i8>
2167  ret <16 x i8> %v
2168
2169; CHECK: fun216
2170; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
2171; CHECK: cost of 1 for instruction:   %v = zext <16 x i1> %cmp to <16 x i8>
2172}
2173
2174define <16 x i16> @fun217(<16 x i8> %val1, <16 x i8> %val2) {
2175  %cmp = icmp eq <16 x i8> %val1, %val2
2176  %v = zext <16 x i1> %cmp to <16 x i16>
2177  ret <16 x i16> %v
2178
2179; CHECK: fun217
2180; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
2181; CHECK: cost of 5 for instruction:   %v = zext <16 x i1> %cmp to <16 x i16>
2182}
2183
2184define <16 x i32> @fun218(<16 x i8> %val1, <16 x i8> %val2) {
2185  %cmp = icmp eq <16 x i8> %val1, %val2
2186  %v = zext <16 x i1> %cmp to <16 x i32>
2187  ret <16 x i32> %v
2188
2189; CHECK: fun218
2190; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
2191; CHECK: cost of 15 for instruction:   %v = zext <16 x i1> %cmp to <16 x i32>
2192}
2193
2194define <16 x i64> @fun219(<16 x i8> %val1, <16 x i8> %val2) {
2195  %cmp = icmp eq <16 x i8> %val1, %val2
2196  %v = zext <16 x i1> %cmp to <16 x i64>
2197  ret <16 x i64> %v
2198
2199; CHECK: fun219
2200; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
2201; CHECK: cost of 39 for instruction:   %v = zext <16 x i1> %cmp to <16 x i64>
2202}
2203
2204define <16 x i8> @fun220(<16 x i16> %val1, <16 x i16> %val2) {
2205  %cmp = icmp eq <16 x i16> %val1, %val2
2206  %v = zext <16 x i1> %cmp to <16 x i8>
2207  ret <16 x i8> %v
2208
2209; CHECK: fun220
2210; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
2211; CHECK: cost of 2 for instruction:   %v = zext <16 x i1> %cmp to <16 x i8>
2212}
2213
2214define <16 x i16> @fun221(<16 x i16> %val1, <16 x i16> %val2) {
2215  %cmp = icmp eq <16 x i16> %val1, %val2
2216  %v = zext <16 x i1> %cmp to <16 x i16>
2217  ret <16 x i16> %v
2218
2219; CHECK: fun221
2220; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
2221; CHECK: cost of 2 for instruction:   %v = zext <16 x i1> %cmp to <16 x i16>
2222}
2223
2224define <16 x i32> @fun222(<16 x i16> %val1, <16 x i16> %val2) {
2225  %cmp = icmp eq <16 x i16> %val1, %val2
2226  %v = zext <16 x i1> %cmp to <16 x i32>
2227  ret <16 x i32> %v
2228
2229; CHECK: fun222
2230; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
2231; CHECK: cost of 11 for instruction:   %v = zext <16 x i1> %cmp to <16 x i32>
2232}
2233
2234define <16 x i64> @fun223(<16 x i16> %val1, <16 x i16> %val2) {
2235  %cmp = icmp eq <16 x i16> %val1, %val2
2236  %v = zext <16 x i1> %cmp to <16 x i64>
2237  ret <16 x i64> %v
2238
2239; CHECK: fun223
2240; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
2241; CHECK: cost of 31 for instruction:   %v = zext <16 x i1> %cmp to <16 x i64>
2242}
2243
2244define <16 x i8> @fun224(<16 x i32> %val1, <16 x i32> %val2) {
2245  %cmp = icmp eq <16 x i32> %val1, %val2
2246  %v = zext <16 x i1> %cmp to <16 x i8>
2247  ret <16 x i8> %v
2248
2249; CHECK: fun224
2250; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
2251; CHECK: cost of 4 for instruction:   %v = zext <16 x i1> %cmp to <16 x i8>
2252}
2253
2254define <16 x i16> @fun225(<16 x i32> %val1, <16 x i32> %val2) {
2255  %cmp = icmp eq <16 x i32> %val1, %val2
2256  %v = zext <16 x i1> %cmp to <16 x i16>
2257  ret <16 x i16> %v
2258
2259; CHECK: fun225
2260; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
2261; CHECK: cost of 4 for instruction:   %v = zext <16 x i1> %cmp to <16 x i16>
2262}
2263
2264define <16 x i32> @fun226(<16 x i32> %val1, <16 x i32> %val2) {
2265  %cmp = icmp eq <16 x i32> %val1, %val2
2266  %v = zext <16 x i1> %cmp to <16 x i32>
2267  ret <16 x i32> %v
2268
2269; CHECK: fun226
2270; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
2271; CHECK: cost of 4 for instruction:   %v = zext <16 x i1> %cmp to <16 x i32>
2272}
2273
2274define <16 x i64> @fun227(<16 x i32> %val1, <16 x i32> %val2) {
2275  %cmp = icmp eq <16 x i32> %val1, %val2
2276  %v = zext <16 x i1> %cmp to <16 x i64>
2277  ret <16 x i64> %v
2278
2279; CHECK: fun227
2280; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
2281; CHECK: cost of 23 for instruction:   %v = zext <16 x i1> %cmp to <16 x i64>
2282}
2283
2284define <16 x i8> @fun228(<16 x i64> %val1, <16 x i64> %val2) {
2285  %cmp = icmp eq <16 x i64> %val1, %val2
2286  %v = zext <16 x i1> %cmp to <16 x i8>
2287  ret <16 x i8> %v
2288
2289; CHECK: fun228
2290; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
2291; CHECK: cost of 8 for instruction:   %v = zext <16 x i1> %cmp to <16 x i8>
2292}
2293
2294define <16 x i16> @fun229(<16 x i64> %val1, <16 x i64> %val2) {
2295  %cmp = icmp eq <16 x i64> %val1, %val2
2296  %v = zext <16 x i1> %cmp to <16 x i16>
2297  ret <16 x i16> %v
2298
2299; CHECK: fun229
2300; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
2301; CHECK: cost of 8 for instruction:   %v = zext <16 x i1> %cmp to <16 x i16>
2302}
2303
2304define <16 x i32> @fun230(<16 x i64> %val1, <16 x i64> %val2) {
2305  %cmp = icmp eq <16 x i64> %val1, %val2
2306  %v = zext <16 x i1> %cmp to <16 x i32>
2307  ret <16 x i32> %v
2308
2309; CHECK: fun230
2310; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
2311; CHECK: cost of 8 for instruction:   %v = zext <16 x i1> %cmp to <16 x i32>
2312}
2313
2314define <16 x i64> @fun231(<16 x i64> %val1, <16 x i64> %val2) {
2315  %cmp = icmp eq <16 x i64> %val1, %val2
2316  %v = zext <16 x i1> %cmp to <16 x i64>
2317  ret <16 x i64> %v
2318
2319; CHECK: fun231
2320; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
2321; CHECK: cost of 8 for instruction:   %v = zext <16 x i1> %cmp to <16 x i64>
2322}
2323
2324define <16 x i8> @fun232(<16 x float> %val1, <16 x float> %val2) {
2325  %cmp = fcmp ogt <16 x float> %val1, %val2
2326  %v = zext <16 x i1> %cmp to <16 x i8>
2327  ret <16 x i8> %v
2328
2329; CHECK: fun232
2330; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
2331; CHECK: cost of 4 for instruction:   %v = zext <16 x i1> %cmp to <16 x i8>
2332}
2333
2334define <16 x i16> @fun233(<16 x float> %val1, <16 x float> %val2) {
2335  %cmp = fcmp ogt <16 x float> %val1, %val2
2336  %v = zext <16 x i1> %cmp to <16 x i16>
2337  ret <16 x i16> %v
2338
2339; CHECK: fun233
2340; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
2341; CHECK: cost of 4 for instruction:   %v = zext <16 x i1> %cmp to <16 x i16>
2342}
2343
2344define <16 x i32> @fun234(<16 x float> %val1, <16 x float> %val2) {
2345  %cmp = fcmp ogt <16 x float> %val1, %val2
2346  %v = zext <16 x i1> %cmp to <16 x i32>
2347  ret <16 x i32> %v
2348
2349; CHECK: fun234
2350; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
2351; CHECK: cost of 4 for instruction:   %v = zext <16 x i1> %cmp to <16 x i32>
2352}
2353
2354define <16 x i64> @fun235(<16 x float> %val1, <16 x float> %val2) {
2355  %cmp = fcmp ogt <16 x float> %val1, %val2
2356  %v = zext <16 x i1> %cmp to <16 x i64>
2357  ret <16 x i64> %v
2358
2359; CHECK: fun235
2360; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
2361; CHECK: cost of 23 for instruction:   %v = zext <16 x i1> %cmp to <16 x i64>
2362}
2363
2364define <16 x i8> @fun236(<16 x double> %val1, <16 x double> %val2) {
2365  %cmp = fcmp ogt <16 x double> %val1, %val2
2366  %v = zext <16 x i1> %cmp to <16 x i8>
2367  ret <16 x i8> %v
2368
2369; CHECK: fun236
2370; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
2371; CHECK: cost of 8 for instruction:   %v = zext <16 x i1> %cmp to <16 x i8>
2372}
2373
2374define <16 x i16> @fun237(<16 x double> %val1, <16 x double> %val2) {
2375  %cmp = fcmp ogt <16 x double> %val1, %val2
2376  %v = zext <16 x i1> %cmp to <16 x i16>
2377  ret <16 x i16> %v
2378
2379; CHECK: fun237
2380; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
2381; CHECK: cost of 8 for instruction:   %v = zext <16 x i1> %cmp to <16 x i16>
2382}
2383
2384define <16 x i32> @fun238(<16 x double> %val1, <16 x double> %val2) {
2385  %cmp = fcmp ogt <16 x double> %val1, %val2
2386  %v = zext <16 x i1> %cmp to <16 x i32>
2387  ret <16 x i32> %v
2388
2389; CHECK: fun238
2390; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
2391; CHECK: cost of 8 for instruction:   %v = zext <16 x i1> %cmp to <16 x i32>
2392}
2393
2394define <16 x i64> @fun239(<16 x double> %val1, <16 x double> %val2) {
2395  %cmp = fcmp ogt <16 x double> %val1, %val2
2396  %v = zext <16 x i1> %cmp to <16 x i64>
2397  ret <16 x i64> %v
2398
2399; CHECK: fun239
2400; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
2401; CHECK: cost of 8 for instruction:   %v = zext <16 x i1> %cmp to <16 x i64>
2402}
2403
2404