1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2;
3; Test that vector compare / select combinations do not produce any
4; unnecessary pack /unpack / shift instructions.
5;
6; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
7
8
9define <2 x i8> @fun0(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4) {
10; CHECK-LABEL: fun0:
11; CHECK:       # BB#0:
12; CHECK-NEXT:    vceqb %v0, %v24, %v26
13; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
14; CHECK-NEXT:    br %r14
15  %cmp = icmp eq <2 x i8> %val1, %val2
16  %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
17  ret <2 x i8> %sel
18}
19
20define <2 x i16> @fun1(<2 x i8> %val1, <2 x i8> %val2, <2 x i16> %val3, <2 x i16> %val4) {
21; CHECK-LABEL: fun1:
22; CHECK:       # BB#0:
23; CHECK-NEXT:    vceqb %v0, %v24, %v26
24; CHECK-NEXT:    vuphb %v0, %v0
25; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
26; CHECK-NEXT:    br %r14
27  %cmp = icmp eq <2 x i8> %val1, %val2
28  %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
29  ret <2 x i16> %sel
30}
31
32define <2 x i32> @fun2(<2 x i8> %val1, <2 x i8> %val2, <2 x i32> %val3, <2 x i32> %val4) {
33; CHECK-LABEL: fun2:
34; CHECK:       # BB#0:
35; CHECK-NEXT:    vceqb %v0, %v24, %v26
36; CHECK-NEXT:    vuphb %v0, %v0
37; CHECK-NEXT:    vuphh %v0, %v0
38; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
39; CHECK-NEXT:    br %r14
40  %cmp = icmp eq <2 x i8> %val1, %val2
41  %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
42  ret <2 x i32> %sel
43}
44
45define <2 x i64> @fun3(<2 x i8> %val1, <2 x i8> %val2, <2 x i64> %val3, <2 x i64> %val4) {
46; CHECK-LABEL: fun3:
47; CHECK:       # BB#0:
48; CHECK-NEXT:    vceqb %v0, %v24, %v26
49; CHECK-NEXT:    vuphb %v0, %v0
50; CHECK-NEXT:    vuphh %v0, %v0
51; CHECK-NEXT:    vuphf %v0, %v0
52; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
53; CHECK-NEXT:    br %r14
54  %cmp = icmp eq <2 x i8> %val1, %val2
55  %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
56  ret <2 x i64> %sel
57}
58
59define <2 x float> @fun4(<2 x i8> %val1, <2 x i8> %val2, <2 x float> %val3, <2 x float> %val4) {
60; CHECK-LABEL: fun4:
61; CHECK:       # BB#0:
62; CHECK-NEXT:    vceqb %v0, %v24, %v26
63; CHECK-NEXT:    vuphb %v0, %v0
64; CHECK-NEXT:    vuphh %v0, %v0
65; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
66; CHECK-NEXT:    br %r14
67  %cmp = icmp eq <2 x i8> %val1, %val2
68  %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
69  ret <2 x float> %sel
70}
71
72define <2 x double> @fun5(<2 x i8> %val1, <2 x i8> %val2, <2 x double> %val3, <2 x double> %val4) {
73; CHECK-LABEL: fun5:
74; CHECK:       # BB#0:
75; CHECK-NEXT:    vceqb %v0, %v24, %v26
76; CHECK-NEXT:    vuphb %v0, %v0
77; CHECK-NEXT:    vuphh %v0, %v0
78; CHECK-NEXT:    vuphf %v0, %v0
79; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
80; CHECK-NEXT:    br %r14
81  %cmp = icmp eq <2 x i8> %val1, %val2
82  %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
83  ret <2 x double> %sel
84}
85
86define <2 x i8> @fun6(<2 x i16> %val1, <2 x i16> %val2, <2 x i8> %val3, <2 x i8> %val4) {
87; CHECK-LABEL: fun6:
88; CHECK:       # BB#0:
89; CHECK-NEXT:    vceqh %v0, %v24, %v26
90; CHECK-NEXT:    vpkh %v0, %v0, %v0
91; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
92; CHECK-NEXT:    br %r14
93  %cmp = icmp eq <2 x i16> %val1, %val2
94  %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
95  ret <2 x i8> %sel
96}
97
98define <2 x i16> @fun7(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4) {
99; CHECK-LABEL: fun7:
100; CHECK:       # BB#0:
101; CHECK-NEXT:    vceqh %v0, %v24, %v26
102; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
103; CHECK-NEXT:    br %r14
104  %cmp = icmp eq <2 x i16> %val1, %val2
105  %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
106  ret <2 x i16> %sel
107}
108
109define <2 x i32> @fun8(<2 x i16> %val1, <2 x i16> %val2, <2 x i32> %val3, <2 x i32> %val4) {
110; CHECK-LABEL: fun8:
111; CHECK:       # BB#0:
112; CHECK-NEXT:    vceqh %v0, %v24, %v26
113; CHECK-NEXT:    vuphh %v0, %v0
114; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
115; CHECK-NEXT:    br %r14
116  %cmp = icmp eq <2 x i16> %val1, %val2
117  %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
118  ret <2 x i32> %sel
119}
120
121define <2 x i64> @fun9(<2 x i16> %val1, <2 x i16> %val2, <2 x i64> %val3, <2 x i64> %val4) {
122; CHECK-LABEL: fun9:
123; CHECK:       # BB#0:
124; CHECK-NEXT:    vceqh %v0, %v24, %v26
125; CHECK-NEXT:    vuphh %v0, %v0
126; CHECK-NEXT:    vuphf %v0, %v0
127; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
128; CHECK-NEXT:    br %r14
129  %cmp = icmp eq <2 x i16> %val1, %val2
130  %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
131  ret <2 x i64> %sel
132}
133
134define <2 x float> @fun10(<2 x i16> %val1, <2 x i16> %val2, <2 x float> %val3, <2 x float> %val4) {
135; CHECK-LABEL: fun10:
136; CHECK:       # BB#0:
137; CHECK-NEXT:    vceqh %v0, %v24, %v26
138; CHECK-NEXT:    vuphh %v0, %v0
139; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
140; CHECK-NEXT:    br %r14
141  %cmp = icmp eq <2 x i16> %val1, %val2
142  %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
143  ret <2 x float> %sel
144}
145
146define <2 x double> @fun11(<2 x i16> %val1, <2 x i16> %val2, <2 x double> %val3, <2 x double> %val4) {
147; CHECK-LABEL: fun11:
148; CHECK:       # BB#0:
149; CHECK-NEXT:    vceqh %v0, %v24, %v26
150; CHECK-NEXT:    vuphh %v0, %v0
151; CHECK-NEXT:    vuphf %v0, %v0
152; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
153; CHECK-NEXT:    br %r14
154  %cmp = icmp eq <2 x i16> %val1, %val2
155  %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
156  ret <2 x double> %sel
157}
158
159define <2 x i8> @fun12(<2 x i32> %val1, <2 x i32> %val2, <2 x i8> %val3, <2 x i8> %val4) {
160; CHECK-LABEL: fun12:
161; CHECK:       # BB#0:
162; CHECK-NEXT:    larl %r1, .LCPI12_0
163; CHECK-NEXT:    vl %v1, 0(%r1)
164; CHECK-NEXT:    vceqf %v0, %v24, %v26
165; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
166; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
167; CHECK-NEXT:    br %r14
168  %cmp = icmp eq <2 x i32> %val1, %val2
169  %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
170  ret <2 x i8> %sel
171}
172
173define <2 x i16> @fun13(<2 x i32> %val1, <2 x i32> %val2, <2 x i16> %val3, <2 x i16> %val4) {
174; CHECK-LABEL: fun13:
175; CHECK:       # BB#0:
176; CHECK-NEXT:    vceqf %v0, %v24, %v26
177; CHECK-NEXT:    vpkf %v0, %v0, %v0
178; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
179; CHECK-NEXT:    br %r14
180  %cmp = icmp eq <2 x i32> %val1, %val2
181  %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
182  ret <2 x i16> %sel
183}
184
185define <2 x i32> @fun14(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4) {
186; CHECK-LABEL: fun14:
187; CHECK:       # BB#0:
188; CHECK-NEXT:    vceqf %v0, %v24, %v26
189; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
190; CHECK-NEXT:    br %r14
191  %cmp = icmp eq <2 x i32> %val1, %val2
192  %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
193  ret <2 x i32> %sel
194}
195
196define <2 x i64> @fun15(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4) {
197; CHECK-LABEL: fun15:
198; CHECK:       # BB#0:
199; CHECK-NEXT:    vceqf %v0, %v24, %v26
200; CHECK-NEXT:    vuphf %v0, %v0
201; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
202; CHECK-NEXT:    br %r14
203  %cmp = icmp eq <2 x i32> %val1, %val2
204  %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
205  ret <2 x i64> %sel
206}
207
208define <2 x float> @fun16(<2 x i32> %val1, <2 x i32> %val2, <2 x float> %val3, <2 x float> %val4) {
209; CHECK-LABEL: fun16:
210; CHECK:       # BB#0:
211; CHECK-NEXT:    vceqf %v0, %v24, %v26
212; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
213; CHECK-NEXT:    br %r14
214  %cmp = icmp eq <2 x i32> %val1, %val2
215  %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
216  ret <2 x float> %sel
217}
218
219define <2 x double> @fun17(<2 x i32> %val1, <2 x i32> %val2, <2 x double> %val3, <2 x double> %val4) {
220; CHECK-LABEL: fun17:
221; CHECK:       # BB#0:
222; CHECK-NEXT:    vceqf %v0, %v24, %v26
223; CHECK-NEXT:    vuphf %v0, %v0
224; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
225; CHECK-NEXT:    br %r14
226  %cmp = icmp eq <2 x i32> %val1, %val2
227  %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
228  ret <2 x double> %sel
229}
230
231define <2 x i8> @fun18(<2 x i64> %val1, <2 x i64> %val2, <2 x i8> %val3, <2 x i8> %val4) {
232; CHECK-LABEL: fun18:
233; CHECK:       # BB#0:
234; CHECK-NEXT:    vceqg %v0, %v24, %v26
235; CHECK-NEXT:    vrepih %v1, 1807
236; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
237; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
238; CHECK-NEXT:    br %r14
239  %cmp = icmp eq <2 x i64> %val1, %val2
240  %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
241  ret <2 x i8> %sel
242}
243
244define <2 x i16> @fun19(<2 x i64> %val1, <2 x i64> %val2, <2 x i16> %val3, <2 x i16> %val4) {
245; CHECK-LABEL: fun19:
246; CHECK:       # BB#0:
247; CHECK-NEXT:    larl %r1, .LCPI19_0
248; CHECK-NEXT:    vl %v1, 0(%r1)
249; CHECK-NEXT:    vceqg %v0, %v24, %v26
250; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
251; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
252; CHECK-NEXT:    br %r14
253  %cmp = icmp eq <2 x i64> %val1, %val2
254  %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
255  ret <2 x i16> %sel
256}
257
258define <2 x i32> @fun20(<2 x i64> %val1, <2 x i64> %val2, <2 x i32> %val3, <2 x i32> %val4) {
259; CHECK-LABEL: fun20:
260; CHECK:       # BB#0:
261; CHECK-NEXT:    vceqg %v0, %v24, %v26
262; CHECK-NEXT:    vpkg %v0, %v0, %v0
263; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
264; CHECK-NEXT:    br %r14
265  %cmp = icmp eq <2 x i64> %val1, %val2
266  %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
267  ret <2 x i32> %sel
268}
269
270define <2 x i64> @fun21(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4) {
271; CHECK-LABEL: fun21:
272; CHECK:       # BB#0:
273; CHECK-NEXT:    vceqg %v0, %v24, %v26
274; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
275; CHECK-NEXT:    br %r14
276  %cmp = icmp eq <2 x i64> %val1, %val2
277  %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
278  ret <2 x i64> %sel
279}
280
281define <2 x float> @fun22(<2 x i64> %val1, <2 x i64> %val2, <2 x float> %val3, <2 x float> %val4) {
282; CHECK-LABEL: fun22:
283; CHECK:       # BB#0:
284; CHECK-NEXT:    vceqg %v0, %v24, %v26
285; CHECK-NEXT:    vpkg %v0, %v0, %v0
286; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
287; CHECK-NEXT:    br %r14
288  %cmp = icmp eq <2 x i64> %val1, %val2
289  %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
290  ret <2 x float> %sel
291}
292
293define <2 x double> @fun23(<2 x i64> %val1, <2 x i64> %val2, <2 x double> %val3, <2 x double> %val4) {
294; CHECK-LABEL: fun23:
295; CHECK:       # BB#0:
296; CHECK-NEXT:    vceqg %v0, %v24, %v26
297; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
298; CHECK-NEXT:    br %r14
299  %cmp = icmp eq <2 x i64> %val1, %val2
300  %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
301  ret <2 x double> %sel
302}
303
304define <4 x i8> @fun24(<4 x i8> %val1, <4 x i8> %val2, <4 x i8> %val3, <4 x i8> %val4) {
305; CHECK-LABEL: fun24:
306; CHECK:       # BB#0:
307; CHECK-NEXT:    vceqb %v0, %v24, %v26
308; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
309; CHECK-NEXT:    br %r14
310  %cmp = icmp eq <4 x i8> %val1, %val2
311  %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
312  ret <4 x i8> %sel
313}
314
315define <4 x i16> @fun25(<4 x i8> %val1, <4 x i8> %val2, <4 x i16> %val3, <4 x i16> %val4) {
316; CHECK-LABEL: fun25:
317; CHECK:       # BB#0:
318; CHECK-NEXT:    vceqb %v0, %v24, %v26
319; CHECK-NEXT:    vuphb %v0, %v0
320; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
321; CHECK-NEXT:    br %r14
322  %cmp = icmp eq <4 x i8> %val1, %val2
323  %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
324  ret <4 x i16> %sel
325}
326
327define <4 x i32> @fun26(<4 x i8> %val1, <4 x i8> %val2, <4 x i32> %val3, <4 x i32> %val4) {
328; CHECK-LABEL: fun26:
329; CHECK:       # BB#0:
330; CHECK-NEXT:    vceqb %v0, %v24, %v26
331; CHECK-NEXT:    vuphb %v0, %v0
332; CHECK-NEXT:    vuphh %v0, %v0
333; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
334; CHECK-NEXT:    br %r14
335  %cmp = icmp eq <4 x i8> %val1, %val2
336  %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
337  ret <4 x i32> %sel
338}
339
340define <4 x i64> @fun27(<4 x i8> %val1, <4 x i8> %val2, <4 x i64> %val3, <4 x i64> %val4) {
341; CHECK-LABEL: fun27:
342; CHECK:       # BB#0:
343; CHECK-NEXT:    vceqb %v0, %v24, %v26
344; CHECK-NEXT:    vuphb %v1, %v0
345; CHECK-NEXT:    vpkf %v0, %v0, %v0
346; CHECK-NEXT:    vuphb %v0, %v0
347; CHECK-NEXT:    vuphh %v1, %v1
348; CHECK-NEXT:    vuphh %v0, %v0
349; CHECK-NEXT:    vuphf %v1, %v1
350; CHECK-NEXT:    vuphf %v0, %v0
351; CHECK-NEXT:    vsel %v24, %v28, %v25, %v1
352; CHECK-NEXT:    vsel %v26, %v30, %v27, %v0
353; CHECK-NEXT:    br %r14
354  %cmp = icmp eq <4 x i8> %val1, %val2
355  %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
356  ret <4 x i64> %sel
357}
358
359define <4 x float> @fun28(<4 x i8> %val1, <4 x i8> %val2, <4 x float> %val3, <4 x float> %val4) {
360; CHECK-LABEL: fun28:
361; CHECK:       # BB#0:
362; CHECK-NEXT:    vceqb %v0, %v24, %v26
363; CHECK-NEXT:    vuphb %v0, %v0
364; CHECK-NEXT:    vuphh %v0, %v0
365; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
366; CHECK-NEXT:    br %r14
367  %cmp = icmp eq <4 x i8> %val1, %val2
368  %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
369  ret <4 x float> %sel
370}
371
372define <4 x double> @fun29(<4 x i8> %val1, <4 x i8> %val2, <4 x double> %val3, <4 x double> %val4) {
373; CHECK-LABEL: fun29:
374; CHECK:       # BB#0:
375; CHECK-NEXT:    vceqb %v0, %v24, %v26
376; CHECK-NEXT:    vuphb %v1, %v0
377; CHECK-NEXT:    vpkf %v0, %v0, %v0
378; CHECK-NEXT:    vuphb %v0, %v0
379; CHECK-NEXT:    vuphh %v1, %v1
380; CHECK-NEXT:    vuphh %v0, %v0
381; CHECK-NEXT:    vuphf %v1, %v1
382; CHECK-NEXT:    vuphf %v0, %v0
383; CHECK-NEXT:    vsel %v24, %v28, %v25, %v1
384; CHECK-NEXT:    vsel %v26, %v30, %v27, %v0
385; CHECK-NEXT:    br %r14
386  %cmp = icmp eq <4 x i8> %val1, %val2
387  %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
388  ret <4 x double> %sel
389}
390
391define <4 x i8> @fun30(<4 x i16> %val1, <4 x i16> %val2, <4 x i8> %val3, <4 x i8> %val4) {
392; CHECK-LABEL: fun30:
393; CHECK:       # BB#0:
394; CHECK-NEXT:    vceqh %v0, %v24, %v26
395; CHECK-NEXT:    vpkh %v0, %v0, %v0
396; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
397; CHECK-NEXT:    br %r14
398  %cmp = icmp eq <4 x i16> %val1, %val2
399  %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
400  ret <4 x i8> %sel
401}
402
403define <4 x i16> @fun31(<4 x i16> %val1, <4 x i16> %val2, <4 x i16> %val3, <4 x i16> %val4) {
404; CHECK-LABEL: fun31:
405; CHECK:       # BB#0:
406; CHECK-NEXT:    vceqh %v0, %v24, %v26
407; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
408; CHECK-NEXT:    br %r14
409  %cmp = icmp eq <4 x i16> %val1, %val2
410  %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
411  ret <4 x i16> %sel
412}
413
414define <4 x i32> @fun32(<4 x i16> %val1, <4 x i16> %val2, <4 x i32> %val3, <4 x i32> %val4) {
415; CHECK-LABEL: fun32:
416; CHECK:       # BB#0:
417; CHECK-NEXT:    vceqh %v0, %v24, %v26
418; CHECK-NEXT:    vuphh %v0, %v0
419; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
420; CHECK-NEXT:    br %r14
421  %cmp = icmp eq <4 x i16> %val1, %val2
422  %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
423  ret <4 x i32> %sel
424}
425
426define <4 x i64> @fun33(<4 x i16> %val1, <4 x i16> %val2, <4 x i64> %val3, <4 x i64> %val4) {
427; CHECK-LABEL: fun33:
428; CHECK:       # BB#0:
429; CHECK-NEXT:    vceqh %v0, %v24, %v26
430; CHECK-NEXT:    vuphh %v1, %v0
431; CHECK-NEXT:    vpkg %v0, %v0, %v0
432; CHECK-NEXT:    vuphh %v0, %v0
433; CHECK-NEXT:    vuphf %v1, %v1
434; CHECK-NEXT:    vuphf %v0, %v0
435; CHECK-NEXT:    vsel %v24, %v28, %v25, %v1
436; CHECK-NEXT:    vsel %v26, %v30, %v27, %v0
437; CHECK-NEXT:    br %r14
438  %cmp = icmp eq <4 x i16> %val1, %val2
439  %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
440  ret <4 x i64> %sel
441}
442
443define <4 x float> @fun34(<4 x i16> %val1, <4 x i16> %val2, <4 x float> %val3, <4 x float> %val4) {
444; CHECK-LABEL: fun34:
445; CHECK:       # BB#0:
446; CHECK-NEXT:    vceqh %v0, %v24, %v26
447; CHECK-NEXT:    vuphh %v0, %v0
448; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
449; CHECK-NEXT:    br %r14
450  %cmp = icmp eq <4 x i16> %val1, %val2
451  %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
452  ret <4 x float> %sel
453}
454
455define <4 x double> @fun35(<4 x i16> %val1, <4 x i16> %val2, <4 x double> %val3, <4 x double> %val4) {
456; CHECK-LABEL: fun35:
457; CHECK:       # BB#0:
458; CHECK-NEXT:    vceqh %v0, %v24, %v26
459; CHECK-NEXT:    vuphh %v1, %v0
460; CHECK-NEXT:    vpkg %v0, %v0, %v0
461; CHECK-NEXT:    vuphh %v0, %v0
462; CHECK-NEXT:    vuphf %v1, %v1
463; CHECK-NEXT:    vuphf %v0, %v0
464; CHECK-NEXT:    vsel %v24, %v28, %v25, %v1
465; CHECK-NEXT:    vsel %v26, %v30, %v27, %v0
466; CHECK-NEXT:    br %r14
467  %cmp = icmp eq <4 x i16> %val1, %val2
468  %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
469  ret <4 x double> %sel
470}
471
472define <4 x i8> @fun36(<4 x i32> %val1, <4 x i32> %val2, <4 x i8> %val3, <4 x i8> %val4) {
473; CHECK-LABEL: fun36:
474; CHECK:       # BB#0:
475; CHECK-NEXT:    larl %r1, .LCPI36_0
476; CHECK-NEXT:    vl %v1, 0(%r1)
477; CHECK-NEXT:    vceqf %v0, %v24, %v26
478; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
479; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
480; CHECK-NEXT:    br %r14
481  %cmp = icmp eq <4 x i32> %val1, %val2
482  %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
483  ret <4 x i8> %sel
484}
485
486define <4 x i16> @fun37(<4 x i32> %val1, <4 x i32> %val2, <4 x i16> %val3, <4 x i16> %val4) {
487; CHECK-LABEL: fun37:
488; CHECK:       # BB#0:
489; CHECK-NEXT:    vceqf %v0, %v24, %v26
490; CHECK-NEXT:    vpkf %v0, %v0, %v0
491; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
492; CHECK-NEXT:    br %r14
493  %cmp = icmp eq <4 x i32> %val1, %val2
494  %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
495  ret <4 x i16> %sel
496}
497
498define <4 x i32> @fun38(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4) {
499; CHECK-LABEL: fun38:
500; CHECK:       # BB#0:
501; CHECK-NEXT:    vceqf %v0, %v24, %v26
502; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
503; CHECK-NEXT:    br %r14
504  %cmp = icmp eq <4 x i32> %val1, %val2
505  %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
506  ret <4 x i32> %sel
507}
508
509define <4 x i64> @fun39(<4 x i32> %val1, <4 x i32> %val2, <4 x i64> %val3, <4 x i64> %val4) {
510; CHECK-LABEL: fun39:
511; CHECK:       # BB#0:
512; CHECK-NEXT:    vceqf %v0, %v24, %v26
513; CHECK-NEXT:    vuphf %v1, %v0
514; CHECK-NEXT:    vmrlg %v0, %v0, %v0
515; CHECK-NEXT:    vuphf %v0, %v0
516; CHECK-NEXT:    vsel %v24, %v28, %v25, %v1
517; CHECK-NEXT:    vsel %v26, %v30, %v27, %v0
518; CHECK-NEXT:    br %r14
519  %cmp = icmp eq <4 x i32> %val1, %val2
520  %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
521  ret <4 x i64> %sel
522}
523
524define <4 x float> @fun40(<4 x i32> %val1, <4 x i32> %val2, <4 x float> %val3, <4 x float> %val4) {
525; CHECK-LABEL: fun40:
526; CHECK:       # BB#0:
527; CHECK-NEXT:    vceqf %v0, %v24, %v26
528; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
529; CHECK-NEXT:    br %r14
530  %cmp = icmp eq <4 x i32> %val1, %val2
531  %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
532  ret <4 x float> %sel
533}
534
535define <4 x double> @fun41(<4 x i32> %val1, <4 x i32> %val2, <4 x double> %val3, <4 x double> %val4) {
536; CHECK-LABEL: fun41:
537; CHECK:       # BB#0:
538; CHECK-NEXT:    vceqf %v0, %v24, %v26
539; CHECK-NEXT:    vuphf %v1, %v0
540; CHECK-NEXT:    vmrlg %v0, %v0, %v0
541; CHECK-NEXT:    vuphf %v0, %v0
542; CHECK-NEXT:    vsel %v24, %v28, %v25, %v1
543; CHECK-NEXT:    vsel %v26, %v30, %v27, %v0
544; CHECK-NEXT:    br %r14
545  %cmp = icmp eq <4 x i32> %val1, %val2
546  %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
547  ret <4 x double> %sel
548}
549
550define <4 x i8> @fun42(<4 x i64> %val1, <4 x i64> %val2, <4 x i8> %val3, <4 x i8> %val4) {
551; CHECK-LABEL: fun42:
552; CHECK:       # BB#0:
553; CHECK-NEXT:    larl %r1, .LCPI42_0
554; CHECK-NEXT:    vl %v2, 0(%r1)
555; CHECK-NEXT:    vceqg %v0, %v26, %v30
556; CHECK-NEXT:    vceqg %v1, %v24, %v28
557; CHECK-NEXT:    vperm %v0, %v1, %v0, %v2
558; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
559; CHECK-NEXT:    br %r14
560  %cmp = icmp eq <4 x i64> %val1, %val2
561  %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
562  ret <4 x i8> %sel
563}
564
565define <4 x i16> @fun43(<4 x i64> %val1, <4 x i64> %val2, <4 x i16> %val3, <4 x i16> %val4) {
566; CHECK-LABEL: fun43:
567; CHECK:       # BB#0:
568; CHECK-NEXT:    larl %r1, .LCPI43_0
569; CHECK-NEXT:    vl %v2, 0(%r1)
570; CHECK-NEXT:    vceqg %v0, %v26, %v30
571; CHECK-NEXT:    vceqg %v1, %v24, %v28
572; CHECK-NEXT:    vperm %v0, %v1, %v0, %v2
573; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
574; CHECK-NEXT:    br %r14
575  %cmp = icmp eq <4 x i64> %val1, %val2
576  %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
577  ret <4 x i16> %sel
578}
579
580define <4 x i32> @fun44(<4 x i64> %val1, <4 x i64> %val2, <4 x i32> %val3, <4 x i32> %val4) {
581; CHECK-LABEL: fun44:
582; CHECK:       # BB#0:
583; CHECK-NEXT:    vceqg %v0, %v26, %v30
584; CHECK-NEXT:    vceqg %v1, %v24, %v28
585; CHECK-NEXT:    vpkg %v0, %v1, %v0
586; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
587; CHECK-NEXT:    br %r14
588  %cmp = icmp eq <4 x i64> %val1, %val2
589  %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
590  ret <4 x i32> %sel
591}
592
593define <4 x i64> @fun45(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4) {
594; CHECK-LABEL: fun45:
595; CHECK:       # BB#0:
596; CHECK-NEXT:    vceqg %v0, %v24, %v28
597; CHECK-NEXT:    vsel %v24, %v25, %v29, %v0
598; CHECK-NEXT:    vceqg %v0, %v26, %v30
599; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
600; CHECK-NEXT:    br %r14
601  %cmp = icmp eq <4 x i64> %val1, %val2
602  %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
603  ret <4 x i64> %sel
604}
605
606define <4 x float> @fun46(<4 x i64> %val1, <4 x i64> %val2, <4 x float> %val3, <4 x float> %val4) {
607; CHECK-LABEL: fun46:
608; CHECK:       # BB#0:
609; CHECK-NEXT:    vceqg %v0, %v26, %v30
610; CHECK-NEXT:    vceqg %v1, %v24, %v28
611; CHECK-NEXT:    vpkg %v0, %v1, %v0
612; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
613; CHECK-NEXT:    br %r14
614  %cmp = icmp eq <4 x i64> %val1, %val2
615  %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
616  ret <4 x float> %sel
617}
618
619define <4 x double> @fun47(<4 x i64> %val1, <4 x i64> %val2, <4 x double> %val3, <4 x double> %val4) {
620; CHECK-LABEL: fun47:
621; CHECK:       # BB#0:
622; CHECK-NEXT:    vceqg %v0, %v24, %v28
623; CHECK-NEXT:    vsel %v24, %v25, %v29, %v0
624; CHECK-NEXT:    vceqg %v0, %v26, %v30
625; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
626; CHECK-NEXT:    br %r14
627  %cmp = icmp eq <4 x i64> %val1, %val2
628  %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
629  ret <4 x double> %sel
630}
631
632define <8 x i8> @fun48(<8 x i8> %val1, <8 x i8> %val2, <8 x i8> %val3, <8 x i8> %val4) {
633; CHECK-LABEL: fun48:
634; CHECK:       # BB#0:
635; CHECK-NEXT:    vceqb %v0, %v24, %v26
636; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
637; CHECK-NEXT:    br %r14
638  %cmp = icmp eq <8 x i8> %val1, %val2
639  %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
640  ret <8 x i8> %sel
641}
642
643define <8 x i16> @fun49(<8 x i8> %val1, <8 x i8> %val2, <8 x i16> %val3, <8 x i16> %val4) {
644; CHECK-LABEL: fun49:
645; CHECK:       # BB#0:
646; CHECK-NEXT:    vceqb %v0, %v24, %v26
647; CHECK-NEXT:    vuphb %v0, %v0
648; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
649; CHECK-NEXT:    br %r14
650  %cmp = icmp eq <8 x i8> %val1, %val2
651  %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
652  ret <8 x i16> %sel
653}
654
655define <8 x i32> @fun50(<8 x i8> %val1, <8 x i8> %val2, <8 x i32> %val3, <8 x i32> %val4) {
656; CHECK-LABEL: fun50:
657; CHECK:       # BB#0:
658; CHECK-NEXT:    vceqb %v0, %v24, %v26
659; CHECK-NEXT:    vuphb %v1, %v0
660; CHECK-NEXT:    vpkg %v0, %v0, %v0
661; CHECK-NEXT:    vuphb %v0, %v0
662; CHECK-NEXT:    vuphh %v1, %v1
663; CHECK-NEXT:    vuphh %v0, %v0
664; CHECK-NEXT:    vsel %v24, %v28, %v25, %v1
665; CHECK-NEXT:    vsel %v26, %v30, %v27, %v0
666; CHECK-NEXT:    br %r14
667  %cmp = icmp eq <8 x i8> %val1, %val2
668  %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
669  ret <8 x i32> %sel
670}
671
672define <8 x i64> @fun51(<8 x i8> %val1, <8 x i8> %val2, <8 x i64> %val3, <8 x i64> %val4) {
673; CHECK-LABEL: fun51:
674; CHECK:       # BB#0:
675; CHECK-NEXT:    vceqb %v0, %v24, %v26
676; CHECK-NEXT:    vuphb %v1, %v0
677; CHECK-NEXT:    vuphh %v1, %v1
678; CHECK-NEXT:    vuphf %v1, %v1
679; CHECK-NEXT:    vsel %v24, %v28, %v29, %v1
680; CHECK-NEXT:    vpkf %v1, %v0, %v0
681; CHECK-NEXT:    vuphb %v1, %v1
682; CHECK-NEXT:    vuphh %v1, %v1
683; CHECK-NEXT:    vuphf %v1, %v1
684; CHECK-NEXT:    vsel %v26, %v30, %v31, %v1
685; CHECK-NEXT:    vpkg %v1, %v0, %v0
686; CHECK-NEXT:    vuphb %v1, %v1
687; CHECK-NEXT:    vsldb %v0, %v0, %v0, 6
688; CHECK-NEXT:    vl %v2, 160(%r15)
689; CHECK-NEXT:    vuphh %v1, %v1
690; CHECK-NEXT:    vuphb %v0, %v0
691; CHECK-NEXT:    vuphf %v1, %v1
692; CHECK-NEXT:    vuphh %v0, %v0
693; CHECK-NEXT:    vsel %v28, %v25, %v2, %v1
694; CHECK-NEXT:    vl %v1, 176(%r15)
695; CHECK-NEXT:    vuphf %v0, %v0
696; CHECK-NEXT:    vsel %v30, %v27, %v1, %v0
697; CHECK-NEXT:    br %r14
698  %cmp = icmp eq <8 x i8> %val1, %val2
699  %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
700  ret <8 x i64> %sel
701}
702
703define <8 x float> @fun52(<8 x i8> %val1, <8 x i8> %val2, <8 x float> %val3, <8 x float> %val4) {
704; CHECK-LABEL: fun52:
705; CHECK:       # BB#0:
706; CHECK-NEXT:    vceqb %v0, %v24, %v26
707; CHECK-NEXT:    vuphb %v1, %v0
708; CHECK-NEXT:    vpkg %v0, %v0, %v0
709; CHECK-NEXT:    vuphb %v0, %v0
710; CHECK-NEXT:    vuphh %v1, %v1
711; CHECK-NEXT:    vuphh %v0, %v0
712; CHECK-NEXT:    vsel %v24, %v28, %v25, %v1
713; CHECK-NEXT:    vsel %v26, %v30, %v27, %v0
714; CHECK-NEXT:    br %r14
715  %cmp = icmp eq <8 x i8> %val1, %val2
716  %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
717  ret <8 x float> %sel
718}
719
720define <8 x double> @fun53(<8 x i8> %val1, <8 x i8> %val2, <8 x double> %val3, <8 x double> %val4) {
721; CHECK-LABEL: fun53:
722; CHECK:       # BB#0:
723; CHECK-NEXT:    vceqb %v0, %v24, %v26
724; CHECK-NEXT:    vuphb %v1, %v0
725; CHECK-NEXT:    vuphh %v1, %v1
726; CHECK-NEXT:    vuphf %v1, %v1
727; CHECK-NEXT:    vsel %v24, %v28, %v29, %v1
728; CHECK-NEXT:    vpkf %v1, %v0, %v0
729; CHECK-NEXT:    vuphb %v1, %v1
730; CHECK-NEXT:    vuphh %v1, %v1
731; CHECK-NEXT:    vuphf %v1, %v1
732; CHECK-NEXT:    vsel %v26, %v30, %v31, %v1
733; CHECK-NEXT:    vpkg %v1, %v0, %v0
734; CHECK-NEXT:    vuphb %v1, %v1
735; CHECK-NEXT:    vsldb %v0, %v0, %v0, 6
736; CHECK-NEXT:    vl %v2, 160(%r15)
737; CHECK-NEXT:    vuphh %v1, %v1
738; CHECK-NEXT:    vuphb %v0, %v0
739; CHECK-NEXT:    vuphf %v1, %v1
740; CHECK-NEXT:    vuphh %v0, %v0
741; CHECK-NEXT:    vsel %v28, %v25, %v2, %v1
742; CHECK-NEXT:    vl %v1, 176(%r15)
743; CHECK-NEXT:    vuphf %v0, %v0
744; CHECK-NEXT:    vsel %v30, %v27, %v1, %v0
745; CHECK-NEXT:    br %r14
746  %cmp = icmp eq <8 x i8> %val1, %val2
747  %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
748  ret <8 x double> %sel
749}
750
751define <8 x i8> @fun54(<8 x i16> %val1, <8 x i16> %val2, <8 x i8> %val3, <8 x i8> %val4) {
752; CHECK-LABEL: fun54:
753; CHECK:       # BB#0:
754; CHECK-NEXT:    vceqh %v0, %v24, %v26
755; CHECK-NEXT:    vpkh %v0, %v0, %v0
756; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
757; CHECK-NEXT:    br %r14
758  %cmp = icmp eq <8 x i16> %val1, %val2
759  %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
760  ret <8 x i8> %sel
761}
762
763define <8 x i16> @fun55(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4) {
764; CHECK-LABEL: fun55:
765; CHECK:       # BB#0:
766; CHECK-NEXT:    vceqh %v0, %v24, %v26
767; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
768; CHECK-NEXT:    br %r14
769  %cmp = icmp eq <8 x i16> %val1, %val2
770  %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
771  ret <8 x i16> %sel
772}
773
774define <8 x i32> @fun56(<8 x i16> %val1, <8 x i16> %val2, <8 x i32> %val3, <8 x i32> %val4) {
775; CHECK-LABEL: fun56:
776; CHECK:       # BB#0:
777; CHECK-NEXT:    vceqh %v0, %v24, %v26
778; CHECK-NEXT:    vuphh %v1, %v0
779; CHECK-NEXT:    vmrlg %v0, %v0, %v0
780; CHECK-NEXT:    vuphh %v0, %v0
781; CHECK-NEXT:    vsel %v24, %v28, %v25, %v1
782; CHECK-NEXT:    vsel %v26, %v30, %v27, %v0
783; CHECK-NEXT:    br %r14
784  %cmp = icmp eq <8 x i16> %val1, %val2
785  %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
786  ret <8 x i32> %sel
787}
788
789define <8 x i64> @fun57(<8 x i16> %val1, <8 x i16> %val2, <8 x i64> %val3, <8 x i64> %val4) {
790; CHECK-LABEL: fun57:
791; CHECK:       # BB#0:
792; CHECK-NEXT:    vceqh %v0, %v24, %v26
793; CHECK-NEXT:    vuphh %v1, %v0
794; CHECK-NEXT:    vuphf %v1, %v1
795; CHECK-NEXT:    vsel %v24, %v28, %v29, %v1
796; CHECK-NEXT:    vpkg %v1, %v0, %v0
797; CHECK-NEXT:    vuphh %v1, %v1
798; CHECK-NEXT:    vuphf %v1, %v1
799; CHECK-NEXT:    vsel %v26, %v30, %v31, %v1
800; CHECK-NEXT:    vmrlg %v1, %v0, %v0
801; CHECK-NEXT:    vuphh %v1, %v1
802; CHECK-NEXT:    vsldb %v0, %v0, %v0, 12
803; CHECK-NEXT:    vl %v2, 160(%r15)
804; CHECK-NEXT:    vuphf %v1, %v1
805; CHECK-NEXT:    vuphh %v0, %v0
806; CHECK-NEXT:    vsel %v28, %v25, %v2, %v1
807; CHECK-NEXT:    vl %v1, 176(%r15)
808; CHECK-NEXT:    vuphf %v0, %v0
809; CHECK-NEXT:    vsel %v30, %v27, %v1, %v0
810; CHECK-NEXT:    br %r14
811  %cmp = icmp eq <8 x i16> %val1, %val2
812  %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
813  ret <8 x i64> %sel
814}
815
816define <8 x float> @fun58(<8 x i16> %val1, <8 x i16> %val2, <8 x float> %val3, <8 x float> %val4) {
817; CHECK-LABEL: fun58:
818; CHECK:       # BB#0:
819; CHECK-NEXT:    vceqh %v0, %v24, %v26
820; CHECK-NEXT:    vuphh %v1, %v0
821; CHECK-NEXT:    vmrlg %v0, %v0, %v0
822; CHECK-NEXT:    vuphh %v0, %v0
823; CHECK-NEXT:    vsel %v24, %v28, %v25, %v1
824; CHECK-NEXT:    vsel %v26, %v30, %v27, %v0
825; CHECK-NEXT:    br %r14
826  %cmp = icmp eq <8 x i16> %val1, %val2
827  %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
828  ret <8 x float> %sel
829}
830
831define <8 x double> @fun59(<8 x i16> %val1, <8 x i16> %val2, <8 x double> %val3, <8 x double> %val4) {
832; CHECK-LABEL: fun59:
833; CHECK:       # BB#0:
834; CHECK-NEXT:    vceqh %v0, %v24, %v26
835; CHECK-NEXT:    vuphh %v1, %v0
836; CHECK-NEXT:    vuphf %v1, %v1
837; CHECK-NEXT:    vsel %v24, %v28, %v29, %v1
838; CHECK-NEXT:    vpkg %v1, %v0, %v0
839; CHECK-NEXT:    vuphh %v1, %v1
840; CHECK-NEXT:    vuphf %v1, %v1
841; CHECK-NEXT:    vsel %v26, %v30, %v31, %v1
842; CHECK-NEXT:    vmrlg %v1, %v0, %v0
843; CHECK-NEXT:    vuphh %v1, %v1
844; CHECK-NEXT:    vsldb %v0, %v0, %v0, 12
845; CHECK-NEXT:    vl %v2, 160(%r15)
846; CHECK-NEXT:    vuphf %v1, %v1
847; CHECK-NEXT:    vuphh %v0, %v0
848; CHECK-NEXT:    vsel %v28, %v25, %v2, %v1
849; CHECK-NEXT:    vl %v1, 176(%r15)
850; CHECK-NEXT:    vuphf %v0, %v0
851; CHECK-NEXT:    vsel %v30, %v27, %v1, %v0
852; CHECK-NEXT:    br %r14
853  %cmp = icmp eq <8 x i16> %val1, %val2
854  %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
855  ret <8 x double> %sel
856}
857
858define <8 x i8> @fun60(<8 x i32> %val1, <8 x i32> %val2, <8 x i8> %val3, <8 x i8> %val4) {
859; CHECK-LABEL: fun60:
860; CHECK:       # BB#0:
861; CHECK-NEXT:    larl %r1, .LCPI60_0
862; CHECK-NEXT:    vl %v2, 0(%r1)
863; CHECK-NEXT:    vceqf %v0, %v26, %v30
864; CHECK-NEXT:    vceqf %v1, %v24, %v28
865; CHECK-NEXT:    vperm %v0, %v1, %v0, %v2
866; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
867; CHECK-NEXT:    br %r14
868  %cmp = icmp eq <8 x i32> %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
873define <8 x i16> @fun61(<8 x i32> %val1, <8 x i32> %val2, <8 x i16> %val3, <8 x i16> %val4) {
874; CHECK-LABEL: fun61:
875; CHECK:       # BB#0:
876; CHECK-NEXT:    vceqf %v0, %v26, %v30
877; CHECK-NEXT:    vceqf %v1, %v24, %v28
878; CHECK-NEXT:    vpkf %v0, %v1, %v0
879; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
880; CHECK-NEXT:    br %r14
881  %cmp = icmp eq <8 x i32> %val1, %val2
882  %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
883  ret <8 x i16> %sel
884}
885
886define <8 x i32> @fun62(<8 x i32> %val1, <8 x i32> %val2, <8 x i32> %val3, <8 x i32> %val4) {
887; CHECK-LABEL: fun62:
888; CHECK:       # BB#0:
889; CHECK-NEXT:    vceqf %v0, %v24, %v28
890; CHECK-NEXT:    vsel %v24, %v25, %v29, %v0
891; CHECK-NEXT:    vceqf %v0, %v26, %v30
892; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
893; CHECK-NEXT:    br %r14
894  %cmp = icmp eq <8 x i32> %val1, %val2
895  %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
896  ret <8 x i32> %sel
897}
898
899define <8 x i64> @fun63(<8 x i32> %val1, <8 x i32> %val2, <8 x i64> %val3, <8 x i64> %val4) {
900; CHECK-LABEL: fun63:
901; CHECK:       # BB#0:
902; CHECK-NEXT:    vceqf %v0, %v24, %v28
903; CHECK-NEXT:    vl %v2, 160(%r15)
904; CHECK-NEXT:    vuphf %v1, %v0
905; CHECK-NEXT:    vsel %v24, %v25, %v2, %v1
906; CHECK-NEXT:    vceqf %v1, %v26, %v30
907; CHECK-NEXT:    vl %v3, 192(%r15)
908; CHECK-NEXT:    vuphf %v2, %v1
909; CHECK-NEXT:    vmrlg %v0, %v0, %v0
910; CHECK-NEXT:    vsel %v28, %v29, %v3, %v2
911; CHECK-NEXT:    vl %v2, 176(%r15)
912; CHECK-NEXT:    vuphf %v0, %v0
913; CHECK-NEXT:    vsel %v26, %v27, %v2, %v0
914; CHECK-NEXT:    vmrlg %v0, %v1, %v1
915; CHECK-NEXT:    vl %v1, 208(%r15)
916; CHECK-NEXT:    vuphf %v0, %v0
917; CHECK-NEXT:    vsel %v30, %v31, %v1, %v0
918; CHECK-NEXT:    br %r14
919  %cmp = icmp eq <8 x i32> %val1, %val2
920  %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
921  ret <8 x i64> %sel
922}
923
924define <8 x float> @fun64(<8 x i32> %val1, <8 x i32> %val2, <8 x float> %val3, <8 x float> %val4) {
925; CHECK-LABEL: fun64:
926; CHECK:       # BB#0:
927; CHECK-NEXT:    vceqf %v0, %v24, %v28
928; CHECK-NEXT:    vsel %v24, %v25, %v29, %v0
929; CHECK-NEXT:    vceqf %v0, %v26, %v30
930; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
931; CHECK-NEXT:    br %r14
932  %cmp = icmp eq <8 x i32> %val1, %val2
933  %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
934  ret <8 x float> %sel
935}
936
937define <8 x double> @fun65(<8 x i32> %val1, <8 x i32> %val2, <8 x double> %val3, <8 x double> %val4) {
938; CHECK-LABEL: fun65:
939; CHECK:       # BB#0:
940; CHECK-NEXT:    vceqf %v0, %v24, %v28
941; CHECK-NEXT:    vl %v2, 160(%r15)
942; CHECK-NEXT:    vuphf %v1, %v0
943; CHECK-NEXT:    vsel %v24, %v25, %v2, %v1
944; CHECK-NEXT:    vceqf %v1, %v26, %v30
945; CHECK-NEXT:    vl %v3, 192(%r15)
946; CHECK-NEXT:    vuphf %v2, %v1
947; CHECK-NEXT:    vmrlg %v0, %v0, %v0
948; CHECK-NEXT:    vsel %v28, %v29, %v3, %v2
949; CHECK-NEXT:    vl %v2, 176(%r15)
950; CHECK-NEXT:    vuphf %v0, %v0
951; CHECK-NEXT:    vsel %v26, %v27, %v2, %v0
952; CHECK-NEXT:    vmrlg %v0, %v1, %v1
953; CHECK-NEXT:    vl %v1, 208(%r15)
954; CHECK-NEXT:    vuphf %v0, %v0
955; CHECK-NEXT:    vsel %v30, %v31, %v1, %v0
956; CHECK-NEXT:    br %r14
957  %cmp = icmp eq <8 x i32> %val1, %val2
958  %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
959  ret <8 x double> %sel
960}
961
962define <8 x i8> @fun66(<8 x i64> %val1, <8 x i64> %val2, <8 x i8> %val3, <8 x i8> %val4) {
963; CHECK-LABEL: fun66:
964; CHECK:       # BB#0:
965; CHECK-NEXT:    vceqg %v0, %v30, %v31
966; CHECK-NEXT:    vceqg %v1, %v28, %v29
967; CHECK-NEXT:    vpkg %v0, %v1, %v0
968; CHECK-NEXT:    vceqg %v1, %v26, %v27
969; CHECK-NEXT:    vceqg %v2, %v24, %v25
970; CHECK-NEXT:    larl %r1, .LCPI66_0
971; CHECK-NEXT:    vpkg %v1, %v2, %v1
972; CHECK-NEXT:    vl %v2, 0(%r1)
973; CHECK-NEXT:    vperm %v0, %v1, %v0, %v2
974; CHECK-NEXT:    vlrepg %v1, 168(%r15)
975; CHECK-NEXT:    vlrepg %v2, 160(%r15)
976; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
977; CHECK-NEXT:    br %r14
978  %cmp = icmp eq <8 x i64> %val1, %val2
979  %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
980  ret <8 x i8> %sel
981}
982
983define <8 x i16> @fun67(<8 x i64> %val1, <8 x i64> %val2, <8 x i16> %val3, <8 x i16> %val4) {
984; CHECK-LABEL: fun67:
985; CHECK:       # BB#0:
986; CHECK-NEXT:    vceqg %v0, %v30, %v31
987; CHECK-NEXT:    vceqg %v1, %v28, %v29
988; CHECK-NEXT:    vpkg %v0, %v1, %v0
989; CHECK-NEXT:    vceqg %v1, %v26, %v27
990; CHECK-NEXT:    vceqg %v2, %v24, %v25
991; CHECK-NEXT:    vpkg %v1, %v2, %v1
992; CHECK-NEXT:    vpkf %v0, %v1, %v0
993; CHECK-NEXT:    vl %v1, 176(%r15)
994; CHECK-NEXT:    vl %v2, 160(%r15)
995; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
996; CHECK-NEXT:    br %r14
997  %cmp = icmp eq <8 x i64> %val1, %val2
998  %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
999  ret <8 x i16> %sel
1000}
1001
1002define <8 x i32> @fun68(<8 x i64> %val1, <8 x i64> %val2, <8 x i32> %val3, <8 x i32> %val4) {
1003; CHECK-LABEL: fun68:
1004; CHECK:       # BB#0:
1005; CHECK-NEXT:    vceqg %v0, %v26, %v27
1006; CHECK-NEXT:    vceqg %v1, %v24, %v25
1007; CHECK-NEXT:    vpkg %v0, %v1, %v0
1008; CHECK-NEXT:    vl %v1, 192(%r15)
1009; CHECK-NEXT:    vl %v2, 160(%r15)
1010; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1011; CHECK-NEXT:    vceqg %v0, %v30, %v31
1012; CHECK-NEXT:    vceqg %v1, %v28, %v29
1013; CHECK-NEXT:    vpkg %v0, %v1, %v0
1014; CHECK-NEXT:    vl %v1, 208(%r15)
1015; CHECK-NEXT:    vl %v2, 176(%r15)
1016; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1017; CHECK-NEXT:    br %r14
1018  %cmp = icmp eq <8 x i64> %val1, %val2
1019  %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
1020  ret <8 x i32> %sel
1021}
1022
1023define <8 x i64> @fun69(<8 x i64> %val1, <8 x i64> %val2, <8 x i64> %val3, <8 x i64> %val4) {
1024; CHECK-LABEL: fun69:
1025; CHECK:       # BB#0:
1026; CHECK-NEXT:    vl %v1, 224(%r15)
1027; CHECK-NEXT:    vl %v2, 160(%r15)
1028; CHECK-NEXT:    vceqg %v0, %v24, %v25
1029; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1030; CHECK-NEXT:    vl %v1, 240(%r15)
1031; CHECK-NEXT:    vl %v2, 176(%r15)
1032; CHECK-NEXT:    vceqg %v0, %v26, %v27
1033; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1034; CHECK-NEXT:    vl %v1, 256(%r15)
1035; CHECK-NEXT:    vl %v2, 192(%r15)
1036; CHECK-NEXT:    vceqg %v0, %v28, %v29
1037; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
1038; CHECK-NEXT:    vl %v1, 272(%r15)
1039; CHECK-NEXT:    vl %v2, 208(%r15)
1040; CHECK-NEXT:    vceqg %v0, %v30, %v31
1041; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
1042; CHECK-NEXT:    br %r14
1043  %cmp = icmp eq <8 x i64> %val1, %val2
1044  %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
1045  ret <8 x i64> %sel
1046}
1047
1048define <8 x float> @fun70(<8 x i64> %val1, <8 x i64> %val2, <8 x float> %val3, <8 x float> %val4) {
1049; CHECK-LABEL: fun70:
1050; CHECK:       # BB#0:
1051; CHECK-NEXT:    vceqg %v0, %v26, %v27
1052; CHECK-NEXT:    vceqg %v1, %v24, %v25
1053; CHECK-NEXT:    vpkg %v0, %v1, %v0
1054; CHECK-NEXT:    vl %v1, 192(%r15)
1055; CHECK-NEXT:    vl %v2, 160(%r15)
1056; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1057; CHECK-NEXT:    vceqg %v0, %v30, %v31
1058; CHECK-NEXT:    vceqg %v1, %v28, %v29
1059; CHECK-NEXT:    vpkg %v0, %v1, %v0
1060; CHECK-NEXT:    vl %v1, 208(%r15)
1061; CHECK-NEXT:    vl %v2, 176(%r15)
1062; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1063; CHECK-NEXT:    br %r14
1064  %cmp = icmp eq <8 x i64> %val1, %val2
1065  %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
1066  ret <8 x float> %sel
1067}
1068
1069define <8 x double> @fun71(<8 x i64> %val1, <8 x i64> %val2, <8 x double> %val3, <8 x double> %val4) {
1070; CHECK-LABEL: fun71:
1071; CHECK:       # BB#0:
1072; CHECK-NEXT:    vl %v1, 224(%r15)
1073; CHECK-NEXT:    vl %v2, 160(%r15)
1074; CHECK-NEXT:    vceqg %v0, %v24, %v25
1075; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1076; CHECK-NEXT:    vl %v1, 240(%r15)
1077; CHECK-NEXT:    vl %v2, 176(%r15)
1078; CHECK-NEXT:    vceqg %v0, %v26, %v27
1079; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1080; CHECK-NEXT:    vl %v1, 256(%r15)
1081; CHECK-NEXT:    vl %v2, 192(%r15)
1082; CHECK-NEXT:    vceqg %v0, %v28, %v29
1083; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
1084; CHECK-NEXT:    vl %v1, 272(%r15)
1085; CHECK-NEXT:    vl %v2, 208(%r15)
1086; CHECK-NEXT:    vceqg %v0, %v30, %v31
1087; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
1088; CHECK-NEXT:    br %r14
1089  %cmp = icmp eq <8 x i64> %val1, %val2
1090  %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
1091  ret <8 x double> %sel
1092}
1093
1094define <16 x i8> @fun72(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4) {
1095; CHECK-LABEL: fun72:
1096; CHECK:       # BB#0:
1097; CHECK-NEXT:    vceqb %v0, %v24, %v26
1098; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
1099; CHECK-NEXT:    br %r14
1100  %cmp = icmp eq <16 x i8> %val1, %val2
1101  %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1102  ret <16 x i8> %sel
1103}
1104
1105define <16 x i16> @fun73(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16 x i16> %val4) {
1106; CHECK-LABEL: fun73:
1107; CHECK:       # BB#0:
1108; CHECK-NEXT:    vceqb %v0, %v24, %v26
1109; CHECK-NEXT:    vuphb %v1, %v0
1110; CHECK-NEXT:    vmrlg %v0, %v0, %v0
1111; CHECK-NEXT:    vuphb %v0, %v0
1112; CHECK-NEXT:    vsel %v24, %v28, %v25, %v1
1113; CHECK-NEXT:    vsel %v26, %v30, %v27, %v0
1114; CHECK-NEXT:    br %r14
1115  %cmp = icmp eq <16 x i8> %val1, %val2
1116  %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1117  ret <16 x i16> %sel
1118}
1119
1120define <16 x i32> @fun74(<16 x i8> %val1, <16 x i8> %val2, <16 x i32> %val3, <16 x i32> %val4) {
1121; CHECK-LABEL: fun74:
1122; CHECK:       # BB#0:
1123; CHECK-NEXT:    vceqb %v0, %v24, %v26
1124; CHECK-NEXT:    vuphb %v1, %v0
1125; CHECK-NEXT:    vuphh %v1, %v1
1126; CHECK-NEXT:    vsel %v24, %v28, %v29, %v1
1127; CHECK-NEXT:    vpkg %v1, %v0, %v0
1128; CHECK-NEXT:    vuphb %v1, %v1
1129; CHECK-NEXT:    vuphh %v1, %v1
1130; CHECK-NEXT:    vsel %v26, %v30, %v31, %v1
1131; CHECK-NEXT:    vmrlg %v1, %v0, %v0
1132; CHECK-NEXT:    vuphb %v1, %v1
1133; CHECK-NEXT:    vsldb %v0, %v0, %v0, 12
1134; CHECK-NEXT:    vl %v2, 160(%r15)
1135; CHECK-NEXT:    vuphh %v1, %v1
1136; CHECK-NEXT:    vuphb %v0, %v0
1137; CHECK-NEXT:    vsel %v28, %v25, %v2, %v1
1138; CHECK-NEXT:    vl %v1, 176(%r15)
1139; CHECK-NEXT:    vuphh %v0, %v0
1140; CHECK-NEXT:    vsel %v30, %v27, %v1, %v0
1141; CHECK-NEXT:    br %r14
1142  %cmp = icmp eq <16 x i8> %val1, %val2
1143  %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1144  ret <16 x i32> %sel
1145}
1146
1147define <16 x i64> @fun75(<16 x i8> %val1, <16 x i8> %val2, <16 x i64> %val3, <16 x i64> %val4) {
1148; CHECK-LABEL: fun75:
1149; CHECK:       # BB#0:
1150; CHECK-NEXT:    vceqb %v0, %v24, %v26
1151; CHECK-NEXT:    vuphb %v1, %v0
1152; CHECK-NEXT:    vuphh %v1, %v1
1153; CHECK-NEXT:    vl %v2, 192(%r15)
1154; CHECK-NEXT:    vuphf %v1, %v1
1155; CHECK-NEXT:    vsel %v24, %v28, %v2, %v1
1156; CHECK-NEXT:    vpkf %v1, %v0, %v0
1157; CHECK-NEXT:    vuphb %v1, %v1
1158; CHECK-NEXT:    vuphh %v1, %v1
1159; CHECK-NEXT:    vl %v2, 208(%r15)
1160; CHECK-NEXT:    vuphf %v1, %v1
1161; CHECK-NEXT:    vsel %v26, %v30, %v2, %v1
1162; CHECK-NEXT:    vpkg %v1, %v0, %v0
1163; CHECK-NEXT:    vuphb %v1, %v1
1164; CHECK-NEXT:    vuphh %v1, %v1
1165; CHECK-NEXT:    vl %v2, 224(%r15)
1166; CHECK-NEXT:    vuphf %v1, %v1
1167; CHECK-NEXT:    vl %v3, 160(%r15)
1168; CHECK-NEXT:    vsel %v28, %v25, %v2, %v1
1169; CHECK-NEXT:    vl %v2, 240(%r15)
1170; CHECK-NEXT:    vsldb %v1, %v0, %v0, 6
1171; CHECK-NEXT:    vuphb %v1, %v1
1172; CHECK-NEXT:    vuphh %v1, %v1
1173; CHECK-NEXT:    vuphf %v1, %v1
1174; CHECK-NEXT:    vsel %v30, %v27, %v2, %v1
1175; CHECK-NEXT:    vl %v2, 256(%r15)
1176; CHECK-NEXT:    vmrlg %v1, %v0, %v0
1177; CHECK-NEXT:    vuphb %v1, %v1
1178; CHECK-NEXT:    vuphh %v1, %v1
1179; CHECK-NEXT:    vuphf %v1, %v1
1180; CHECK-NEXT:    vsel %v25, %v29, %v2, %v1
1181; CHECK-NEXT:    vl %v2, 272(%r15)
1182; CHECK-NEXT:    vsldb %v1, %v0, %v0, 10
1183; CHECK-NEXT:    vuphb %v1, %v1
1184; CHECK-NEXT:    vuphh %v1, %v1
1185; CHECK-NEXT:    vuphf %v1, %v1
1186; CHECK-NEXT:    vsel %v27, %v31, %v2, %v1
1187; CHECK-NEXT:    vl %v2, 288(%r15)
1188; CHECK-NEXT:    vsldb %v1, %v0, %v0, 12
1189; CHECK-NEXT:    vuphb %v1, %v1
1190; CHECK-NEXT:    vsldb %v0, %v0, %v0, 14
1191; CHECK-NEXT:    vuphh %v1, %v1
1192; CHECK-NEXT:    vuphb %v0, %v0
1193; CHECK-NEXT:    vuphf %v1, %v1
1194; CHECK-NEXT:    vuphh %v0, %v0
1195; CHECK-NEXT:    vsel %v29, %v3, %v2, %v1
1196; CHECK-NEXT:    vl %v1, 304(%r15)
1197; CHECK-NEXT:    vl %v2, 176(%r15)
1198; CHECK-NEXT:    vuphf %v0, %v0
1199; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
1200; CHECK-NEXT:    br %r14
1201  %cmp = icmp eq <16 x i8> %val1, %val2
1202  %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1203  ret <16 x i64> %sel
1204}
1205
1206define <16 x float> @fun76(<16 x i8> %val1, <16 x i8> %val2, <16 x float> %val3, <16 x float> %val4) {
1207; CHECK-LABEL: fun76:
1208; CHECK:       # BB#0:
1209; CHECK-NEXT:    vceqb %v0, %v24, %v26
1210; CHECK-NEXT:    vuphb %v1, %v0
1211; CHECK-NEXT:    vuphh %v1, %v1
1212; CHECK-NEXT:    vsel %v24, %v28, %v29, %v1
1213; CHECK-NEXT:    vpkg %v1, %v0, %v0
1214; CHECK-NEXT:    vuphb %v1, %v1
1215; CHECK-NEXT:    vuphh %v1, %v1
1216; CHECK-NEXT:    vsel %v26, %v30, %v31, %v1
1217; CHECK-NEXT:    vmrlg %v1, %v0, %v0
1218; CHECK-NEXT:    vuphb %v1, %v1
1219; CHECK-NEXT:    vsldb %v0, %v0, %v0, 12
1220; CHECK-NEXT:    vl %v2, 160(%r15)
1221; CHECK-NEXT:    vuphh %v1, %v1
1222; CHECK-NEXT:    vuphb %v0, %v0
1223; CHECK-NEXT:    vsel %v28, %v25, %v2, %v1
1224; CHECK-NEXT:    vl %v1, 176(%r15)
1225; CHECK-NEXT:    vuphh %v0, %v0
1226; CHECK-NEXT:    vsel %v30, %v27, %v1, %v0
1227; CHECK-NEXT:    br %r14
1228  %cmp = icmp eq <16 x i8> %val1, %val2
1229  %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1230  ret <16 x float> %sel
1231}
1232
1233define <16 x double> @fun77(<16 x i8> %val1, <16 x i8> %val2, <16 x double> %val3, <16 x double> %val4) {
1234; CHECK-LABEL: fun77:
1235; CHECK:       # BB#0:
1236; CHECK-NEXT:    vceqb %v0, %v24, %v26
1237; CHECK-NEXT:    vuphb %v1, %v0
1238; CHECK-NEXT:    vuphh %v1, %v1
1239; CHECK-NEXT:    vl %v2, 192(%r15)
1240; CHECK-NEXT:    vuphf %v1, %v1
1241; CHECK-NEXT:    vsel %v24, %v28, %v2, %v1
1242; CHECK-NEXT:    vpkf %v1, %v0, %v0
1243; CHECK-NEXT:    vuphb %v1, %v1
1244; CHECK-NEXT:    vuphh %v1, %v1
1245; CHECK-NEXT:    vl %v2, 208(%r15)
1246; CHECK-NEXT:    vuphf %v1, %v1
1247; CHECK-NEXT:    vsel %v26, %v30, %v2, %v1
1248; CHECK-NEXT:    vpkg %v1, %v0, %v0
1249; CHECK-NEXT:    vuphb %v1, %v1
1250; CHECK-NEXT:    vuphh %v1, %v1
1251; CHECK-NEXT:    vl %v2, 224(%r15)
1252; CHECK-NEXT:    vuphf %v1, %v1
1253; CHECK-NEXT:    vl %v3, 160(%r15)
1254; CHECK-NEXT:    vsel %v28, %v25, %v2, %v1
1255; CHECK-NEXT:    vl %v2, 240(%r15)
1256; CHECK-NEXT:    vsldb %v1, %v0, %v0, 6
1257; CHECK-NEXT:    vuphb %v1, %v1
1258; CHECK-NEXT:    vuphh %v1, %v1
1259; CHECK-NEXT:    vuphf %v1, %v1
1260; CHECK-NEXT:    vsel %v30, %v27, %v2, %v1
1261; CHECK-NEXT:    vl %v2, 256(%r15)
1262; CHECK-NEXT:    vmrlg %v1, %v0, %v0
1263; CHECK-NEXT:    vuphb %v1, %v1
1264; CHECK-NEXT:    vuphh %v1, %v1
1265; CHECK-NEXT:    vuphf %v1, %v1
1266; CHECK-NEXT:    vsel %v25, %v29, %v2, %v1
1267; CHECK-NEXT:    vl %v2, 272(%r15)
1268; CHECK-NEXT:    vsldb %v1, %v0, %v0, 10
1269; CHECK-NEXT:    vuphb %v1, %v1
1270; CHECK-NEXT:    vuphh %v1, %v1
1271; CHECK-NEXT:    vuphf %v1, %v1
1272; CHECK-NEXT:    vsel %v27, %v31, %v2, %v1
1273; CHECK-NEXT:    vl %v2, 288(%r15)
1274; CHECK-NEXT:    vsldb %v1, %v0, %v0, 12
1275; CHECK-NEXT:    vuphb %v1, %v1
1276; CHECK-NEXT:    vsldb %v0, %v0, %v0, 14
1277; CHECK-NEXT:    vuphh %v1, %v1
1278; CHECK-NEXT:    vuphb %v0, %v0
1279; CHECK-NEXT:    vuphf %v1, %v1
1280; CHECK-NEXT:    vuphh %v0, %v0
1281; CHECK-NEXT:    vsel %v29, %v3, %v2, %v1
1282; CHECK-NEXT:    vl %v1, 304(%r15)
1283; CHECK-NEXT:    vl %v2, 176(%r15)
1284; CHECK-NEXT:    vuphf %v0, %v0
1285; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
1286; CHECK-NEXT:    br %r14
1287  %cmp = icmp eq <16 x i8> %val1, %val2
1288  %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1289  ret <16 x double> %sel
1290}
1291
1292define <16 x i8> @fun78(<16 x i16> %val1, <16 x i16> %val2, <16 x i8> %val3, <16 x i8> %val4) {
1293; CHECK-LABEL: fun78:
1294; CHECK:       # BB#0:
1295; CHECK-NEXT:    vceqh %v0, %v26, %v30
1296; CHECK-NEXT:    vceqh %v1, %v24, %v28
1297; CHECK-NEXT:    vpkh %v0, %v1, %v0
1298; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
1299; CHECK-NEXT:    br %r14
1300  %cmp = icmp eq <16 x i16> %val1, %val2
1301  %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1302  ret <16 x i8> %sel
1303}
1304
1305define <16 x i16> @fun79(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4) {
1306; CHECK-LABEL: fun79:
1307; CHECK:       # BB#0:
1308; CHECK-NEXT:    vceqh %v0, %v24, %v28
1309; CHECK-NEXT:    vsel %v24, %v25, %v29, %v0
1310; CHECK-NEXT:    vceqh %v0, %v26, %v30
1311; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
1312; CHECK-NEXT:    br %r14
1313  %cmp = icmp eq <16 x i16> %val1, %val2
1314  %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1315  ret <16 x i16> %sel
1316}
1317
1318define <16 x i32> @fun80(<16 x i16> %val1, <16 x i16> %val2, <16 x i32> %val3, <16 x i32> %val4) {
1319; CHECK-LABEL: fun80:
1320; CHECK:       # BB#0:
1321; CHECK-NEXT:    vceqh %v0, %v24, %v28
1322; CHECK-NEXT:    vl %v2, 160(%r15)
1323; CHECK-NEXT:    vuphh %v1, %v0
1324; CHECK-NEXT:    vsel %v24, %v25, %v2, %v1
1325; CHECK-NEXT:    vceqh %v1, %v26, %v30
1326; CHECK-NEXT:    vl %v3, 192(%r15)
1327; CHECK-NEXT:    vuphh %v2, %v1
1328; CHECK-NEXT:    vmrlg %v0, %v0, %v0
1329; CHECK-NEXT:    vsel %v28, %v29, %v3, %v2
1330; CHECK-NEXT:    vl %v2, 176(%r15)
1331; CHECK-NEXT:    vuphh %v0, %v0
1332; CHECK-NEXT:    vsel %v26, %v27, %v2, %v0
1333; CHECK-NEXT:    vmrlg %v0, %v1, %v1
1334; CHECK-NEXT:    vl %v1, 208(%r15)
1335; CHECK-NEXT:    vuphh %v0, %v0
1336; CHECK-NEXT:    vsel %v30, %v31, %v1, %v0
1337; CHECK-NEXT:    br %r14
1338  %cmp = icmp eq <16 x i16> %val1, %val2
1339  %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1340  ret <16 x i32> %sel
1341}
1342
1343define <16 x i64> @fun81(<16 x i16> %val1, <16 x i16> %val2, <16 x i64> %val3, <16 x i64> %val4) {
1344; CHECK-LABEL: fun81:
1345; CHECK:       # BB#0:
1346; CHECK-NEXT:    vceqh %v0, %v24, %v28
1347; CHECK-NEXT:    vuphh %v1, %v0
1348; CHECK-NEXT:    vl %v2, 224(%r15)
1349; CHECK-NEXT:    vuphf %v1, %v1
1350; CHECK-NEXT:    vsel %v24, %v25, %v2, %v1
1351; CHECK-NEXT:    vceqh %v1, %v26, %v30
1352; CHECK-NEXT:    vuphh %v2, %v1
1353; CHECK-NEXT:    vl %v3, 288(%r15)
1354; CHECK-NEXT:    vl %v4, 160(%r15)
1355; CHECK-NEXT:    vuphf %v2, %v2
1356; CHECK-NEXT:    vsel %v25, %v4, %v3, %v2
1357; CHECK-NEXT:    vpkg %v2, %v0, %v0
1358; CHECK-NEXT:    vuphh %v2, %v2
1359; CHECK-NEXT:    vl %v3, 240(%r15)
1360; CHECK-NEXT:    vuphf %v2, %v2
1361; CHECK-NEXT:    vsel %v26, %v27, %v3, %v2
1362; CHECK-NEXT:    vmrlg %v2, %v0, %v0
1363; CHECK-NEXT:    vuphh %v2, %v2
1364; CHECK-NEXT:    vsldb %v0, %v0, %v0, 12
1365; CHECK-NEXT:    vl %v3, 256(%r15)
1366; CHECK-NEXT:    vuphf %v2, %v2
1367; CHECK-NEXT:    vuphh %v0, %v0
1368; CHECK-NEXT:    vsel %v28, %v29, %v3, %v2
1369; CHECK-NEXT:    vl %v2, 272(%r15)
1370; CHECK-NEXT:    vl %v3, 176(%r15)
1371; CHECK-NEXT:    vuphf %v0, %v0
1372; CHECK-NEXT:    vsel %v30, %v31, %v2, %v0
1373; CHECK-NEXT:    vl %v2, 304(%r15)
1374; CHECK-NEXT:    vpkg %v0, %v1, %v1
1375; CHECK-NEXT:    vuphh %v0, %v0
1376; CHECK-NEXT:    vuphf %v0, %v0
1377; CHECK-NEXT:    vsel %v27, %v3, %v2, %v0
1378; CHECK-NEXT:    vl %v2, 320(%r15)
1379; CHECK-NEXT:    vl %v3, 192(%r15)
1380; CHECK-NEXT:    vmrlg %v0, %v1, %v1
1381; CHECK-NEXT:    vuphh %v0, %v0
1382; CHECK-NEXT:    vuphf %v0, %v0
1383; CHECK-NEXT:    vsel %v29, %v3, %v2, %v0
1384; CHECK-NEXT:    vl %v2, 208(%r15)
1385; CHECK-NEXT:    vsldb %v0, %v1, %v1, 12
1386; CHECK-NEXT:    vl %v1, 336(%r15)
1387; CHECK-NEXT:    vuphh %v0, %v0
1388; CHECK-NEXT:    vuphf %v0, %v0
1389; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
1390; CHECK-NEXT:    br %r14
1391  %cmp = icmp eq <16 x i16> %val1, %val2
1392  %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1393  ret <16 x i64> %sel
1394}
1395
1396define <16 x float> @fun82(<16 x i16> %val1, <16 x i16> %val2, <16 x float> %val3, <16 x float> %val4) {
1397; CHECK-LABEL: fun82:
1398; CHECK:       # BB#0:
1399; CHECK-NEXT:    vceqh %v0, %v24, %v28
1400; CHECK-NEXT:    vl %v2, 160(%r15)
1401; CHECK-NEXT:    vuphh %v1, %v0
1402; CHECK-NEXT:    vsel %v24, %v25, %v2, %v1
1403; CHECK-NEXT:    vceqh %v1, %v26, %v30
1404; CHECK-NEXT:    vl %v3, 192(%r15)
1405; CHECK-NEXT:    vuphh %v2, %v1
1406; CHECK-NEXT:    vmrlg %v0, %v0, %v0
1407; CHECK-NEXT:    vsel %v28, %v29, %v3, %v2
1408; CHECK-NEXT:    vl %v2, 176(%r15)
1409; CHECK-NEXT:    vuphh %v0, %v0
1410; CHECK-NEXT:    vsel %v26, %v27, %v2, %v0
1411; CHECK-NEXT:    vmrlg %v0, %v1, %v1
1412; CHECK-NEXT:    vl %v1, 208(%r15)
1413; CHECK-NEXT:    vuphh %v0, %v0
1414; CHECK-NEXT:    vsel %v30, %v31, %v1, %v0
1415; CHECK-NEXT:    br %r14
1416  %cmp = icmp eq <16 x i16> %val1, %val2
1417  %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1418  ret <16 x float> %sel
1419}
1420
1421define <16 x double> @fun83(<16 x i16> %val1, <16 x i16> %val2, <16 x double> %val3, <16 x double> %val4) {
1422; CHECK-LABEL: fun83:
1423; CHECK:       # BB#0:
1424; CHECK-NEXT:    vceqh %v0, %v24, %v28
1425; CHECK-NEXT:    vuphh %v1, %v0
1426; CHECK-NEXT:    vl %v2, 224(%r15)
1427; CHECK-NEXT:    vuphf %v1, %v1
1428; CHECK-NEXT:    vsel %v24, %v25, %v2, %v1
1429; CHECK-NEXT:    vceqh %v1, %v26, %v30
1430; CHECK-NEXT:    vuphh %v2, %v1
1431; CHECK-NEXT:    vl %v3, 288(%r15)
1432; CHECK-NEXT:    vl %v4, 160(%r15)
1433; CHECK-NEXT:    vuphf %v2, %v2
1434; CHECK-NEXT:    vsel %v25, %v4, %v3, %v2
1435; CHECK-NEXT:    vpkg %v2, %v0, %v0
1436; CHECK-NEXT:    vuphh %v2, %v2
1437; CHECK-NEXT:    vl %v3, 240(%r15)
1438; CHECK-NEXT:    vuphf %v2, %v2
1439; CHECK-NEXT:    vsel %v26, %v27, %v3, %v2
1440; CHECK-NEXT:    vmrlg %v2, %v0, %v0
1441; CHECK-NEXT:    vuphh %v2, %v2
1442; CHECK-NEXT:    vsldb %v0, %v0, %v0, 12
1443; CHECK-NEXT:    vl %v3, 256(%r15)
1444; CHECK-NEXT:    vuphf %v2, %v2
1445; CHECK-NEXT:    vuphh %v0, %v0
1446; CHECK-NEXT:    vsel %v28, %v29, %v3, %v2
1447; CHECK-NEXT:    vl %v2, 272(%r15)
1448; CHECK-NEXT:    vl %v3, 176(%r15)
1449; CHECK-NEXT:    vuphf %v0, %v0
1450; CHECK-NEXT:    vsel %v30, %v31, %v2, %v0
1451; CHECK-NEXT:    vl %v2, 304(%r15)
1452; CHECK-NEXT:    vpkg %v0, %v1, %v1
1453; CHECK-NEXT:    vuphh %v0, %v0
1454; CHECK-NEXT:    vuphf %v0, %v0
1455; CHECK-NEXT:    vsel %v27, %v3, %v2, %v0
1456; CHECK-NEXT:    vl %v2, 320(%r15)
1457; CHECK-NEXT:    vl %v3, 192(%r15)
1458; CHECK-NEXT:    vmrlg %v0, %v1, %v1
1459; CHECK-NEXT:    vuphh %v0, %v0
1460; CHECK-NEXT:    vuphf %v0, %v0
1461; CHECK-NEXT:    vsel %v29, %v3, %v2, %v0
1462; CHECK-NEXT:    vl %v2, 208(%r15)
1463; CHECK-NEXT:    vsldb %v0, %v1, %v1, 12
1464; CHECK-NEXT:    vl %v1, 336(%r15)
1465; CHECK-NEXT:    vuphh %v0, %v0
1466; CHECK-NEXT:    vuphf %v0, %v0
1467; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
1468; CHECK-NEXT:    br %r14
1469  %cmp = icmp eq <16 x i16> %val1, %val2
1470  %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1471  ret <16 x double> %sel
1472}
1473
1474define <16 x i8> @fun84(<16 x i32> %val1, <16 x i32> %val2, <16 x i8> %val3, <16 x i8> %val4) {
1475; CHECK-LABEL: fun84:
1476; CHECK:       # BB#0:
1477; CHECK-NEXT:    vceqf %v0, %v30, %v31
1478; CHECK-NEXT:    vceqf %v1, %v28, %v29
1479; CHECK-NEXT:    vpkf %v0, %v1, %v0
1480; CHECK-NEXT:    vceqf %v1, %v26, %v27
1481; CHECK-NEXT:    vceqf %v2, %v24, %v25
1482; CHECK-NEXT:    vpkf %v1, %v2, %v1
1483; CHECK-NEXT:    vpkh %v0, %v1, %v0
1484; CHECK-NEXT:    vl %v1, 176(%r15)
1485; CHECK-NEXT:    vl %v2, 160(%r15)
1486; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1487; CHECK-NEXT:    br %r14
1488  %cmp = icmp eq <16 x i32> %val1, %val2
1489  %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1490  ret <16 x i8> %sel
1491}
1492
1493define <16 x i16> @fun85(<16 x i32> %val1, <16 x i32> %val2, <16 x i16> %val3, <16 x i16> %val4) {
1494; CHECK-LABEL: fun85:
1495; CHECK:       # BB#0:
1496; CHECK-NEXT:    vceqf %v0, %v26, %v27
1497; CHECK-NEXT:    vceqf %v1, %v24, %v25
1498; CHECK-NEXT:    vpkf %v0, %v1, %v0
1499; CHECK-NEXT:    vl %v1, 192(%r15)
1500; CHECK-NEXT:    vl %v2, 160(%r15)
1501; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1502; CHECK-NEXT:    vceqf %v0, %v30, %v31
1503; CHECK-NEXT:    vceqf %v1, %v28, %v29
1504; CHECK-NEXT:    vpkf %v0, %v1, %v0
1505; CHECK-NEXT:    vl %v1, 208(%r15)
1506; CHECK-NEXT:    vl %v2, 176(%r15)
1507; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1508; CHECK-NEXT:    br %r14
1509  %cmp = icmp eq <16 x i32> %val1, %val2
1510  %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1511  ret <16 x i16> %sel
1512}
1513
1514define <16 x i32> @fun86(<16 x i32> %val1, <16 x i32> %val2, <16 x i32> %val3, <16 x i32> %val4) {
1515; CHECK-LABEL: fun86:
1516; CHECK:       # BB#0:
1517; CHECK-NEXT:    vl %v1, 224(%r15)
1518; CHECK-NEXT:    vl %v2, 160(%r15)
1519; CHECK-NEXT:    vceqf %v0, %v24, %v25
1520; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1521; CHECK-NEXT:    vl %v1, 240(%r15)
1522; CHECK-NEXT:    vl %v2, 176(%r15)
1523; CHECK-NEXT:    vceqf %v0, %v26, %v27
1524; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1525; CHECK-NEXT:    vl %v1, 256(%r15)
1526; CHECK-NEXT:    vl %v2, 192(%r15)
1527; CHECK-NEXT:    vceqf %v0, %v28, %v29
1528; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
1529; CHECK-NEXT:    vl %v1, 272(%r15)
1530; CHECK-NEXT:    vl %v2, 208(%r15)
1531; CHECK-NEXT:    vceqf %v0, %v30, %v31
1532; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
1533; CHECK-NEXT:    br %r14
1534  %cmp = icmp eq <16 x i32> %val1, %val2
1535  %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1536  ret <16 x i32> %sel
1537}
1538
1539define <16 x i64> @fun87(<16 x i32> %val1, <16 x i32> %val2, <16 x i64> %val3, <16 x i64> %val4) {
1540; CHECK-LABEL: fun87:
1541; CHECK:       # BB#0:
1542; CHECK-NEXT:    vceqf %v1, %v24, %v25
1543; CHECK-NEXT:    vl %v2, 288(%r15)
1544; CHECK-NEXT:    vl %v3, 160(%r15)
1545; CHECK-NEXT:    vuphf %v0, %v1
1546; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
1547; CHECK-NEXT:    vceqf %v2, %v26, %v27
1548; CHECK-NEXT:    vl %v3, 320(%r15)
1549; CHECK-NEXT:    vl %v4, 192(%r15)
1550; CHECK-NEXT:    vuphf %v0, %v2
1551; CHECK-NEXT:    vsel %v0, %v4, %v3, %v0
1552; CHECK-NEXT:    vceqf %v3, %v28, %v29
1553; CHECK-NEXT:    vl %v5, 352(%r15)
1554; CHECK-NEXT:    vl %v6, 224(%r15)
1555; CHECK-NEXT:    vuphf %v4, %v3
1556; CHECK-NEXT:    vsel %v25, %v6, %v5, %v4
1557; CHECK-NEXT:    vceqf %v4, %v30, %v31
1558; CHECK-NEXT:    vl %v6, 384(%r15)
1559; CHECK-NEXT:    vl %v7, 256(%r15)
1560; CHECK-NEXT:    vuphf %v5, %v4
1561; CHECK-NEXT:    vmrlg %v1, %v1, %v1
1562; CHECK-NEXT:    vsel %v29, %v7, %v6, %v5
1563; CHECK-NEXT:    vl %v5, 304(%r15)
1564; CHECK-NEXT:    vl %v6, 176(%r15)
1565; CHECK-NEXT:    vuphf %v1, %v1
1566; CHECK-NEXT:    vsel %v26, %v6, %v5, %v1
1567; CHECK-NEXT:    vmrlg %v1, %v2, %v2
1568; CHECK-NEXT:    vl %v2, 336(%r15)
1569; CHECK-NEXT:    vl %v5, 208(%r15)
1570; CHECK-NEXT:    vuphf %v1, %v1
1571; CHECK-NEXT:    vsel %v30, %v5, %v2, %v1
1572; CHECK-NEXT:    vmrlg %v1, %v3, %v3
1573; CHECK-NEXT:    vl %v2, 368(%r15)
1574; CHECK-NEXT:    vl %v3, 240(%r15)
1575; CHECK-NEXT:    vuphf %v1, %v1
1576; CHECK-NEXT:    vlr %v28, %v0
1577; CHECK-NEXT:    vsel %v27, %v3, %v2, %v1
1578; CHECK-NEXT:    vl %v2, 400(%r15)
1579; CHECK-NEXT:    vl %v3, 272(%r15)
1580; CHECK-NEXT:    vmrlg %v1, %v4, %v4
1581; CHECK-NEXT:    vuphf %v1, %v1
1582; CHECK-NEXT:    vsel %v31, %v3, %v2, %v1
1583; CHECK-NEXT:    br %r14
1584  %cmp = icmp eq <16 x i32> %val1, %val2
1585  %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1586  ret <16 x i64> %sel
1587}
1588
1589define <16 x float> @fun88(<16 x i32> %val1, <16 x i32> %val2, <16 x float> %val3, <16 x float> %val4) {
1590; CHECK-LABEL: fun88:
1591; CHECK:       # BB#0:
1592; CHECK-NEXT:    vl %v1, 224(%r15)
1593; CHECK-NEXT:    vl %v2, 160(%r15)
1594; CHECK-NEXT:    vceqf %v0, %v24, %v25
1595; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1596; CHECK-NEXT:    vl %v1, 240(%r15)
1597; CHECK-NEXT:    vl %v2, 176(%r15)
1598; CHECK-NEXT:    vceqf %v0, %v26, %v27
1599; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1600; CHECK-NEXT:    vl %v1, 256(%r15)
1601; CHECK-NEXT:    vl %v2, 192(%r15)
1602; CHECK-NEXT:    vceqf %v0, %v28, %v29
1603; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
1604; CHECK-NEXT:    vl %v1, 272(%r15)
1605; CHECK-NEXT:    vl %v2, 208(%r15)
1606; CHECK-NEXT:    vceqf %v0, %v30, %v31
1607; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
1608; CHECK-NEXT:    br %r14
1609  %cmp = icmp eq <16 x i32> %val1, %val2
1610  %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1611  ret <16 x float> %sel
1612}
1613
1614define <16 x double> @fun89(<16 x i32> %val1, <16 x i32> %val2, <16 x double> %val3, <16 x double> %val4) {
1615; CHECK-LABEL: fun89:
1616; CHECK:       # BB#0:
1617; CHECK-NEXT:    vceqf %v1, %v24, %v25
1618; CHECK-NEXT:    vl %v2, 288(%r15)
1619; CHECK-NEXT:    vl %v3, 160(%r15)
1620; CHECK-NEXT:    vuphf %v0, %v1
1621; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
1622; CHECK-NEXT:    vceqf %v2, %v26, %v27
1623; CHECK-NEXT:    vl %v3, 320(%r15)
1624; CHECK-NEXT:    vl %v4, 192(%r15)
1625; CHECK-NEXT:    vuphf %v0, %v2
1626; CHECK-NEXT:    vsel %v0, %v4, %v3, %v0
1627; CHECK-NEXT:    vceqf %v3, %v28, %v29
1628; CHECK-NEXT:    vl %v5, 352(%r15)
1629; CHECK-NEXT:    vl %v6, 224(%r15)
1630; CHECK-NEXT:    vuphf %v4, %v3
1631; CHECK-NEXT:    vsel %v25, %v6, %v5, %v4
1632; CHECK-NEXT:    vceqf %v4, %v30, %v31
1633; CHECK-NEXT:    vl %v6, 384(%r15)
1634; CHECK-NEXT:    vl %v7, 256(%r15)
1635; CHECK-NEXT:    vuphf %v5, %v4
1636; CHECK-NEXT:    vmrlg %v1, %v1, %v1
1637; CHECK-NEXT:    vsel %v29, %v7, %v6, %v5
1638; CHECK-NEXT:    vl %v5, 304(%r15)
1639; CHECK-NEXT:    vl %v6, 176(%r15)
1640; CHECK-NEXT:    vuphf %v1, %v1
1641; CHECK-NEXT:    vsel %v26, %v6, %v5, %v1
1642; CHECK-NEXT:    vmrlg %v1, %v2, %v2
1643; CHECK-NEXT:    vl %v2, 336(%r15)
1644; CHECK-NEXT:    vl %v5, 208(%r15)
1645; CHECK-NEXT:    vuphf %v1, %v1
1646; CHECK-NEXT:    vsel %v30, %v5, %v2, %v1
1647; CHECK-NEXT:    vmrlg %v1, %v3, %v3
1648; CHECK-NEXT:    vl %v2, 368(%r15)
1649; CHECK-NEXT:    vl %v3, 240(%r15)
1650; CHECK-NEXT:    vuphf %v1, %v1
1651; CHECK-NEXT:    vlr %v28, %v0
1652; CHECK-NEXT:    vsel %v27, %v3, %v2, %v1
1653; CHECK-NEXT:    vl %v2, 400(%r15)
1654; CHECK-NEXT:    vl %v3, 272(%r15)
1655; CHECK-NEXT:    vmrlg %v1, %v4, %v4
1656; CHECK-NEXT:    vuphf %v1, %v1
1657; CHECK-NEXT:    vsel %v31, %v3, %v2, %v1
1658; CHECK-NEXT:    br %r14
1659  %cmp = icmp eq <16 x i32> %val1, %val2
1660  %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1661  ret <16 x double> %sel
1662}
1663
1664define <16 x i8> @fun90(<16 x i64> %val1, <16 x i64> %val2, <16 x i8> %val3, <16 x i8> %val4) {
1665; CHECK-LABEL: fun90:
1666; CHECK:       # BB#0:
1667; CHECK-NEXT:    vl %v0, 272(%r15)
1668; CHECK-NEXT:    vl %v1, 256(%r15)
1669; CHECK-NEXT:    vceqg %v0, %v31, %v0
1670; CHECK-NEXT:    vceqg %v1, %v29, %v1
1671; CHECK-NEXT:    vpkg %v0, %v1, %v0
1672; CHECK-NEXT:    vl %v1, 240(%r15)
1673; CHECK-NEXT:    vl %v2, 224(%r15)
1674; CHECK-NEXT:    vceqg %v1, %v27, %v1
1675; CHECK-NEXT:    vceqg %v2, %v25, %v2
1676; CHECK-NEXT:    vpkg %v1, %v2, %v1
1677; CHECK-NEXT:    vpkf %v0, %v1, %v0
1678; CHECK-NEXT:    vl %v1, 208(%r15)
1679; CHECK-NEXT:    vl %v2, 192(%r15)
1680; CHECK-NEXT:    vceqg %v1, %v30, %v1
1681; CHECK-NEXT:    vceqg %v2, %v28, %v2
1682; CHECK-NEXT:    vpkg %v1, %v2, %v1
1683; CHECK-NEXT:    vl %v2, 176(%r15)
1684; CHECK-NEXT:    vl %v3, 160(%r15)
1685; CHECK-NEXT:    vceqg %v2, %v26, %v2
1686; CHECK-NEXT:    vceqg %v3, %v24, %v3
1687; CHECK-NEXT:    vpkg %v2, %v3, %v2
1688; CHECK-NEXT:    vpkf %v1, %v2, %v1
1689; CHECK-NEXT:    vpkh %v0, %v1, %v0
1690; CHECK-NEXT:    vl %v1, 304(%r15)
1691; CHECK-NEXT:    vl %v2, 288(%r15)
1692; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1693; CHECK-NEXT:    br %r14
1694  %cmp = icmp eq <16 x i64> %val1, %val2
1695  %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
1696  ret <16 x i8> %sel
1697}
1698
1699define <16 x i16> @fun91(<16 x i64> %val1, <16 x i64> %val2, <16 x i16> %val3, <16 x i16> %val4) {
1700; CHECK-LABEL: fun91:
1701; CHECK:       # BB#0:
1702; CHECK-NEXT:    vl %v0, 208(%r15)
1703; CHECK-NEXT:    vl %v1, 192(%r15)
1704; CHECK-NEXT:    vceqg %v0, %v30, %v0
1705; CHECK-NEXT:    vceqg %v1, %v28, %v1
1706; CHECK-NEXT:    vpkg %v0, %v1, %v0
1707; CHECK-NEXT:    vl %v1, 176(%r15)
1708; CHECK-NEXT:    vl %v2, 160(%r15)
1709; CHECK-NEXT:    vceqg %v1, %v26, %v1
1710; CHECK-NEXT:    vceqg %v2, %v24, %v2
1711; CHECK-NEXT:    vpkg %v1, %v2, %v1
1712; CHECK-NEXT:    vpkf %v0, %v1, %v0
1713; CHECK-NEXT:    vl %v1, 320(%r15)
1714; CHECK-NEXT:    vl %v2, 288(%r15)
1715; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1716; CHECK-NEXT:    vl %v0, 272(%r15)
1717; CHECK-NEXT:    vl %v1, 256(%r15)
1718; CHECK-NEXT:    vceqg %v0, %v31, %v0
1719; CHECK-NEXT:    vceqg %v1, %v29, %v1
1720; CHECK-NEXT:    vpkg %v0, %v1, %v0
1721; CHECK-NEXT:    vl %v1, 240(%r15)
1722; CHECK-NEXT:    vl %v2, 224(%r15)
1723; CHECK-NEXT:    vceqg %v1, %v27, %v1
1724; CHECK-NEXT:    vceqg %v2, %v25, %v2
1725; CHECK-NEXT:    vpkg %v1, %v2, %v1
1726; CHECK-NEXT:    vpkf %v0, %v1, %v0
1727; CHECK-NEXT:    vl %v1, 336(%r15)
1728; CHECK-NEXT:    vl %v2, 304(%r15)
1729; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1730; CHECK-NEXT:    br %r14
1731  %cmp = icmp eq <16 x i64> %val1, %val2
1732  %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
1733  ret <16 x i16> %sel
1734}
1735
1736define <16 x i32> @fun92(<16 x i64> %val1, <16 x i64> %val2, <16 x i32> %val3, <16 x i32> %val4) {
1737; CHECK-LABEL: fun92:
1738; CHECK:       # BB#0:
1739; CHECK-NEXT:    vl %v0, 176(%r15)
1740; CHECK-NEXT:    vl %v1, 160(%r15)
1741; CHECK-NEXT:    vceqg %v0, %v26, %v0
1742; CHECK-NEXT:    vceqg %v1, %v24, %v1
1743; CHECK-NEXT:    vpkg %v0, %v1, %v0
1744; CHECK-NEXT:    vl %v1, 352(%r15)
1745; CHECK-NEXT:    vl %v2, 288(%r15)
1746; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1747; CHECK-NEXT:    vl %v0, 208(%r15)
1748; CHECK-NEXT:    vl %v1, 192(%r15)
1749; CHECK-NEXT:    vceqg %v0, %v30, %v0
1750; CHECK-NEXT:    vceqg %v1, %v28, %v1
1751; CHECK-NEXT:    vpkg %v0, %v1, %v0
1752; CHECK-NEXT:    vl %v1, 368(%r15)
1753; CHECK-NEXT:    vl %v2, 304(%r15)
1754; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1755; CHECK-NEXT:    vl %v0, 240(%r15)
1756; CHECK-NEXT:    vl %v1, 224(%r15)
1757; CHECK-NEXT:    vceqg %v0, %v27, %v0
1758; CHECK-NEXT:    vceqg %v1, %v25, %v1
1759; CHECK-NEXT:    vpkg %v0, %v1, %v0
1760; CHECK-NEXT:    vl %v1, 384(%r15)
1761; CHECK-NEXT:    vl %v2, 320(%r15)
1762; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
1763; CHECK-NEXT:    vl %v0, 272(%r15)
1764; CHECK-NEXT:    vl %v1, 256(%r15)
1765; CHECK-NEXT:    vceqg %v0, %v31, %v0
1766; CHECK-NEXT:    vceqg %v1, %v29, %v1
1767; CHECK-NEXT:    vpkg %v0, %v1, %v0
1768; CHECK-NEXT:    vl %v1, 400(%r15)
1769; CHECK-NEXT:    vl %v2, 336(%r15)
1770; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
1771; CHECK-NEXT:    br %r14
1772  %cmp = icmp eq <16 x i64> %val1, %val2
1773  %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
1774  ret <16 x i32> %sel
1775}
1776
1777define <16 x i64> @fun93(<16 x i64> %val1, <16 x i64> %val2, <16 x i64> %val3, <16 x i64> %val4) {
1778; CHECK-LABEL: fun93:
1779; CHECK:       # BB#0:
1780; CHECK-NEXT:    vl %v0, 160(%r15)
1781; CHECK-NEXT:    vl %v1, 416(%r15)
1782; CHECK-NEXT:    vl %v2, 288(%r15)
1783; CHECK-NEXT:    vceqg %v0, %v24, %v0
1784; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1785; CHECK-NEXT:    vl %v0, 176(%r15)
1786; CHECK-NEXT:    vl %v1, 432(%r15)
1787; CHECK-NEXT:    vl %v2, 304(%r15)
1788; CHECK-NEXT:    vceqg %v0, %v26, %v0
1789; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1790; CHECK-NEXT:    vl %v0, 192(%r15)
1791; CHECK-NEXT:    vl %v1, 448(%r15)
1792; CHECK-NEXT:    vl %v2, 320(%r15)
1793; CHECK-NEXT:    vceqg %v0, %v28, %v0
1794; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
1795; CHECK-NEXT:    vl %v0, 208(%r15)
1796; CHECK-NEXT:    vl %v1, 464(%r15)
1797; CHECK-NEXT:    vl %v2, 336(%r15)
1798; CHECK-NEXT:    vceqg %v0, %v30, %v0
1799; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
1800; CHECK-NEXT:    vl %v0, 224(%r15)
1801; CHECK-NEXT:    vl %v1, 480(%r15)
1802; CHECK-NEXT:    vl %v2, 352(%r15)
1803; CHECK-NEXT:    vceqg %v0, %v25, %v0
1804; CHECK-NEXT:    vsel %v25, %v2, %v1, %v0
1805; CHECK-NEXT:    vl %v0, 240(%r15)
1806; CHECK-NEXT:    vl %v1, 496(%r15)
1807; CHECK-NEXT:    vl %v2, 368(%r15)
1808; CHECK-NEXT:    vceqg %v0, %v27, %v0
1809; CHECK-NEXT:    vsel %v27, %v2, %v1, %v0
1810; CHECK-NEXT:    vl %v0, 256(%r15)
1811; CHECK-NEXT:    vceqg %v0, %v29, %v0
1812; CHECK-NEXT:    vl %v1, 512(%r15)
1813; CHECK-NEXT:    vl %v2, 384(%r15)
1814; CHECK-NEXT:    vsel %v29, %v2, %v1, %v0
1815; CHECK-NEXT:    vl %v0, 272(%r15)
1816; CHECK-NEXT:    vceqg %v0, %v31, %v0
1817; CHECK-NEXT:    vl %v1, 528(%r15)
1818; CHECK-NEXT:    vl %v2, 400(%r15)
1819; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
1820; CHECK-NEXT:    br %r14
1821  %cmp = icmp eq <16 x i64> %val1, %val2
1822  %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
1823  ret <16 x i64> %sel
1824}
1825
1826define <16 x float> @fun94(<16 x i64> %val1, <16 x i64> %val2, <16 x float> %val3, <16 x float> %val4) {
1827; CHECK-LABEL: fun94:
1828; CHECK:       # BB#0:
1829; CHECK-NEXT:    vl %v0, 176(%r15)
1830; CHECK-NEXT:    vl %v1, 160(%r15)
1831; CHECK-NEXT:    vceqg %v0, %v26, %v0
1832; CHECK-NEXT:    vceqg %v1, %v24, %v1
1833; CHECK-NEXT:    vpkg %v0, %v1, %v0
1834; CHECK-NEXT:    vl %v1, 352(%r15)
1835; CHECK-NEXT:    vl %v2, 288(%r15)
1836; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1837; CHECK-NEXT:    vl %v0, 208(%r15)
1838; CHECK-NEXT:    vl %v1, 192(%r15)
1839; CHECK-NEXT:    vceqg %v0, %v30, %v0
1840; CHECK-NEXT:    vceqg %v1, %v28, %v1
1841; CHECK-NEXT:    vpkg %v0, %v1, %v0
1842; CHECK-NEXT:    vl %v1, 368(%r15)
1843; CHECK-NEXT:    vl %v2, 304(%r15)
1844; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1845; CHECK-NEXT:    vl %v0, 240(%r15)
1846; CHECK-NEXT:    vl %v1, 224(%r15)
1847; CHECK-NEXT:    vceqg %v0, %v27, %v0
1848; CHECK-NEXT:    vceqg %v1, %v25, %v1
1849; CHECK-NEXT:    vpkg %v0, %v1, %v0
1850; CHECK-NEXT:    vl %v1, 384(%r15)
1851; CHECK-NEXT:    vl %v2, 320(%r15)
1852; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
1853; CHECK-NEXT:    vl %v0, 272(%r15)
1854; CHECK-NEXT:    vl %v1, 256(%r15)
1855; CHECK-NEXT:    vceqg %v0, %v31, %v0
1856; CHECK-NEXT:    vceqg %v1, %v29, %v1
1857; CHECK-NEXT:    vpkg %v0, %v1, %v0
1858; CHECK-NEXT:    vl %v1, 400(%r15)
1859; CHECK-NEXT:    vl %v2, 336(%r15)
1860; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
1861; CHECK-NEXT:    br %r14
1862  %cmp = icmp eq <16 x i64> %val1, %val2
1863  %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
1864  ret <16 x float> %sel
1865}
1866
1867define <16 x double> @fun95(<16 x i64> %val1, <16 x i64> %val2, <16 x double> %val3, <16 x double> %val4) {
1868; CHECK-LABEL: fun95:
1869; CHECK:       # BB#0:
1870; CHECK-NEXT:    vl %v0, 160(%r15)
1871; CHECK-NEXT:    vl %v1, 416(%r15)
1872; CHECK-NEXT:    vl %v2, 288(%r15)
1873; CHECK-NEXT:    vceqg %v0, %v24, %v0
1874; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1875; CHECK-NEXT:    vl %v0, 176(%r15)
1876; CHECK-NEXT:    vl %v1, 432(%r15)
1877; CHECK-NEXT:    vl %v2, 304(%r15)
1878; CHECK-NEXT:    vceqg %v0, %v26, %v0
1879; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1880; CHECK-NEXT:    vl %v0, 192(%r15)
1881; CHECK-NEXT:    vl %v1, 448(%r15)
1882; CHECK-NEXT:    vl %v2, 320(%r15)
1883; CHECK-NEXT:    vceqg %v0, %v28, %v0
1884; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
1885; CHECK-NEXT:    vl %v0, 208(%r15)
1886; CHECK-NEXT:    vl %v1, 464(%r15)
1887; CHECK-NEXT:    vl %v2, 336(%r15)
1888; CHECK-NEXT:    vceqg %v0, %v30, %v0
1889; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
1890; CHECK-NEXT:    vl %v0, 224(%r15)
1891; CHECK-NEXT:    vl %v1, 480(%r15)
1892; CHECK-NEXT:    vl %v2, 352(%r15)
1893; CHECK-NEXT:    vceqg %v0, %v25, %v0
1894; CHECK-NEXT:    vsel %v25, %v2, %v1, %v0
1895; CHECK-NEXT:    vl %v0, 240(%r15)
1896; CHECK-NEXT:    vl %v1, 496(%r15)
1897; CHECK-NEXT:    vl %v2, 368(%r15)
1898; CHECK-NEXT:    vceqg %v0, %v27, %v0
1899; CHECK-NEXT:    vsel %v27, %v2, %v1, %v0
1900; CHECK-NEXT:    vl %v0, 256(%r15)
1901; CHECK-NEXT:    vceqg %v0, %v29, %v0
1902; CHECK-NEXT:    vl %v1, 512(%r15)
1903; CHECK-NEXT:    vl %v2, 384(%r15)
1904; CHECK-NEXT:    vsel %v29, %v2, %v1, %v0
1905; CHECK-NEXT:    vl %v0, 272(%r15)
1906; CHECK-NEXT:    vceqg %v0, %v31, %v0
1907; CHECK-NEXT:    vl %v1, 528(%r15)
1908; CHECK-NEXT:    vl %v2, 400(%r15)
1909; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
1910; CHECK-NEXT:    br %r14
1911  %cmp = icmp eq <16 x i64> %val1, %val2
1912  %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
1913  ret <16 x double> %sel
1914}
1915
1916define <2 x i8> @fun96(<2 x float> %val1, <2 x float> %val2, <2 x i8> %val3, <2 x i8> %val4) {
1917; CHECK-LABEL: fun96:
1918; CHECK:       # BB#0:
1919; CHECK-NEXT:    vmrlf %v0, %v26, %v26
1920; CHECK-NEXT:    vmrlf %v1, %v24, %v24
1921; CHECK-NEXT:    vldeb %v0, %v0
1922; CHECK-NEXT:    vldeb %v1, %v1
1923; CHECK-NEXT:    vfchdb %v0, %v1, %v0
1924; CHECK-NEXT:    vmrhf %v1, %v26, %v26
1925; CHECK-NEXT:    vmrhf %v2, %v24, %v24
1926; CHECK-NEXT:    vldeb %v1, %v1
1927; CHECK-NEXT:    larl %r1, .LCPI96_0
1928; CHECK-NEXT:    vldeb %v2, %v2
1929; CHECK-NEXT:    vfchdb %v1, %v2, %v1
1930; CHECK-NEXT:    vpkg %v0, %v1, %v0
1931; CHECK-NEXT:    vl %v1, 0(%r1)
1932; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
1933; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
1934; CHECK-NEXT:    br %r14
1935  %cmp = fcmp ogt <2 x float> %val1, %val2
1936  %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
1937  ret <2 x i8> %sel
1938}
1939
1940define <2 x i16> @fun97(<2 x float> %val1, <2 x float> %val2, <2 x i16> %val3, <2 x i16> %val4) {
1941; CHECK-LABEL: fun97:
1942; CHECK:       # BB#0:
1943; CHECK-NEXT:    vmrlf %v0, %v26, %v26
1944; CHECK-NEXT:    vmrlf %v1, %v24, %v24
1945; CHECK-NEXT:    vldeb %v0, %v0
1946; CHECK-NEXT:    vldeb %v1, %v1
1947; CHECK-NEXT:    vfchdb %v0, %v1, %v0
1948; CHECK-NEXT:    vmrhf %v1, %v26, %v26
1949; CHECK-NEXT:    vmrhf %v2, %v24, %v24
1950; CHECK-NEXT:    vldeb %v1, %v1
1951; CHECK-NEXT:    vldeb %v2, %v2
1952; CHECK-NEXT:    vfchdb %v1, %v2, %v1
1953; CHECK-NEXT:    vpkg %v0, %v1, %v0
1954; CHECK-NEXT:    vpkf %v0, %v0, %v0
1955; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
1956; CHECK-NEXT:    br %r14
1957  %cmp = fcmp ogt <2 x float> %val1, %val2
1958  %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
1959  ret <2 x i16> %sel
1960}
1961
1962define <2 x i32> @fun98(<2 x float> %val1, <2 x float> %val2, <2 x i32> %val3, <2 x i32> %val4) {
1963; CHECK-LABEL: fun98:
1964; CHECK:       # BB#0:
1965; CHECK-NEXT:    vmrlf %v0, %v26, %v26
1966; CHECK-NEXT:    vmrlf %v1, %v24, %v24
1967; CHECK-NEXT:    vldeb %v0, %v0
1968; CHECK-NEXT:    vldeb %v1, %v1
1969; CHECK-NEXT:    vfchdb %v0, %v1, %v0
1970; CHECK-NEXT:    vmrhf %v1, %v26, %v26
1971; CHECK-NEXT:    vmrhf %v2, %v24, %v24
1972; CHECK-NEXT:    vldeb %v1, %v1
1973; CHECK-NEXT:    vldeb %v2, %v2
1974; CHECK-NEXT:    vfchdb %v1, %v2, %v1
1975; CHECK-NEXT:    vpkg %v0, %v1, %v0
1976; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
1977; CHECK-NEXT:    br %r14
1978  %cmp = fcmp ogt <2 x float> %val1, %val2
1979  %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
1980  ret <2 x i32> %sel
1981}
1982
1983define <2 x i64> @fun99(<2 x float> %val1, <2 x float> %val2, <2 x i64> %val3, <2 x i64> %val4) {
1984; CHECK-LABEL: fun99:
1985; CHECK:       # BB#0:
1986; CHECK-NEXT:    vmrlf %v0, %v26, %v26
1987; CHECK-NEXT:    vmrlf %v1, %v24, %v24
1988; CHECK-NEXT:    vldeb %v0, %v0
1989; CHECK-NEXT:    vldeb %v1, %v1
1990; CHECK-NEXT:    vfchdb %v0, %v1, %v0
1991; CHECK-NEXT:    vmrhf %v1, %v26, %v26
1992; CHECK-NEXT:    vmrhf %v2, %v24, %v24
1993; CHECK-NEXT:    vldeb %v1, %v1
1994; CHECK-NEXT:    vldeb %v2, %v2
1995; CHECK-NEXT:    vfchdb %v1, %v2, %v1
1996; CHECK-NEXT:    vpkg %v0, %v1, %v0
1997; CHECK-NEXT:    vuphf %v0, %v0
1998; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
1999; CHECK-NEXT:    br %r14
2000  %cmp = fcmp ogt <2 x float> %val1, %val2
2001  %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
2002  ret <2 x i64> %sel
2003}
2004
2005define <2 x float> @fun100(<2 x float> %val1, <2 x float> %val2, <2 x float> %val3, <2 x float> %val4) {
2006; CHECK-LABEL: fun100:
2007; CHECK:       # BB#0:
2008; CHECK-NEXT:    vmrlf %v0, %v26, %v26
2009; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2010; CHECK-NEXT:    vldeb %v0, %v0
2011; CHECK-NEXT:    vldeb %v1, %v1
2012; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2013; CHECK-NEXT:    vmrhf %v1, %v26, %v26
2014; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2015; CHECK-NEXT:    vldeb %v1, %v1
2016; CHECK-NEXT:    vldeb %v2, %v2
2017; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2018; CHECK-NEXT:    vpkg %v0, %v1, %v0
2019; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
2020; CHECK-NEXT:    br %r14
2021  %cmp = fcmp ogt <2 x float> %val1, %val2
2022  %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
2023  ret <2 x float> %sel
2024}
2025
2026define <2 x double> @fun101(<2 x float> %val1, <2 x float> %val2, <2 x double> %val3, <2 x double> %val4) {
2027; CHECK-LABEL: fun101:
2028; CHECK:       # BB#0:
2029; CHECK-NEXT:    vmrlf %v0, %v26, %v26
2030; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2031; CHECK-NEXT:    vldeb %v0, %v0
2032; CHECK-NEXT:    vldeb %v1, %v1
2033; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2034; CHECK-NEXT:    vmrhf %v1, %v26, %v26
2035; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2036; CHECK-NEXT:    vldeb %v1, %v1
2037; CHECK-NEXT:    vldeb %v2, %v2
2038; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2039; CHECK-NEXT:    vpkg %v0, %v1, %v0
2040; CHECK-NEXT:    vuphf %v0, %v0
2041; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
2042; CHECK-NEXT:    br %r14
2043  %cmp = fcmp ogt <2 x float> %val1, %val2
2044  %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
2045  ret <2 x double> %sel
2046}
2047
2048define <2 x i8> @fun102(<2 x double> %val1, <2 x double> %val2, <2 x i8> %val3, <2 x i8> %val4) {
2049; CHECK-LABEL: fun102:
2050; CHECK:       # BB#0:
2051; CHECK-NEXT:    vfchdb %v0, %v24, %v26
2052; CHECK-NEXT:    vrepih %v1, 1807
2053; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
2054; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
2055; CHECK-NEXT:    br %r14
2056  %cmp = fcmp ogt <2 x double> %val1, %val2
2057  %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
2058  ret <2 x i8> %sel
2059}
2060
2061define <2 x i16> @fun103(<2 x double> %val1, <2 x double> %val2, <2 x i16> %val3, <2 x i16> %val4) {
2062; CHECK-LABEL: fun103:
2063; CHECK:       # BB#0:
2064; CHECK-NEXT:    larl %r1, .LCPI103_0
2065; CHECK-NEXT:    vl %v1, 0(%r1)
2066; CHECK-NEXT:    vfchdb %v0, %v24, %v26
2067; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
2068; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
2069; CHECK-NEXT:    br %r14
2070  %cmp = fcmp ogt <2 x double> %val1, %val2
2071  %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
2072  ret <2 x i16> %sel
2073}
2074
2075define <2 x i32> @fun104(<2 x double> %val1, <2 x double> %val2, <2 x i32> %val3, <2 x i32> %val4) {
2076; CHECK-LABEL: fun104:
2077; CHECK:       # BB#0:
2078; CHECK-NEXT:    vfchdb %v0, %v24, %v26
2079; CHECK-NEXT:    vpkg %v0, %v0, %v0
2080; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
2081; CHECK-NEXT:    br %r14
2082  %cmp = fcmp ogt <2 x double> %val1, %val2
2083  %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
2084  ret <2 x i32> %sel
2085}
2086
2087define <2 x i64> @fun105(<2 x double> %val1, <2 x double> %val2, <2 x i64> %val3, <2 x i64> %val4) {
2088; CHECK-LABEL: fun105:
2089; CHECK:       # BB#0:
2090; CHECK-NEXT:    vfchdb %v0, %v24, %v26
2091; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
2092; CHECK-NEXT:    br %r14
2093  %cmp = fcmp ogt <2 x double> %val1, %val2
2094  %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
2095  ret <2 x i64> %sel
2096}
2097
2098define <2 x float> @fun106(<2 x double> %val1, <2 x double> %val2, <2 x float> %val3, <2 x float> %val4) {
2099; CHECK-LABEL: fun106:
2100; CHECK:       # BB#0:
2101; CHECK-NEXT:    vfchdb %v0, %v24, %v26
2102; CHECK-NEXT:    vpkg %v0, %v0, %v0
2103; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
2104; CHECK-NEXT:    br %r14
2105  %cmp = fcmp ogt <2 x double> %val1, %val2
2106  %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
2107  ret <2 x float> %sel
2108}
2109
2110define <2 x double> @fun107(<2 x double> %val1, <2 x double> %val2, <2 x double> %val3, <2 x double> %val4) {
2111; CHECK-LABEL: fun107:
2112; CHECK:       # BB#0:
2113; CHECK-NEXT:    vfchdb %v0, %v24, %v26
2114; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
2115; CHECK-NEXT:    br %r14
2116  %cmp = fcmp ogt <2 x double> %val1, %val2
2117  %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
2118  ret <2 x double> %sel
2119}
2120
2121define <4 x i8> @fun108(<4 x float> %val1, <4 x float> %val2, <4 x i8> %val3, <4 x i8> %val4) {
2122; CHECK-LABEL: fun108:
2123; CHECK:       # BB#0:
2124; CHECK-NEXT:    vmrlf %v0, %v26, %v26
2125; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2126; CHECK-NEXT:    vldeb %v0, %v0
2127; CHECK-NEXT:    vldeb %v1, %v1
2128; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2129; CHECK-NEXT:    vmrhf %v1, %v26, %v26
2130; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2131; CHECK-NEXT:    vldeb %v1, %v1
2132; CHECK-NEXT:    larl %r1, .LCPI108_0
2133; CHECK-NEXT:    vldeb %v2, %v2
2134; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2135; CHECK-NEXT:    vpkg %v0, %v1, %v0
2136; CHECK-NEXT:    vl %v1, 0(%r1)
2137; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
2138; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
2139; CHECK-NEXT:    br %r14
2140  %cmp = fcmp ogt <4 x float> %val1, %val2
2141  %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
2142  ret <4 x i8> %sel
2143}
2144
2145define <4 x i16> @fun109(<4 x float> %val1, <4 x float> %val2, <4 x i16> %val3, <4 x i16> %val4) {
2146; CHECK-LABEL: fun109:
2147; CHECK:       # BB#0:
2148; CHECK-NEXT:    vmrlf %v0, %v26, %v26
2149; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2150; CHECK-NEXT:    vldeb %v0, %v0
2151; CHECK-NEXT:    vldeb %v1, %v1
2152; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2153; CHECK-NEXT:    vmrhf %v1, %v26, %v26
2154; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2155; CHECK-NEXT:    vldeb %v1, %v1
2156; CHECK-NEXT:    vldeb %v2, %v2
2157; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2158; CHECK-NEXT:    vpkg %v0, %v1, %v0
2159; CHECK-NEXT:    vpkf %v0, %v0, %v0
2160; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
2161; CHECK-NEXT:    br %r14
2162  %cmp = fcmp ogt <4 x float> %val1, %val2
2163  %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
2164  ret <4 x i16> %sel
2165}
2166
2167define <4 x i32> @fun110(<4 x float> %val1, <4 x float> %val2, <4 x i32> %val3, <4 x i32> %val4) {
2168; CHECK-LABEL: fun110:
2169; CHECK:       # BB#0:
2170; CHECK-NEXT:    vmrlf %v0, %v26, %v26
2171; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2172; CHECK-NEXT:    vldeb %v0, %v0
2173; CHECK-NEXT:    vldeb %v1, %v1
2174; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2175; CHECK-NEXT:    vmrhf %v1, %v26, %v26
2176; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2177; CHECK-NEXT:    vldeb %v1, %v1
2178; CHECK-NEXT:    vldeb %v2, %v2
2179; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2180; CHECK-NEXT:    vpkg %v0, %v1, %v0
2181; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
2182; CHECK-NEXT:    br %r14
2183  %cmp = fcmp ogt <4 x float> %val1, %val2
2184  %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
2185  ret <4 x i32> %sel
2186}
2187
2188define <4 x i64> @fun111(<4 x float> %val1, <4 x float> %val2, <4 x i64> %val3, <4 x i64> %val4) {
2189; CHECK-LABEL: fun111:
2190; CHECK:       # BB#0:
2191; CHECK-NEXT:    vmrlf %v0, %v26, %v26
2192; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2193; CHECK-NEXT:    vldeb %v0, %v0
2194; CHECK-NEXT:    vldeb %v1, %v1
2195; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2196; CHECK-NEXT:    vmrhf %v1, %v26, %v26
2197; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2198; CHECK-NEXT:    vldeb %v1, %v1
2199; CHECK-NEXT:    vldeb %v2, %v2
2200; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2201; CHECK-NEXT:    vpkg %v0, %v1, %v0
2202; CHECK-NEXT:    vuphf %v1, %v0
2203; CHECK-NEXT:    vmrlg %v0, %v0, %v0
2204; CHECK-NEXT:    vuphf %v0, %v0
2205; CHECK-NEXT:    vsel %v24, %v28, %v25, %v1
2206; CHECK-NEXT:    vsel %v26, %v30, %v27, %v0
2207; CHECK-NEXT:    br %r14
2208  %cmp = fcmp ogt <4 x float> %val1, %val2
2209  %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
2210  ret <4 x i64> %sel
2211}
2212
2213define <4 x float> @fun112(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4) {
2214; CHECK-LABEL: fun112:
2215; CHECK:       # BB#0:
2216; CHECK-NEXT:    vmrlf %v0, %v26, %v26
2217; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2218; CHECK-NEXT:    vldeb %v0, %v0
2219; CHECK-NEXT:    vldeb %v1, %v1
2220; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2221; CHECK-NEXT:    vmrhf %v1, %v26, %v26
2222; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2223; CHECK-NEXT:    vldeb %v1, %v1
2224; CHECK-NEXT:    vldeb %v2, %v2
2225; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2226; CHECK-NEXT:    vpkg %v0, %v1, %v0
2227; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
2228; CHECK-NEXT:    br %r14
2229  %cmp = fcmp ogt <4 x float> %val1, %val2
2230  %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
2231  ret <4 x float> %sel
2232}
2233
2234define <4 x double> @fun113(<4 x float> %val1, <4 x float> %val2, <4 x double> %val3, <4 x double> %val4) {
2235; CHECK-LABEL: fun113:
2236; CHECK:       # BB#0:
2237; CHECK-NEXT:    vmrlf %v0, %v26, %v26
2238; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2239; CHECK-NEXT:    vldeb %v0, %v0
2240; CHECK-NEXT:    vldeb %v1, %v1
2241; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2242; CHECK-NEXT:    vmrhf %v1, %v26, %v26
2243; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2244; CHECK-NEXT:    vldeb %v1, %v1
2245; CHECK-NEXT:    vldeb %v2, %v2
2246; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2247; CHECK-NEXT:    vpkg %v0, %v1, %v0
2248; CHECK-NEXT:    vuphf %v1, %v0
2249; CHECK-NEXT:    vmrlg %v0, %v0, %v0
2250; CHECK-NEXT:    vuphf %v0, %v0
2251; CHECK-NEXT:    vsel %v24, %v28, %v25, %v1
2252; CHECK-NEXT:    vsel %v26, %v30, %v27, %v0
2253; CHECK-NEXT:    br %r14
2254  %cmp = fcmp ogt <4 x float> %val1, %val2
2255  %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
2256  ret <4 x double> %sel
2257}
2258
2259define <4 x i8> @fun114(<4 x double> %val1, <4 x double> %val2, <4 x i8> %val3, <4 x i8> %val4) {
2260; CHECK-LABEL: fun114:
2261; CHECK:       # BB#0:
2262; CHECK-NEXT:    larl %r1, .LCPI114_0
2263; CHECK-NEXT:    vl %v2, 0(%r1)
2264; CHECK-NEXT:    vfchdb %v0, %v26, %v30
2265; CHECK-NEXT:    vfchdb %v1, %v24, %v28
2266; CHECK-NEXT:    vperm %v0, %v1, %v0, %v2
2267; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2268; CHECK-NEXT:    br %r14
2269  %cmp = fcmp ogt <4 x double> %val1, %val2
2270  %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
2271  ret <4 x i8> %sel
2272}
2273
2274define <4 x i16> @fun115(<4 x double> %val1, <4 x double> %val2, <4 x i16> %val3, <4 x i16> %val4) {
2275; CHECK-LABEL: fun115:
2276; CHECK:       # BB#0:
2277; CHECK-NEXT:    larl %r1, .LCPI115_0
2278; CHECK-NEXT:    vl %v2, 0(%r1)
2279; CHECK-NEXT:    vfchdb %v0, %v26, %v30
2280; CHECK-NEXT:    vfchdb %v1, %v24, %v28
2281; CHECK-NEXT:    vperm %v0, %v1, %v0, %v2
2282; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2283; CHECK-NEXT:    br %r14
2284  %cmp = fcmp ogt <4 x double> %val1, %val2
2285  %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
2286  ret <4 x i16> %sel
2287}
2288
2289define <4 x i32> @fun116(<4 x double> %val1, <4 x double> %val2, <4 x i32> %val3, <4 x i32> %val4) {
2290; CHECK-LABEL: fun116:
2291; CHECK:       # BB#0:
2292; CHECK-NEXT:    vfchdb %v0, %v26, %v30
2293; CHECK-NEXT:    vfchdb %v1, %v24, %v28
2294; CHECK-NEXT:    vpkg %v0, %v1, %v0
2295; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2296; CHECK-NEXT:    br %r14
2297  %cmp = fcmp ogt <4 x double> %val1, %val2
2298  %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
2299  ret <4 x i32> %sel
2300}
2301
2302define <4 x i64> @fun117(<4 x double> %val1, <4 x double> %val2, <4 x i64> %val3, <4 x i64> %val4) {
2303; CHECK-LABEL: fun117:
2304; CHECK:       # BB#0:
2305; CHECK-NEXT:    vfchdb %v0, %v24, %v28
2306; CHECK-NEXT:    vsel %v24, %v25, %v29, %v0
2307; CHECK-NEXT:    vfchdb %v0, %v26, %v30
2308; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
2309; CHECK-NEXT:    br %r14
2310  %cmp = fcmp ogt <4 x double> %val1, %val2
2311  %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
2312  ret <4 x i64> %sel
2313}
2314
2315define <4 x float> @fun118(<4 x double> %val1, <4 x double> %val2, <4 x float> %val3, <4 x float> %val4) {
2316; CHECK-LABEL: fun118:
2317; CHECK:       # BB#0:
2318; CHECK-NEXT:    vfchdb %v0, %v26, %v30
2319; CHECK-NEXT:    vfchdb %v1, %v24, %v28
2320; CHECK-NEXT:    vpkg %v0, %v1, %v0
2321; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2322; CHECK-NEXT:    br %r14
2323  %cmp = fcmp ogt <4 x double> %val1, %val2
2324  %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
2325  ret <4 x float> %sel
2326}
2327
2328define <4 x double> @fun119(<4 x double> %val1, <4 x double> %val2, <4 x double> %val3, <4 x double> %val4) {
2329; CHECK-LABEL: fun119:
2330; CHECK:       # BB#0:
2331; CHECK-NEXT:    vfchdb %v0, %v24, %v28
2332; CHECK-NEXT:    vsel %v24, %v25, %v29, %v0
2333; CHECK-NEXT:    vfchdb %v0, %v26, %v30
2334; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
2335; CHECK-NEXT:    br %r14
2336  %cmp = fcmp ogt <4 x double> %val1, %val2
2337  %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
2338  ret <4 x double> %sel
2339}
2340
2341define <8 x i8> @fun120(<8 x float> %val1, <8 x float> %val2, <8 x i8> %val3, <8 x i8> %val4) {
2342; CHECK-LABEL: fun120:
2343; CHECK:       # BB#0:
2344; CHECK-NEXT:    vmrlf %v0, %v30, %v30
2345; CHECK-NEXT:    vmrlf %v1, %v26, %v26
2346; CHECK-NEXT:    vldeb %v0, %v0
2347; CHECK-NEXT:    vldeb %v1, %v1
2348; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2349; CHECK-NEXT:    vmrhf %v1, %v30, %v30
2350; CHECK-NEXT:    vmrhf %v2, %v26, %v26
2351; CHECK-NEXT:    vldeb %v1, %v1
2352; CHECK-NEXT:    larl %r1, .LCPI120_0
2353; CHECK-NEXT:    vldeb %v2, %v2
2354; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2355; CHECK-NEXT:    vpkg %v0, %v1, %v0
2356; CHECK-NEXT:    vmrlf %v1, %v28, %v28
2357; CHECK-NEXT:    vmrlf %v2, %v24, %v24
2358; CHECK-NEXT:    vmrhf %v3, %v24, %v24
2359; CHECK-NEXT:    vldeb %v1, %v1
2360; CHECK-NEXT:    vldeb %v2, %v2
2361; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2362; CHECK-NEXT:    vmrhf %v2, %v28, %v28
2363; CHECK-NEXT:    vldeb %v2, %v2
2364; CHECK-NEXT:    vldeb %v3, %v3
2365; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2366; CHECK-NEXT:    vpkg %v1, %v2, %v1
2367; CHECK-NEXT:    vl %v2, 0(%r1)
2368; CHECK-NEXT:    vperm %v0, %v1, %v0, %v2
2369; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2370; CHECK-NEXT:    br %r14
2371  %cmp = fcmp ogt <8 x float> %val1, %val2
2372  %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
2373  ret <8 x i8> %sel
2374}
2375
2376define <8 x i16> @fun121(<8 x float> %val1, <8 x float> %val2, <8 x i16> %val3, <8 x i16> %val4) {
2377; CHECK-LABEL: fun121:
2378; CHECK:       # BB#0:
2379; CHECK-NEXT:    vmrlf %v0, %v30, %v30
2380; CHECK-NEXT:    vmrlf %v1, %v26, %v26
2381; CHECK-NEXT:    vldeb %v0, %v0
2382; CHECK-NEXT:    vldeb %v1, %v1
2383; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2384; CHECK-NEXT:    vmrhf %v1, %v30, %v30
2385; CHECK-NEXT:    vmrhf %v2, %v26, %v26
2386; CHECK-NEXT:    vldeb %v1, %v1
2387; CHECK-NEXT:    vmrhf %v3, %v24, %v24
2388; CHECK-NEXT:    vldeb %v2, %v2
2389; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2390; CHECK-NEXT:    vpkg %v0, %v1, %v0
2391; CHECK-NEXT:    vmrlf %v1, %v28, %v28
2392; CHECK-NEXT:    vmrlf %v2, %v24, %v24
2393; CHECK-NEXT:    vldeb %v1, %v1
2394; CHECK-NEXT:    vldeb %v2, %v2
2395; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2396; CHECK-NEXT:    vmrhf %v2, %v28, %v28
2397; CHECK-NEXT:    vldeb %v2, %v2
2398; CHECK-NEXT:    vldeb %v3, %v3
2399; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2400; CHECK-NEXT:    vpkg %v1, %v2, %v1
2401; CHECK-NEXT:    vpkf %v0, %v1, %v0
2402; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2403; CHECK-NEXT:    br %r14
2404  %cmp = fcmp ogt <8 x float> %val1, %val2
2405  %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
2406  ret <8 x i16> %sel
2407}
2408
2409define <8 x i32> @fun122(<8 x float> %val1, <8 x float> %val2, <8 x i32> %val3, <8 x i32> %val4) {
2410; CHECK-LABEL: fun122:
2411; CHECK:       # BB#0:
2412; CHECK-NEXT:    vmrlf %v0, %v28, %v28
2413; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2414; CHECK-NEXT:    vldeb %v0, %v0
2415; CHECK-NEXT:    vldeb %v1, %v1
2416; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2417; CHECK-NEXT:    vmrhf %v1, %v28, %v28
2418; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2419; CHECK-NEXT:    vldeb %v1, %v1
2420; CHECK-NEXT:    vldeb %v2, %v2
2421; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2422; CHECK-NEXT:    vpkg %v0, %v1, %v0
2423; CHECK-NEXT:    vsel %v24, %v25, %v29, %v0
2424; CHECK-NEXT:    vmrlf %v0, %v30, %v30
2425; CHECK-NEXT:    vmrlf %v1, %v26, %v26
2426; CHECK-NEXT:    vmrhf %v2, %v26, %v26
2427; CHECK-NEXT:    vldeb %v0, %v0
2428; CHECK-NEXT:    vldeb %v1, %v1
2429; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2430; CHECK-NEXT:    vmrhf %v1, %v30, %v30
2431; CHECK-NEXT:    vldeb %v1, %v1
2432; CHECK-NEXT:    vldeb %v2, %v2
2433; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2434; CHECK-NEXT:    vpkg %v0, %v1, %v0
2435; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
2436; CHECK-NEXT:    br %r14
2437  %cmp = fcmp ogt <8 x float> %val1, %val2
2438  %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
2439  ret <8 x i32> %sel
2440}
2441
2442define <8 x i64> @fun123(<8 x float> %val1, <8 x float> %val2, <8 x i64> %val3, <8 x i64> %val4) {
2443; CHECK-LABEL: fun123:
2444; CHECK:       # BB#0:
2445; CHECK-NEXT:    vmrlf %v0, %v28, %v28
2446; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2447; CHECK-NEXT:    vldeb %v0, %v0
2448; CHECK-NEXT:    vldeb %v1, %v1
2449; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2450; CHECK-NEXT:    vmrhf %v1, %v28, %v28
2451; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2452; CHECK-NEXT:    vldeb %v1, %v1
2453; CHECK-NEXT:    vmrhf %v3, %v26, %v26
2454; CHECK-NEXT:    vldeb %v2, %v2
2455; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2456; CHECK-NEXT:    vl %v2, 160(%r15)
2457; CHECK-NEXT:    vpkg %v0, %v1, %v0
2458; CHECK-NEXT:    vuphf %v1, %v0
2459; CHECK-NEXT:    vsel %v24, %v25, %v2, %v1
2460; CHECK-NEXT:    vmrlf %v1, %v30, %v30
2461; CHECK-NEXT:    vmrlf %v2, %v26, %v26
2462; CHECK-NEXT:    vmrlg %v0, %v0, %v0
2463; CHECK-NEXT:    vuphf %v0, %v0
2464; CHECK-NEXT:    vldeb %v1, %v1
2465; CHECK-NEXT:    vldeb %v2, %v2
2466; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2467; CHECK-NEXT:    vmrhf %v2, %v30, %v30
2468; CHECK-NEXT:    vldeb %v2, %v2
2469; CHECK-NEXT:    vldeb %v3, %v3
2470; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2471; CHECK-NEXT:    vl %v3, 192(%r15)
2472; CHECK-NEXT:    vpkg %v1, %v2, %v1
2473; CHECK-NEXT:    vuphf %v2, %v1
2474; CHECK-NEXT:    vsel %v28, %v29, %v3, %v2
2475; CHECK-NEXT:    vl %v2, 176(%r15)
2476; CHECK-NEXT:    vsel %v26, %v27, %v2, %v0
2477; CHECK-NEXT:    vmrlg %v0, %v1, %v1
2478; CHECK-NEXT:    vl %v1, 208(%r15)
2479; CHECK-NEXT:    vuphf %v0, %v0
2480; CHECK-NEXT:    vsel %v30, %v31, %v1, %v0
2481; CHECK-NEXT:    br %r14
2482  %cmp = fcmp ogt <8 x float> %val1, %val2
2483  %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
2484  ret <8 x i64> %sel
2485}
2486
2487define <8 x float> @fun124(<8 x float> %val1, <8 x float> %val2, <8 x float> %val3, <8 x float> %val4) {
2488; CHECK-LABEL: fun124:
2489; CHECK:       # BB#0:
2490; CHECK-NEXT:    vmrlf %v0, %v28, %v28
2491; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2492; CHECK-NEXT:    vldeb %v0, %v0
2493; CHECK-NEXT:    vldeb %v1, %v1
2494; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2495; CHECK-NEXT:    vmrhf %v1, %v28, %v28
2496; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2497; CHECK-NEXT:    vldeb %v1, %v1
2498; CHECK-NEXT:    vldeb %v2, %v2
2499; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2500; CHECK-NEXT:    vpkg %v0, %v1, %v0
2501; CHECK-NEXT:    vsel %v24, %v25, %v29, %v0
2502; CHECK-NEXT:    vmrlf %v0, %v30, %v30
2503; CHECK-NEXT:    vmrlf %v1, %v26, %v26
2504; CHECK-NEXT:    vmrhf %v2, %v26, %v26
2505; CHECK-NEXT:    vldeb %v0, %v0
2506; CHECK-NEXT:    vldeb %v1, %v1
2507; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2508; CHECK-NEXT:    vmrhf %v1, %v30, %v30
2509; CHECK-NEXT:    vldeb %v1, %v1
2510; CHECK-NEXT:    vldeb %v2, %v2
2511; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2512; CHECK-NEXT:    vpkg %v0, %v1, %v0
2513; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
2514; CHECK-NEXT:    br %r14
2515  %cmp = fcmp ogt <8 x float> %val1, %val2
2516  %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
2517  ret <8 x float> %sel
2518}
2519
2520define <8 x double> @fun125(<8 x float> %val1, <8 x float> %val2, <8 x double> %val3, <8 x double> %val4) {
2521; CHECK-LABEL: fun125:
2522; CHECK:       # BB#0:
2523; CHECK-NEXT:    vmrlf %v0, %v28, %v28
2524; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2525; CHECK-NEXT:    vldeb %v0, %v0
2526; CHECK-NEXT:    vldeb %v1, %v1
2527; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2528; CHECK-NEXT:    vmrhf %v1, %v28, %v28
2529; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2530; CHECK-NEXT:    vldeb %v1, %v1
2531; CHECK-NEXT:    vmrhf %v3, %v26, %v26
2532; CHECK-NEXT:    vldeb %v2, %v2
2533; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2534; CHECK-NEXT:    vl %v2, 160(%r15)
2535; CHECK-NEXT:    vpkg %v0, %v1, %v0
2536; CHECK-NEXT:    vuphf %v1, %v0
2537; CHECK-NEXT:    vsel %v24, %v25, %v2, %v1
2538; CHECK-NEXT:    vmrlf %v1, %v30, %v30
2539; CHECK-NEXT:    vmrlf %v2, %v26, %v26
2540; CHECK-NEXT:    vmrlg %v0, %v0, %v0
2541; CHECK-NEXT:    vuphf %v0, %v0
2542; CHECK-NEXT:    vldeb %v1, %v1
2543; CHECK-NEXT:    vldeb %v2, %v2
2544; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2545; CHECK-NEXT:    vmrhf %v2, %v30, %v30
2546; CHECK-NEXT:    vldeb %v2, %v2
2547; CHECK-NEXT:    vldeb %v3, %v3
2548; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2549; CHECK-NEXT:    vl %v3, 192(%r15)
2550; CHECK-NEXT:    vpkg %v1, %v2, %v1
2551; CHECK-NEXT:    vuphf %v2, %v1
2552; CHECK-NEXT:    vsel %v28, %v29, %v3, %v2
2553; CHECK-NEXT:    vl %v2, 176(%r15)
2554; CHECK-NEXT:    vsel %v26, %v27, %v2, %v0
2555; CHECK-NEXT:    vmrlg %v0, %v1, %v1
2556; CHECK-NEXT:    vl %v1, 208(%r15)
2557; CHECK-NEXT:    vuphf %v0, %v0
2558; CHECK-NEXT:    vsel %v30, %v31, %v1, %v0
2559; CHECK-NEXT:    br %r14
2560  %cmp = fcmp ogt <8 x float> %val1, %val2
2561  %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
2562  ret <8 x double> %sel
2563}
2564
2565define <8 x i8> @fun126(<8 x double> %val1, <8 x double> %val2, <8 x i8> %val3, <8 x i8> %val4) {
2566; CHECK-LABEL: fun126:
2567; CHECK:       # BB#0:
2568; CHECK-NEXT:    vfchdb %v0, %v30, %v31
2569; CHECK-NEXT:    vfchdb %v1, %v28, %v29
2570; CHECK-NEXT:    vpkg %v0, %v1, %v0
2571; CHECK-NEXT:    vfchdb %v1, %v26, %v27
2572; CHECK-NEXT:    vfchdb %v2, %v24, %v25
2573; CHECK-NEXT:    larl %r1, .LCPI126_0
2574; CHECK-NEXT:    vpkg %v1, %v2, %v1
2575; CHECK-NEXT:    vl %v2, 0(%r1)
2576; CHECK-NEXT:    vperm %v0, %v1, %v0, %v2
2577; CHECK-NEXT:    vlrepg %v1, 168(%r15)
2578; CHECK-NEXT:    vlrepg %v2, 160(%r15)
2579; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2580; CHECK-NEXT:    br %r14
2581  %cmp = fcmp ogt <8 x double> %val1, %val2
2582  %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
2583  ret <8 x i8> %sel
2584}
2585
2586define <8 x i16> @fun127(<8 x double> %val1, <8 x double> %val2, <8 x i16> %val3, <8 x i16> %val4) {
2587; CHECK-LABEL: fun127:
2588; CHECK:       # BB#0:
2589; CHECK-NEXT:    vfchdb %v0, %v30, %v31
2590; CHECK-NEXT:    vfchdb %v1, %v28, %v29
2591; CHECK-NEXT:    vpkg %v0, %v1, %v0
2592; CHECK-NEXT:    vfchdb %v1, %v26, %v27
2593; CHECK-NEXT:    vfchdb %v2, %v24, %v25
2594; CHECK-NEXT:    vpkg %v1, %v2, %v1
2595; CHECK-NEXT:    vpkf %v0, %v1, %v0
2596; CHECK-NEXT:    vl %v1, 176(%r15)
2597; CHECK-NEXT:    vl %v2, 160(%r15)
2598; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2599; CHECK-NEXT:    br %r14
2600  %cmp = fcmp ogt <8 x double> %val1, %val2
2601  %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
2602  ret <8 x i16> %sel
2603}
2604
2605define <8 x i32> @fun128(<8 x double> %val1, <8 x double> %val2, <8 x i32> %val3, <8 x i32> %val4) {
2606; CHECK-LABEL: fun128:
2607; CHECK:       # BB#0:
2608; CHECK-NEXT:    vfchdb %v0, %v26, %v27
2609; CHECK-NEXT:    vfchdb %v1, %v24, %v25
2610; CHECK-NEXT:    vpkg %v0, %v1, %v0
2611; CHECK-NEXT:    vl %v1, 192(%r15)
2612; CHECK-NEXT:    vl %v2, 160(%r15)
2613; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2614; CHECK-NEXT:    vfchdb %v0, %v30, %v31
2615; CHECK-NEXT:    vfchdb %v1, %v28, %v29
2616; CHECK-NEXT:    vpkg %v0, %v1, %v0
2617; CHECK-NEXT:    vl %v1, 208(%r15)
2618; CHECK-NEXT:    vl %v2, 176(%r15)
2619; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
2620; CHECK-NEXT:    br %r14
2621  %cmp = fcmp ogt <8 x double> %val1, %val2
2622  %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
2623  ret <8 x i32> %sel
2624}
2625
2626define <8 x i64> @fun129(<8 x double> %val1, <8 x double> %val2, <8 x i64> %val3, <8 x i64> %val4) {
2627; CHECK-LABEL: fun129:
2628; CHECK:       # BB#0:
2629; CHECK-NEXT:    vl %v1, 224(%r15)
2630; CHECK-NEXT:    vl %v2, 160(%r15)
2631; CHECK-NEXT:    vfchdb %v0, %v24, %v25
2632; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2633; CHECK-NEXT:    vl %v1, 240(%r15)
2634; CHECK-NEXT:    vl %v2, 176(%r15)
2635; CHECK-NEXT:    vfchdb %v0, %v26, %v27
2636; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
2637; CHECK-NEXT:    vl %v1, 256(%r15)
2638; CHECK-NEXT:    vl %v2, 192(%r15)
2639; CHECK-NEXT:    vfchdb %v0, %v28, %v29
2640; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
2641; CHECK-NEXT:    vl %v1, 272(%r15)
2642; CHECK-NEXT:    vl %v2, 208(%r15)
2643; CHECK-NEXT:    vfchdb %v0, %v30, %v31
2644; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
2645; CHECK-NEXT:    br %r14
2646  %cmp = fcmp ogt <8 x double> %val1, %val2
2647  %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
2648  ret <8 x i64> %sel
2649}
2650
2651define <8 x float> @fun130(<8 x double> %val1, <8 x double> %val2, <8 x float> %val3, <8 x float> %val4) {
2652; CHECK-LABEL: fun130:
2653; CHECK:       # BB#0:
2654; CHECK-NEXT:    vfchdb %v0, %v26, %v27
2655; CHECK-NEXT:    vfchdb %v1, %v24, %v25
2656; CHECK-NEXT:    vpkg %v0, %v1, %v0
2657; CHECK-NEXT:    vl %v1, 192(%r15)
2658; CHECK-NEXT:    vl %v2, 160(%r15)
2659; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2660; CHECK-NEXT:    vfchdb %v0, %v30, %v31
2661; CHECK-NEXT:    vfchdb %v1, %v28, %v29
2662; CHECK-NEXT:    vpkg %v0, %v1, %v0
2663; CHECK-NEXT:    vl %v1, 208(%r15)
2664; CHECK-NEXT:    vl %v2, 176(%r15)
2665; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
2666; CHECK-NEXT:    br %r14
2667  %cmp = fcmp ogt <8 x double> %val1, %val2
2668  %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
2669  ret <8 x float> %sel
2670}
2671
2672define <8 x double> @fun131(<8 x double> %val1, <8 x double> %val2, <8 x double> %val3, <8 x double> %val4) {
2673; CHECK-LABEL: fun131:
2674; CHECK:       # BB#0:
2675; CHECK-NEXT:    vl %v1, 224(%r15)
2676; CHECK-NEXT:    vl %v2, 160(%r15)
2677; CHECK-NEXT:    vfchdb %v0, %v24, %v25
2678; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2679; CHECK-NEXT:    vl %v1, 240(%r15)
2680; CHECK-NEXT:    vl %v2, 176(%r15)
2681; CHECK-NEXT:    vfchdb %v0, %v26, %v27
2682; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
2683; CHECK-NEXT:    vl %v1, 256(%r15)
2684; CHECK-NEXT:    vl %v2, 192(%r15)
2685; CHECK-NEXT:    vfchdb %v0, %v28, %v29
2686; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
2687; CHECK-NEXT:    vl %v1, 272(%r15)
2688; CHECK-NEXT:    vl %v2, 208(%r15)
2689; CHECK-NEXT:    vfchdb %v0, %v30, %v31
2690; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
2691; CHECK-NEXT:    br %r14
2692  %cmp = fcmp ogt <8 x double> %val1, %val2
2693  %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
2694  ret <8 x double> %sel
2695}
2696
2697define <16 x i8> @fun132(<16 x float> %val1, <16 x float> %val2, <16 x i8> %val3, <16 x i8> %val4) {
2698; CHECK-LABEL: fun132:
2699; CHECK:       # BB#0:
2700; CHECK-NEXT:    vmrlf %v0, %v31, %v31
2701; CHECK-NEXT:    vmrlf %v1, %v30, %v30
2702; CHECK-NEXT:    vldeb %v0, %v0
2703; CHECK-NEXT:    vldeb %v1, %v1
2704; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2705; CHECK-NEXT:    vmrhf %v1, %v31, %v31
2706; CHECK-NEXT:    vmrhf %v2, %v30, %v30
2707; CHECK-NEXT:    vldeb %v1, %v1
2708; CHECK-NEXT:    vmrhf %v3, %v28, %v28
2709; CHECK-NEXT:    vmrhf %v4, %v24, %v24
2710; CHECK-NEXT:    vldeb %v2, %v2
2711; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2712; CHECK-NEXT:    vpkg %v0, %v1, %v0
2713; CHECK-NEXT:    vmrlf %v1, %v29, %v29
2714; CHECK-NEXT:    vmrlf %v2, %v28, %v28
2715; CHECK-NEXT:    vldeb %v1, %v1
2716; CHECK-NEXT:    vldeb %v2, %v2
2717; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2718; CHECK-NEXT:    vmrhf %v2, %v29, %v29
2719; CHECK-NEXT:    vldeb %v2, %v2
2720; CHECK-NEXT:    vldeb %v3, %v3
2721; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2722; CHECK-NEXT:    vpkg %v1, %v2, %v1
2723; CHECK-NEXT:    vpkf %v0, %v1, %v0
2724; CHECK-NEXT:    vmrlf %v1, %v27, %v27
2725; CHECK-NEXT:    vmrlf %v2, %v26, %v26
2726; CHECK-NEXT:    vmrhf %v3, %v26, %v26
2727; CHECK-NEXT:    vldeb %v1, %v1
2728; CHECK-NEXT:    vldeb %v2, %v2
2729; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2730; CHECK-NEXT:    vmrhf %v2, %v27, %v27
2731; CHECK-NEXT:    vldeb %v2, %v2
2732; CHECK-NEXT:    vldeb %v3, %v3
2733; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2734; CHECK-NEXT:    vpkg %v1, %v2, %v1
2735; CHECK-NEXT:    vmrlf %v2, %v25, %v25
2736; CHECK-NEXT:    vmrlf %v3, %v24, %v24
2737; CHECK-NEXT:    vldeb %v2, %v2
2738; CHECK-NEXT:    vldeb %v3, %v3
2739; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2740; CHECK-NEXT:    vmrhf %v3, %v25, %v25
2741; CHECK-NEXT:    vldeb %v3, %v3
2742; CHECK-NEXT:    vldeb %v4, %v4
2743; CHECK-NEXT:    vfchdb %v3, %v4, %v3
2744; CHECK-NEXT:    vpkg %v2, %v3, %v2
2745; CHECK-NEXT:    vpkf %v1, %v2, %v1
2746; CHECK-NEXT:    vl %v2, 160(%r15)
2747; CHECK-NEXT:    vpkh %v0, %v1, %v0
2748; CHECK-NEXT:    vl %v1, 176(%r15)
2749; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2750; CHECK-NEXT:    br %r14
2751  %cmp = fcmp ogt <16 x float> %val1, %val2
2752  %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
2753  ret <16 x i8> %sel
2754}
2755
2756define <16 x i16> @fun133(<16 x float> %val1, <16 x float> %val2, <16 x i16> %val3, <16 x i16> %val4) {
2757; CHECK-LABEL: fun133:
2758; CHECK:       # BB#0:
2759; CHECK-NEXT:    vmrlf %v0, %v27, %v27
2760; CHECK-NEXT:    vmrlf %v1, %v26, %v26
2761; CHECK-NEXT:    vldeb %v0, %v0
2762; CHECK-NEXT:    vldeb %v1, %v1
2763; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2764; CHECK-NEXT:    vmrhf %v1, %v27, %v27
2765; CHECK-NEXT:    vmrhf %v2, %v26, %v26
2766; CHECK-NEXT:    vldeb %v1, %v1
2767; CHECK-NEXT:    vmrhf %v3, %v24, %v24
2768; CHECK-NEXT:    vldeb %v2, %v2
2769; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2770; CHECK-NEXT:    vpkg %v0, %v1, %v0
2771; CHECK-NEXT:    vmrlf %v1, %v25, %v25
2772; CHECK-NEXT:    vmrlf %v2, %v24, %v24
2773; CHECK-NEXT:    vldeb %v1, %v1
2774; CHECK-NEXT:    vldeb %v2, %v2
2775; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2776; CHECK-NEXT:    vmrhf %v2, %v25, %v25
2777; CHECK-NEXT:    vldeb %v2, %v2
2778; CHECK-NEXT:    vldeb %v3, %v3
2779; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2780; CHECK-NEXT:    vpkg %v1, %v2, %v1
2781; CHECK-NEXT:    vl %v2, 160(%r15)
2782; CHECK-NEXT:    vpkf %v0, %v1, %v0
2783; CHECK-NEXT:    vl %v1, 192(%r15)
2784; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2785; CHECK-NEXT:    vmrlf %v0, %v31, %v31
2786; CHECK-NEXT:    vmrlf %v1, %v30, %v30
2787; CHECK-NEXT:    vmrhf %v2, %v30, %v30
2788; CHECK-NEXT:    vmrhf %v3, %v28, %v28
2789; CHECK-NEXT:    vldeb %v0, %v0
2790; CHECK-NEXT:    vldeb %v1, %v1
2791; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2792; CHECK-NEXT:    vmrhf %v1, %v31, %v31
2793; CHECK-NEXT:    vldeb %v1, %v1
2794; CHECK-NEXT:    vldeb %v2, %v2
2795; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2796; CHECK-NEXT:    vpkg %v0, %v1, %v0
2797; CHECK-NEXT:    vmrlf %v1, %v29, %v29
2798; CHECK-NEXT:    vmrlf %v2, %v28, %v28
2799; CHECK-NEXT:    vldeb %v1, %v1
2800; CHECK-NEXT:    vldeb %v2, %v2
2801; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2802; CHECK-NEXT:    vmrhf %v2, %v29, %v29
2803; CHECK-NEXT:    vldeb %v2, %v2
2804; CHECK-NEXT:    vldeb %v3, %v3
2805; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2806; CHECK-NEXT:    vpkg %v1, %v2, %v1
2807; CHECK-NEXT:    vl %v2, 176(%r15)
2808; CHECK-NEXT:    vpkf %v0, %v1, %v0
2809; CHECK-NEXT:    vl %v1, 208(%r15)
2810; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
2811; CHECK-NEXT:    br %r14
2812  %cmp = fcmp ogt <16 x float> %val1, %val2
2813  %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
2814  ret <16 x i16> %sel
2815}
2816
2817define <16 x i32> @fun134(<16 x float> %val1, <16 x float> %val2, <16 x i32> %val3, <16 x i32> %val4) {
2818; CHECK-LABEL: fun134:
2819; CHECK:       # BB#0:
2820; CHECK-NEXT:    vmrlf %v0, %v25, %v25
2821; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2822; CHECK-NEXT:    vldeb %v0, %v0
2823; CHECK-NEXT:    vldeb %v1, %v1
2824; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2825; CHECK-NEXT:    vmrhf %v1, %v25, %v25
2826; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2827; CHECK-NEXT:    vldeb %v1, %v1
2828; CHECK-NEXT:    vldeb %v2, %v2
2829; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2830; CHECK-NEXT:    vl %v2, 160(%r15)
2831; CHECK-NEXT:    vpkg %v0, %v1, %v0
2832; CHECK-NEXT:    vl %v1, 224(%r15)
2833; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2834; CHECK-NEXT:    vmrlf %v0, %v27, %v27
2835; CHECK-NEXT:    vmrlf %v1, %v26, %v26
2836; CHECK-NEXT:    vmrhf %v2, %v26, %v26
2837; CHECK-NEXT:    vldeb %v0, %v0
2838; CHECK-NEXT:    vldeb %v1, %v1
2839; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2840; CHECK-NEXT:    vmrhf %v1, %v27, %v27
2841; CHECK-NEXT:    vldeb %v1, %v1
2842; CHECK-NEXT:    vldeb %v2, %v2
2843; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2844; CHECK-NEXT:    vl %v2, 176(%r15)
2845; CHECK-NEXT:    vpkg %v0, %v1, %v0
2846; CHECK-NEXT:    vl %v1, 240(%r15)
2847; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
2848; CHECK-NEXT:    vmrlf %v0, %v29, %v29
2849; CHECK-NEXT:    vmrlf %v1, %v28, %v28
2850; CHECK-NEXT:    vmrhf %v2, %v28, %v28
2851; CHECK-NEXT:    vldeb %v0, %v0
2852; CHECK-NEXT:    vldeb %v1, %v1
2853; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2854; CHECK-NEXT:    vmrhf %v1, %v29, %v29
2855; CHECK-NEXT:    vldeb %v1, %v1
2856; CHECK-NEXT:    vldeb %v2, %v2
2857; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2858; CHECK-NEXT:    vl %v2, 192(%r15)
2859; CHECK-NEXT:    vpkg %v0, %v1, %v0
2860; CHECK-NEXT:    vl %v1, 256(%r15)
2861; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
2862; CHECK-NEXT:    vmrlf %v0, %v31, %v31
2863; CHECK-NEXT:    vmrlf %v1, %v30, %v30
2864; CHECK-NEXT:    vmrhf %v2, %v30, %v30
2865; CHECK-NEXT:    vldeb %v0, %v0
2866; CHECK-NEXT:    vldeb %v1, %v1
2867; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2868; CHECK-NEXT:    vmrhf %v1, %v31, %v31
2869; CHECK-NEXT:    vldeb %v1, %v1
2870; CHECK-NEXT:    vldeb %v2, %v2
2871; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2872; CHECK-NEXT:    vl %v2, 208(%r15)
2873; CHECK-NEXT:    vpkg %v0, %v1, %v0
2874; CHECK-NEXT:    vl %v1, 272(%r15)
2875; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
2876; CHECK-NEXT:    br %r14
2877  %cmp = fcmp ogt <16 x float> %val1, %val2
2878  %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
2879  ret <16 x i32> %sel
2880}
2881
2882define <16 x i64> @fun135(<16 x float> %val1, <16 x float> %val2, <16 x i64> %val3, <16 x i64> %val4) {
2883; CHECK-LABEL: fun135:
2884; CHECK:       # BB#0:
2885; CHECK-NEXT:    vmrlf %v0, %v25, %v25
2886; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2887; CHECK-NEXT:    vldeb %v0, %v0
2888; CHECK-NEXT:    vldeb %v1, %v1
2889; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2890; CHECK-NEXT:    vmrhf %v1, %v25, %v25
2891; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2892; CHECK-NEXT:    vldeb %v1, %v1
2893; CHECK-NEXT:    vl %v3, 160(%r15)
2894; CHECK-NEXT:    vldeb %v2, %v2
2895; CHECK-NEXT:    vl %v4, 192(%r15)
2896; CHECK-NEXT:    vl %v6, 224(%r15)
2897; CHECK-NEXT:    vl %v7, 256(%r15)
2898; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2899; CHECK-NEXT:    vl %v2, 288(%r15)
2900; CHECK-NEXT:    vpkg %v1, %v1, %v0
2901; CHECK-NEXT:    vuphf %v0, %v1
2902; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
2903; CHECK-NEXT:    vmrlf %v0, %v27, %v27
2904; CHECK-NEXT:    vmrlf %v2, %v26, %v26
2905; CHECK-NEXT:    vmrhf %v3, %v26, %v26
2906; CHECK-NEXT:    vmrhf %v5, %v28, %v28
2907; CHECK-NEXT:    vmrlg %v1, %v1, %v1
2908; CHECK-NEXT:    vuphf %v1, %v1
2909; CHECK-NEXT:    vldeb %v0, %v0
2910; CHECK-NEXT:    vldeb %v2, %v2
2911; CHECK-NEXT:    vfchdb %v0, %v2, %v0
2912; CHECK-NEXT:    vmrhf %v2, %v27, %v27
2913; CHECK-NEXT:    vldeb %v2, %v2
2914; CHECK-NEXT:    vldeb %v3, %v3
2915; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2916; CHECK-NEXT:    vl %v3, 320(%r15)
2917; CHECK-NEXT:    vpkg %v2, %v2, %v0
2918; CHECK-NEXT:    vuphf %v0, %v2
2919; CHECK-NEXT:    vsel %v0, %v4, %v3, %v0
2920; CHECK-NEXT:    vmrlf %v3, %v29, %v29
2921; CHECK-NEXT:    vmrlf %v4, %v28, %v28
2922; CHECK-NEXT:    vlr %v28, %v0
2923; CHECK-NEXT:    vldeb %v3, %v3
2924; CHECK-NEXT:    vldeb %v4, %v4
2925; CHECK-NEXT:    vfchdb %v3, %v4, %v3
2926; CHECK-NEXT:    vmrhf %v4, %v29, %v29
2927; CHECK-NEXT:    vldeb %v4, %v4
2928; CHECK-NEXT:    vldeb %v5, %v5
2929; CHECK-NEXT:    vfchdb %v4, %v5, %v4
2930; CHECK-NEXT:    vl %v5, 352(%r15)
2931; CHECK-NEXT:    vpkg %v3, %v4, %v3
2932; CHECK-NEXT:    vuphf %v4, %v3
2933; CHECK-NEXT:    vsel %v25, %v6, %v5, %v4
2934; CHECK-NEXT:    vmrlf %v4, %v31, %v31
2935; CHECK-NEXT:    vmrlf %v5, %v30, %v30
2936; CHECK-NEXT:    vmrhf %v6, %v30, %v30
2937; CHECK-NEXT:    vldeb %v4, %v4
2938; CHECK-NEXT:    vldeb %v5, %v5
2939; CHECK-NEXT:    vfchdb %v4, %v5, %v4
2940; CHECK-NEXT:    vmrhf %v5, %v31, %v31
2941; CHECK-NEXT:    vldeb %v5, %v5
2942; CHECK-NEXT:    vldeb %v6, %v6
2943; CHECK-NEXT:    vfchdb %v5, %v6, %v5
2944; CHECK-NEXT:    vl %v6, 384(%r15)
2945; CHECK-NEXT:    vpkg %v4, %v5, %v4
2946; CHECK-NEXT:    vuphf %v5, %v4
2947; CHECK-NEXT:    vsel %v29, %v7, %v6, %v5
2948; CHECK-NEXT:    vl %v5, 304(%r15)
2949; CHECK-NEXT:    vl %v6, 176(%r15)
2950; CHECK-NEXT:    vsel %v26, %v6, %v5, %v1
2951; CHECK-NEXT:    vl %v5, 208(%r15)
2952; CHECK-NEXT:    vmrlg %v1, %v2, %v2
2953; CHECK-NEXT:    vl %v2, 336(%r15)
2954; CHECK-NEXT:    vuphf %v1, %v1
2955; CHECK-NEXT:    vsel %v30, %v5, %v2, %v1
2956; CHECK-NEXT:    vl %v2, 368(%r15)
2957; CHECK-NEXT:    vmrlg %v1, %v3, %v3
2958; CHECK-NEXT:    vl %v3, 240(%r15)
2959; CHECK-NEXT:    vuphf %v1, %v1
2960; CHECK-NEXT:    vsel %v27, %v3, %v2, %v1
2961; CHECK-NEXT:    vl %v2, 400(%r15)
2962; CHECK-NEXT:    vl %v3, 272(%r15)
2963; CHECK-NEXT:    vmrlg %v1, %v4, %v4
2964; CHECK-NEXT:    vuphf %v1, %v1
2965; CHECK-NEXT:    vsel %v31, %v3, %v2, %v1
2966; CHECK-NEXT:    br %r14
2967  %cmp = fcmp ogt <16 x float> %val1, %val2
2968  %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
2969  ret <16 x i64> %sel
2970}
2971
2972define <16 x float> @fun136(<16 x float> %val1, <16 x float> %val2, <16 x float> %val3, <16 x float> %val4) {
2973; CHECK-LABEL: fun136:
2974; CHECK:       # BB#0:
2975; CHECK-NEXT:    vmrlf %v0, %v25, %v25
2976; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2977; CHECK-NEXT:    vldeb %v0, %v0
2978; CHECK-NEXT:    vldeb %v1, %v1
2979; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2980; CHECK-NEXT:    vmrhf %v1, %v25, %v25
2981; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2982; CHECK-NEXT:    vldeb %v1, %v1
2983; CHECK-NEXT:    vldeb %v2, %v2
2984; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2985; CHECK-NEXT:    vl %v2, 160(%r15)
2986; CHECK-NEXT:    vpkg %v0, %v1, %v0
2987; CHECK-NEXT:    vl %v1, 224(%r15)
2988; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2989; CHECK-NEXT:    vmrlf %v0, %v27, %v27
2990; CHECK-NEXT:    vmrlf %v1, %v26, %v26
2991; CHECK-NEXT:    vmrhf %v2, %v26, %v26
2992; CHECK-NEXT:    vldeb %v0, %v0
2993; CHECK-NEXT:    vldeb %v1, %v1
2994; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2995; CHECK-NEXT:    vmrhf %v1, %v27, %v27
2996; CHECK-NEXT:    vldeb %v1, %v1
2997; CHECK-NEXT:    vldeb %v2, %v2
2998; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2999; CHECK-NEXT:    vl %v2, 176(%r15)
3000; CHECK-NEXT:    vpkg %v0, %v1, %v0
3001; CHECK-NEXT:    vl %v1, 240(%r15)
3002; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
3003; CHECK-NEXT:    vmrlf %v0, %v29, %v29
3004; CHECK-NEXT:    vmrlf %v1, %v28, %v28
3005; CHECK-NEXT:    vmrhf %v2, %v28, %v28
3006; CHECK-NEXT:    vldeb %v0, %v0
3007; CHECK-NEXT:    vldeb %v1, %v1
3008; CHECK-NEXT:    vfchdb %v0, %v1, %v0
3009; CHECK-NEXT:    vmrhf %v1, %v29, %v29
3010; CHECK-NEXT:    vldeb %v1, %v1
3011; CHECK-NEXT:    vldeb %v2, %v2
3012; CHECK-NEXT:    vfchdb %v1, %v2, %v1
3013; CHECK-NEXT:    vl %v2, 192(%r15)
3014; CHECK-NEXT:    vpkg %v0, %v1, %v0
3015; CHECK-NEXT:    vl %v1, 256(%r15)
3016; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
3017; CHECK-NEXT:    vmrlf %v0, %v31, %v31
3018; CHECK-NEXT:    vmrlf %v1, %v30, %v30
3019; CHECK-NEXT:    vmrhf %v2, %v30, %v30
3020; CHECK-NEXT:    vldeb %v0, %v0
3021; CHECK-NEXT:    vldeb %v1, %v1
3022; CHECK-NEXT:    vfchdb %v0, %v1, %v0
3023; CHECK-NEXT:    vmrhf %v1, %v31, %v31
3024; CHECK-NEXT:    vldeb %v1, %v1
3025; CHECK-NEXT:    vldeb %v2, %v2
3026; CHECK-NEXT:    vfchdb %v1, %v2, %v1
3027; CHECK-NEXT:    vl %v2, 208(%r15)
3028; CHECK-NEXT:    vpkg %v0, %v1, %v0
3029; CHECK-NEXT:    vl %v1, 272(%r15)
3030; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
3031; CHECK-NEXT:    br %r14
3032  %cmp = fcmp ogt <16 x float> %val1, %val2
3033  %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
3034  ret <16 x float> %sel
3035}
3036
3037define <16 x double> @fun137(<16 x float> %val1, <16 x float> %val2, <16 x double> %val3, <16 x double> %val4) {
3038; CHECK-LABEL: fun137:
3039; CHECK:       # BB#0:
3040; CHECK-NEXT:    vmrlf %v0, %v25, %v25
3041; CHECK-NEXT:    vmrlf %v1, %v24, %v24
3042; CHECK-NEXT:    vldeb %v0, %v0
3043; CHECK-NEXT:    vldeb %v1, %v1
3044; CHECK-NEXT:    vfchdb %v0, %v1, %v0
3045; CHECK-NEXT:    vmrhf %v1, %v25, %v25
3046; CHECK-NEXT:    vmrhf %v2, %v24, %v24
3047; CHECK-NEXT:    vldeb %v1, %v1
3048; CHECK-NEXT:    vl %v3, 160(%r15)
3049; CHECK-NEXT:    vldeb %v2, %v2
3050; CHECK-NEXT:    vl %v4, 192(%r15)
3051; CHECK-NEXT:    vl %v6, 224(%r15)
3052; CHECK-NEXT:    vl %v7, 256(%r15)
3053; CHECK-NEXT:    vfchdb %v1, %v2, %v1
3054; CHECK-NEXT:    vl %v2, 288(%r15)
3055; CHECK-NEXT:    vpkg %v1, %v1, %v0
3056; CHECK-NEXT:    vuphf %v0, %v1
3057; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
3058; CHECK-NEXT:    vmrlf %v0, %v27, %v27
3059; CHECK-NEXT:    vmrlf %v2, %v26, %v26
3060; CHECK-NEXT:    vmrhf %v3, %v26, %v26
3061; CHECK-NEXT:    vmrhf %v5, %v28, %v28
3062; CHECK-NEXT:    vmrlg %v1, %v1, %v1
3063; CHECK-NEXT:    vuphf %v1, %v1
3064; CHECK-NEXT:    vldeb %v0, %v0
3065; CHECK-NEXT:    vldeb %v2, %v2
3066; CHECK-NEXT:    vfchdb %v0, %v2, %v0
3067; CHECK-NEXT:    vmrhf %v2, %v27, %v27
3068; CHECK-NEXT:    vldeb %v2, %v2
3069; CHECK-NEXT:    vldeb %v3, %v3
3070; CHECK-NEXT:    vfchdb %v2, %v3, %v2
3071; CHECK-NEXT:    vl %v3, 320(%r15)
3072; CHECK-NEXT:    vpkg %v2, %v2, %v0
3073; CHECK-NEXT:    vuphf %v0, %v2
3074; CHECK-NEXT:    vsel %v0, %v4, %v3, %v0
3075; CHECK-NEXT:    vmrlf %v3, %v29, %v29
3076; CHECK-NEXT:    vmrlf %v4, %v28, %v28
3077; CHECK-NEXT:    vlr %v28, %v0
3078; CHECK-NEXT:    vldeb %v3, %v3
3079; CHECK-NEXT:    vldeb %v4, %v4
3080; CHECK-NEXT:    vfchdb %v3, %v4, %v3
3081; CHECK-NEXT:    vmrhf %v4, %v29, %v29
3082; CHECK-NEXT:    vldeb %v4, %v4
3083; CHECK-NEXT:    vldeb %v5, %v5
3084; CHECK-NEXT:    vfchdb %v4, %v5, %v4
3085; CHECK-NEXT:    vl %v5, 352(%r15)
3086; CHECK-NEXT:    vpkg %v3, %v4, %v3
3087; CHECK-NEXT:    vuphf %v4, %v3
3088; CHECK-NEXT:    vsel %v25, %v6, %v5, %v4
3089; CHECK-NEXT:    vmrlf %v4, %v31, %v31
3090; CHECK-NEXT:    vmrlf %v5, %v30, %v30
3091; CHECK-NEXT:    vmrhf %v6, %v30, %v30
3092; CHECK-NEXT:    vldeb %v4, %v4
3093; CHECK-NEXT:    vldeb %v5, %v5
3094; CHECK-NEXT:    vfchdb %v4, %v5, %v4
3095; CHECK-NEXT:    vmrhf %v5, %v31, %v31
3096; CHECK-NEXT:    vldeb %v5, %v5
3097; CHECK-NEXT:    vldeb %v6, %v6
3098; CHECK-NEXT:    vfchdb %v5, %v6, %v5
3099; CHECK-NEXT:    vl %v6, 384(%r15)
3100; CHECK-NEXT:    vpkg %v4, %v5, %v4
3101; CHECK-NEXT:    vuphf %v5, %v4
3102; CHECK-NEXT:    vsel %v29, %v7, %v6, %v5
3103; CHECK-NEXT:    vl %v5, 304(%r15)
3104; CHECK-NEXT:    vl %v6, 176(%r15)
3105; CHECK-NEXT:    vsel %v26, %v6, %v5, %v1
3106; CHECK-NEXT:    vl %v5, 208(%r15)
3107; CHECK-NEXT:    vmrlg %v1, %v2, %v2
3108; CHECK-NEXT:    vl %v2, 336(%r15)
3109; CHECK-NEXT:    vuphf %v1, %v1
3110; CHECK-NEXT:    vsel %v30, %v5, %v2, %v1
3111; CHECK-NEXT:    vl %v2, 368(%r15)
3112; CHECK-NEXT:    vmrlg %v1, %v3, %v3
3113; CHECK-NEXT:    vl %v3, 240(%r15)
3114; CHECK-NEXT:    vuphf %v1, %v1
3115; CHECK-NEXT:    vsel %v27, %v3, %v2, %v1
3116; CHECK-NEXT:    vl %v2, 400(%r15)
3117; CHECK-NEXT:    vl %v3, 272(%r15)
3118; CHECK-NEXT:    vmrlg %v1, %v4, %v4
3119; CHECK-NEXT:    vuphf %v1, %v1
3120; CHECK-NEXT:    vsel %v31, %v3, %v2, %v1
3121; CHECK-NEXT:    br %r14
3122  %cmp = fcmp ogt <16 x float> %val1, %val2
3123  %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
3124  ret <16 x double> %sel
3125}
3126
3127define <16 x i8> @fun138(<16 x double> %val1, <16 x double> %val2, <16 x i8> %val3, <16 x i8> %val4) {
3128; CHECK-LABEL: fun138:
3129; CHECK:       # BB#0:
3130; CHECK-NEXT:    vl %v0, 272(%r15)
3131; CHECK-NEXT:    vl %v1, 256(%r15)
3132; CHECK-NEXT:    vfchdb %v0, %v31, %v0
3133; CHECK-NEXT:    vfchdb %v1, %v29, %v1
3134; CHECK-NEXT:    vpkg %v0, %v1, %v0
3135; CHECK-NEXT:    vl %v1, 240(%r15)
3136; CHECK-NEXT:    vl %v2, 224(%r15)
3137; CHECK-NEXT:    vfchdb %v1, %v27, %v1
3138; CHECK-NEXT:    vfchdb %v2, %v25, %v2
3139; CHECK-NEXT:    vpkg %v1, %v2, %v1
3140; CHECK-NEXT:    vpkf %v0, %v1, %v0
3141; CHECK-NEXT:    vl %v1, 208(%r15)
3142; CHECK-NEXT:    vl %v2, 192(%r15)
3143; CHECK-NEXT:    vfchdb %v1, %v30, %v1
3144; CHECK-NEXT:    vfchdb %v2, %v28, %v2
3145; CHECK-NEXT:    vpkg %v1, %v2, %v1
3146; CHECK-NEXT:    vl %v2, 176(%r15)
3147; CHECK-NEXT:    vl %v3, 160(%r15)
3148; CHECK-NEXT:    vfchdb %v2, %v26, %v2
3149; CHECK-NEXT:    vfchdb %v3, %v24, %v3
3150; CHECK-NEXT:    vpkg %v2, %v3, %v2
3151; CHECK-NEXT:    vpkf %v1, %v2, %v1
3152; CHECK-NEXT:    vpkh %v0, %v1, %v0
3153; CHECK-NEXT:    vl %v1, 304(%r15)
3154; CHECK-NEXT:    vl %v2, 288(%r15)
3155; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
3156; CHECK-NEXT:    br %r14
3157  %cmp = fcmp ogt <16 x double> %val1, %val2
3158  %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
3159  ret <16 x i8> %sel
3160}
3161
3162define <16 x i16> @fun139(<16 x double> %val1, <16 x double> %val2, <16 x i16> %val3, <16 x i16> %val4) {
3163; CHECK-LABEL: fun139:
3164; CHECK:       # BB#0:
3165; CHECK-NEXT:    vl %v0, 208(%r15)
3166; CHECK-NEXT:    vl %v1, 192(%r15)
3167; CHECK-NEXT:    vfchdb %v0, %v30, %v0
3168; CHECK-NEXT:    vfchdb %v1, %v28, %v1
3169; CHECK-NEXT:    vpkg %v0, %v1, %v0
3170; CHECK-NEXT:    vl %v1, 176(%r15)
3171; CHECK-NEXT:    vl %v2, 160(%r15)
3172; CHECK-NEXT:    vfchdb %v1, %v26, %v1
3173; CHECK-NEXT:    vfchdb %v2, %v24, %v2
3174; CHECK-NEXT:    vpkg %v1, %v2, %v1
3175; CHECK-NEXT:    vpkf %v0, %v1, %v0
3176; CHECK-NEXT:    vl %v1, 320(%r15)
3177; CHECK-NEXT:    vl %v2, 288(%r15)
3178; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
3179; CHECK-NEXT:    vl %v0, 272(%r15)
3180; CHECK-NEXT:    vl %v1, 256(%r15)
3181; CHECK-NEXT:    vfchdb %v0, %v31, %v0
3182; CHECK-NEXT:    vfchdb %v1, %v29, %v1
3183; CHECK-NEXT:    vpkg %v0, %v1, %v0
3184; CHECK-NEXT:    vl %v1, 240(%r15)
3185; CHECK-NEXT:    vl %v2, 224(%r15)
3186; CHECK-NEXT:    vfchdb %v1, %v27, %v1
3187; CHECK-NEXT:    vfchdb %v2, %v25, %v2
3188; CHECK-NEXT:    vpkg %v1, %v2, %v1
3189; CHECK-NEXT:    vpkf %v0, %v1, %v0
3190; CHECK-NEXT:    vl %v1, 336(%r15)
3191; CHECK-NEXT:    vl %v2, 304(%r15)
3192; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
3193; CHECK-NEXT:    br %r14
3194  %cmp = fcmp ogt <16 x double> %val1, %val2
3195  %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
3196  ret <16 x i16> %sel
3197}
3198
3199define <16 x i32> @fun140(<16 x double> %val1, <16 x double> %val2, <16 x i32> %val3, <16 x i32> %val4) {
3200; CHECK-LABEL: fun140:
3201; CHECK:       # BB#0:
3202; CHECK-NEXT:    vl %v0, 176(%r15)
3203; CHECK-NEXT:    vl %v1, 160(%r15)
3204; CHECK-NEXT:    vfchdb %v0, %v26, %v0
3205; CHECK-NEXT:    vfchdb %v1, %v24, %v1
3206; CHECK-NEXT:    vpkg %v0, %v1, %v0
3207; CHECK-NEXT:    vl %v1, 352(%r15)
3208; CHECK-NEXT:    vl %v2, 288(%r15)
3209; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
3210; CHECK-NEXT:    vl %v0, 208(%r15)
3211; CHECK-NEXT:    vl %v1, 192(%r15)
3212; CHECK-NEXT:    vfchdb %v0, %v30, %v0
3213; CHECK-NEXT:    vfchdb %v1, %v28, %v1
3214; CHECK-NEXT:    vpkg %v0, %v1, %v0
3215; CHECK-NEXT:    vl %v1, 368(%r15)
3216; CHECK-NEXT:    vl %v2, 304(%r15)
3217; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
3218; CHECK-NEXT:    vl %v0, 240(%r15)
3219; CHECK-NEXT:    vl %v1, 224(%r15)
3220; CHECK-NEXT:    vfchdb %v0, %v27, %v0
3221; CHECK-NEXT:    vfchdb %v1, %v25, %v1
3222; CHECK-NEXT:    vpkg %v0, %v1, %v0
3223; CHECK-NEXT:    vl %v1, 384(%r15)
3224; CHECK-NEXT:    vl %v2, 320(%r15)
3225; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
3226; CHECK-NEXT:    vl %v0, 272(%r15)
3227; CHECK-NEXT:    vl %v1, 256(%r15)
3228; CHECK-NEXT:    vfchdb %v0, %v31, %v0
3229; CHECK-NEXT:    vfchdb %v1, %v29, %v1
3230; CHECK-NEXT:    vpkg %v0, %v1, %v0
3231; CHECK-NEXT:    vl %v1, 400(%r15)
3232; CHECK-NEXT:    vl %v2, 336(%r15)
3233; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
3234; CHECK-NEXT:    br %r14
3235  %cmp = fcmp ogt <16 x double> %val1, %val2
3236  %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
3237  ret <16 x i32> %sel
3238}
3239
3240define <16 x i64> @fun141(<16 x double> %val1, <16 x double> %val2, <16 x i64> %val3, <16 x i64> %val4) {
3241; CHECK-LABEL: fun141:
3242; CHECK:       # BB#0:
3243; CHECK-NEXT:    vl %v0, 160(%r15)
3244; CHECK-NEXT:    vl %v1, 416(%r15)
3245; CHECK-NEXT:    vl %v2, 288(%r15)
3246; CHECK-NEXT:    vfchdb %v0, %v24, %v0
3247; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
3248; CHECK-NEXT:    vl %v0, 176(%r15)
3249; CHECK-NEXT:    vl %v1, 432(%r15)
3250; CHECK-NEXT:    vl %v2, 304(%r15)
3251; CHECK-NEXT:    vfchdb %v0, %v26, %v0
3252; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
3253; CHECK-NEXT:    vl %v0, 192(%r15)
3254; CHECK-NEXT:    vl %v1, 448(%r15)
3255; CHECK-NEXT:    vl %v2, 320(%r15)
3256; CHECK-NEXT:    vfchdb %v0, %v28, %v0
3257; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
3258; CHECK-NEXT:    vl %v0, 208(%r15)
3259; CHECK-NEXT:    vl %v1, 464(%r15)
3260; CHECK-NEXT:    vl %v2, 336(%r15)
3261; CHECK-NEXT:    vfchdb %v0, %v30, %v0
3262; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
3263; CHECK-NEXT:    vl %v0, 224(%r15)
3264; CHECK-NEXT:    vl %v1, 480(%r15)
3265; CHECK-NEXT:    vl %v2, 352(%r15)
3266; CHECK-NEXT:    vfchdb %v0, %v25, %v0
3267; CHECK-NEXT:    vsel %v25, %v2, %v1, %v0
3268; CHECK-NEXT:    vl %v0, 240(%r15)
3269; CHECK-NEXT:    vl %v1, 496(%r15)
3270; CHECK-NEXT:    vl %v2, 368(%r15)
3271; CHECK-NEXT:    vfchdb %v0, %v27, %v0
3272; CHECK-NEXT:    vsel %v27, %v2, %v1, %v0
3273; CHECK-NEXT:    vl %v0, 256(%r15)
3274; CHECK-NEXT:    vfchdb %v0, %v29, %v0
3275; CHECK-NEXT:    vl %v1, 512(%r15)
3276; CHECK-NEXT:    vl %v2, 384(%r15)
3277; CHECK-NEXT:    vsel %v29, %v2, %v1, %v0
3278; CHECK-NEXT:    vl %v0, 272(%r15)
3279; CHECK-NEXT:    vfchdb %v0, %v31, %v0
3280; CHECK-NEXT:    vl %v1, 528(%r15)
3281; CHECK-NEXT:    vl %v2, 400(%r15)
3282; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
3283; CHECK-NEXT:    br %r14
3284  %cmp = fcmp ogt <16 x double> %val1, %val2
3285  %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
3286  ret <16 x i64> %sel
3287}
3288
3289define <16 x float> @fun142(<16 x double> %val1, <16 x double> %val2, <16 x float> %val3, <16 x float> %val4) {
3290; CHECK-LABEL: fun142:
3291; CHECK:       # BB#0:
3292; CHECK-NEXT:    vl %v0, 176(%r15)
3293; CHECK-NEXT:    vl %v1, 160(%r15)
3294; CHECK-NEXT:    vfchdb %v0, %v26, %v0
3295; CHECK-NEXT:    vfchdb %v1, %v24, %v1
3296; CHECK-NEXT:    vpkg %v0, %v1, %v0
3297; CHECK-NEXT:    vl %v1, 352(%r15)
3298; CHECK-NEXT:    vl %v2, 288(%r15)
3299; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
3300; CHECK-NEXT:    vl %v0, 208(%r15)
3301; CHECK-NEXT:    vl %v1, 192(%r15)
3302; CHECK-NEXT:    vfchdb %v0, %v30, %v0
3303; CHECK-NEXT:    vfchdb %v1, %v28, %v1
3304; CHECK-NEXT:    vpkg %v0, %v1, %v0
3305; CHECK-NEXT:    vl %v1, 368(%r15)
3306; CHECK-NEXT:    vl %v2, 304(%r15)
3307; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
3308; CHECK-NEXT:    vl %v0, 240(%r15)
3309; CHECK-NEXT:    vl %v1, 224(%r15)
3310; CHECK-NEXT:    vfchdb %v0, %v27, %v0
3311; CHECK-NEXT:    vfchdb %v1, %v25, %v1
3312; CHECK-NEXT:    vpkg %v0, %v1, %v0
3313; CHECK-NEXT:    vl %v1, 384(%r15)
3314; CHECK-NEXT:    vl %v2, 320(%r15)
3315; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
3316; CHECK-NEXT:    vl %v0, 272(%r15)
3317; CHECK-NEXT:    vl %v1, 256(%r15)
3318; CHECK-NEXT:    vfchdb %v0, %v31, %v0
3319; CHECK-NEXT:    vfchdb %v1, %v29, %v1
3320; CHECK-NEXT:    vpkg %v0, %v1, %v0
3321; CHECK-NEXT:    vl %v1, 400(%r15)
3322; CHECK-NEXT:    vl %v2, 336(%r15)
3323; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
3324; CHECK-NEXT:    br %r14
3325  %cmp = fcmp ogt <16 x double> %val1, %val2
3326  %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
3327  ret <16 x float> %sel
3328}
3329
3330define <16 x double> @fun143(<16 x double> %val1, <16 x double> %val2, <16 x double> %val3, <16 x double> %val4) {
3331; CHECK-LABEL: fun143:
3332; CHECK:       # BB#0:
3333; CHECK-NEXT:    vl %v0, 160(%r15)
3334; CHECK-NEXT:    vl %v1, 416(%r15)
3335; CHECK-NEXT:    vl %v2, 288(%r15)
3336; CHECK-NEXT:    vfchdb %v0, %v24, %v0
3337; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
3338; CHECK-NEXT:    vl %v0, 176(%r15)
3339; CHECK-NEXT:    vl %v1, 432(%r15)
3340; CHECK-NEXT:    vl %v2, 304(%r15)
3341; CHECK-NEXT:    vfchdb %v0, %v26, %v0
3342; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
3343; CHECK-NEXT:    vl %v0, 192(%r15)
3344; CHECK-NEXT:    vl %v1, 448(%r15)
3345; CHECK-NEXT:    vl %v2, 320(%r15)
3346; CHECK-NEXT:    vfchdb %v0, %v28, %v0
3347; CHECK-NEXT:    vsel %v28, %v2, %v1, %v0
3348; CHECK-NEXT:    vl %v0, 208(%r15)
3349; CHECK-NEXT:    vl %v1, 464(%r15)
3350; CHECK-NEXT:    vl %v2, 336(%r15)
3351; CHECK-NEXT:    vfchdb %v0, %v30, %v0
3352; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
3353; CHECK-NEXT:    vl %v0, 224(%r15)
3354; CHECK-NEXT:    vl %v1, 480(%r15)
3355; CHECK-NEXT:    vl %v2, 352(%r15)
3356; CHECK-NEXT:    vfchdb %v0, %v25, %v0
3357; CHECK-NEXT:    vsel %v25, %v2, %v1, %v0
3358; CHECK-NEXT:    vl %v0, 240(%r15)
3359; CHECK-NEXT:    vl %v1, 496(%r15)
3360; CHECK-NEXT:    vl %v2, 368(%r15)
3361; CHECK-NEXT:    vfchdb %v0, %v27, %v0
3362; CHECK-NEXT:    vsel %v27, %v2, %v1, %v0
3363; CHECK-NEXT:    vl %v0, 256(%r15)
3364; CHECK-NEXT:    vfchdb %v0, %v29, %v0
3365; CHECK-NEXT:    vl %v1, 512(%r15)
3366; CHECK-NEXT:    vl %v2, 384(%r15)
3367; CHECK-NEXT:    vsel %v29, %v2, %v1, %v0
3368; CHECK-NEXT:    vl %v0, 272(%r15)
3369; CHECK-NEXT:    vfchdb %v0, %v31, %v0
3370; CHECK-NEXT:    vl %v1, 528(%r15)
3371; CHECK-NEXT:    vl %v2, 400(%r15)
3372; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
3373; CHECK-NEXT:    br %r14
3374  %cmp = fcmp ogt <16 x double> %val1, %val2
3375  %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
3376  ret <16 x double> %sel
3377}
3378
3379