1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2;
3; Test that a vector select with a logic combination of two compares do not
4; produce any unnecessary pack, unpack or shift instructions.
5; And, Or and Xor are tested.
6;
7; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13   | FileCheck %s
8
9
10define <2 x i8> @fun0(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i8> %val5, <2 x i8> %val6) {
11; CHECK-LABEL: fun0:
12; CHECK:       # BB#0:
13; CHECK-NEXT:    vceqb %v0, %v28, %v30
14; CHECK-NEXT:    vceqb %v1, %v24, %v26
15; CHECK-NEXT:    vn %v0, %v1, %v0
16; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
17; CHECK-NEXT:    br %r14
18  %cmp0 = icmp eq <2 x i8> %val1, %val2
19  %cmp1 = icmp eq <2 x i8> %val3, %val4
20  %and = and <2 x i1> %cmp0, %cmp1
21  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
22  ret <2 x i8> %sel
23}
24
25define <2 x i16> @fun1(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i16> %val5, <2 x i16> %val6) {
26; CHECK-LABEL: fun1:
27; CHECK:       # BB#0:
28; CHECK-NEXT:    vceqb %v0, %v28, %v30
29; CHECK-NEXT:    vceqb %v1, %v24, %v26
30; CHECK-NEXT:    vn %v0, %v1, %v0
31; CHECK-NEXT:    vuphb %v0, %v0
32; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
33; CHECK-NEXT:    br %r14
34  %cmp0 = icmp eq <2 x i8> %val1, %val2
35  %cmp1 = icmp eq <2 x i8> %val3, %val4
36  %and = and <2 x i1> %cmp0, %cmp1
37  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
38  ret <2 x i16> %sel
39}
40
41define <2 x i8> @fun2(<2 x i8> %val1, <2 x i8> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i8> %val5, <2 x i8> %val6) {
42; CHECK-LABEL: fun2:
43; CHECK:       # BB#0:
44; CHECK-NEXT:    vceqh %v1, %v28, %v30
45; CHECK-NEXT:    vceqb %v0, %v24, %v26
46; CHECK-NEXT:    vpkh %v1, %v1, %v1
47; CHECK-NEXT:    vn %v0, %v0, %v1
48; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
49; CHECK-NEXT:    br %r14
50  %cmp0 = icmp eq <2 x i8> %val1, %val2
51  %cmp1 = icmp eq <2 x i16> %val3, %val4
52  %and = and <2 x i1> %cmp0, %cmp1
53  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
54  ret <2 x i8> %sel
55}
56
57define <2 x i32> @fun3(<2 x i8> %val1, <2 x i8> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i32> %val5, <2 x i32> %val6) {
58; CHECK-LABEL: fun3:
59; CHECK:       # BB#0:
60; CHECK-NEXT:    vceqb %v1, %v24, %v26
61; CHECK-NEXT:    vuphb %v1, %v1
62; CHECK-NEXT:    vceqf %v0, %v28, %v30
63; CHECK-NEXT:    vuphh %v1, %v1
64; CHECK-NEXT:    vn %v0, %v1, %v0
65; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
66; CHECK-NEXT:    br %r14
67  %cmp0 = icmp eq <2 x i8> %val1, %val2
68  %cmp1 = icmp eq <2 x i32> %val3, %val4
69  %and = and <2 x i1> %cmp0, %cmp1
70  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
71  ret <2 x i32> %sel
72}
73
74define <2 x i32> @fun4(<2 x i8> %val1, <2 x i8> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i32> %val5, <2 x i32> %val6) {
75; CHECK-LABEL: fun4:
76; CHECK:       # BB#0:
77; CHECK-NEXT:    vceqb %v1, %v24, %v26
78; CHECK-NEXT:    vceqg %v0, %v28, %v30
79; CHECK-NEXT:    vuphb %v1, %v1
80; CHECK-NEXT:    vpkg %v0, %v0, %v0
81; CHECK-NEXT:    vuphh %v1, %v1
82; CHECK-NEXT:    vn %v0, %v1, %v0
83; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
84; CHECK-NEXT:    br %r14
85  %cmp0 = icmp eq <2 x i8> %val1, %val2
86  %cmp1 = icmp eq <2 x i64> %val3, %val4
87  %and = and <2 x i1> %cmp0, %cmp1
88  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
89  ret <2 x i32> %sel
90}
91
92define <2 x i16> @fun5(<2 x i8> %val1, <2 x i8> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i16> %val5, <2 x i16> %val6) {
93; CHECK-LABEL: fun5:
94; CHECK:       # BB#0:
95; CHECK-NEXT:    vmrlf %v0, %v30, %v30
96; CHECK-NEXT:    vmrlf %v1, %v28, %v28
97; CHECK-NEXT:    vldeb %v0, %v0
98; CHECK-NEXT:    vldeb %v1, %v1
99; CHECK-NEXT:    vfchdb %v0, %v1, %v0
100; CHECK-NEXT:    vmrhf %v1, %v30, %v30
101; CHECK-NEXT:    vmrhf %v2, %v28, %v28
102; CHECK-NEXT:    vldeb %v1, %v1
103; CHECK-NEXT:    vldeb %v2, %v2
104; CHECK-NEXT:    vfchdb %v1, %v2, %v1
105; CHECK-NEXT:    vpkg %v0, %v1, %v0
106; CHECK-NEXT:    vceqb %v1, %v24, %v26
107; CHECK-NEXT:    vpkf %v0, %v0, %v0
108; CHECK-NEXT:    vuphb %v1, %v1
109; CHECK-NEXT:    vn %v0, %v1, %v0
110; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
111; CHECK-NEXT:    br %r14
112  %cmp0 = icmp eq <2 x i8> %val1, %val2
113  %cmp1 = fcmp ogt <2 x float> %val3, %val4
114  %and = and <2 x i1> %cmp0, %cmp1
115  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
116  ret <2 x i16> %sel
117}
118
119define <2 x i64> @fun6(<2 x i8> %val1, <2 x i8> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i64> %val5, <2 x i64> %val6) {
120; CHECK-LABEL: fun6:
121; CHECK:       # BB#0:
122; CHECK-NEXT:    vceqb %v1, %v24, %v26
123; CHECK-NEXT:    vuphb %v1, %v1
124; CHECK-NEXT:    vuphh %v1, %v1
125; CHECK-NEXT:    vfchdb %v0, %v28, %v30
126; CHECK-NEXT:    vuphf %v1, %v1
127; CHECK-NEXT:    vn %v0, %v1, %v0
128; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
129; CHECK-NEXT:    br %r14
130  %cmp0 = icmp eq <2 x i8> %val1, %val2
131  %cmp1 = fcmp ogt <2 x double> %val3, %val4
132  %and = and <2 x i1> %cmp0, %cmp1
133  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
134  ret <2 x i64> %sel
135}
136
137define <2 x i8> @fun7(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i8> %val5, <2 x i8> %val6) {
138; CHECK-LABEL: fun7:
139; CHECK:       # BB#0:
140; CHECK-NEXT:    vceqh %v0, %v28, %v30
141; CHECK-NEXT:    vceqh %v1, %v24, %v26
142; CHECK-NEXT:    vn %v0, %v1, %v0
143; CHECK-NEXT:    vpkh %v0, %v0, %v0
144; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
145; CHECK-NEXT:    br %r14
146  %cmp0 = icmp eq <2 x i16> %val1, %val2
147  %cmp1 = icmp eq <2 x i16> %val3, %val4
148  %and = and <2 x i1> %cmp0, %cmp1
149  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
150  ret <2 x i8> %sel
151}
152
153define <2 x i16> @fun8(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i16> %val5, <2 x i16> %val6) {
154; CHECK-LABEL: fun8:
155; CHECK:       # BB#0:
156; CHECK-NEXT:    vceqh %v0, %v28, %v30
157; CHECK-NEXT:    vceqh %v1, %v24, %v26
158; CHECK-NEXT:    vn %v0, %v1, %v0
159; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
160; CHECK-NEXT:    br %r14
161  %cmp0 = icmp eq <2 x i16> %val1, %val2
162  %cmp1 = icmp eq <2 x i16> %val3, %val4
163  %and = and <2 x i1> %cmp0, %cmp1
164  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
165  ret <2 x i16> %sel
166}
167
168define <2 x i32> @fun9(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i32> %val5, <2 x i32> %val6) {
169; CHECK-LABEL: fun9:
170; CHECK:       # BB#0:
171; CHECK-NEXT:    vceqh %v0, %v28, %v30
172; CHECK-NEXT:    vceqh %v1, %v24, %v26
173; CHECK-NEXT:    vn %v0, %v1, %v0
174; CHECK-NEXT:    vuphh %v0, %v0
175; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
176; CHECK-NEXT:    br %r14
177  %cmp0 = icmp eq <2 x i16> %val1, %val2
178  %cmp1 = icmp eq <2 x i16> %val3, %val4
179  %and = and <2 x i1> %cmp0, %cmp1
180  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
181  ret <2 x i32> %sel
182}
183
184define <2 x i8> @fun10(<2 x i16> %val1, <2 x i16> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i8> %val5, <2 x i8> %val6) {
185; CHECK-LABEL: fun10:
186; CHECK:       # BB#0:
187; CHECK-NEXT:    vceqf %v1, %v28, %v30
188; CHECK-NEXT:    vceqh %v0, %v24, %v26
189; CHECK-NEXT:    vpkf %v1, %v1, %v1
190; CHECK-NEXT:    vn %v0, %v0, %v1
191; CHECK-NEXT:    vpkh %v0, %v0, %v0
192; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
193; CHECK-NEXT:    br %r14
194  %cmp0 = icmp eq <2 x i16> %val1, %val2
195  %cmp1 = icmp eq <2 x i32> %val3, %val4
196  %and = and <2 x i1> %cmp0, %cmp1
197  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
198  ret <2 x i8> %sel
199}
200
201define <2 x i8> @fun11(<2 x i16> %val1, <2 x i16> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i8> %val5, <2 x i8> %val6) {
202; CHECK-LABEL: fun11:
203; CHECK:       # BB#0:
204; CHECK-NEXT:    larl %r1, .LCPI11_0
205; CHECK-NEXT:    vl %v1, 0(%r1)
206; CHECK-NEXT:    vceqg %v0, %v28, %v30
207; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
208; CHECK-NEXT:    vceqh %v1, %v24, %v26
209; CHECK-NEXT:    vn %v0, %v1, %v0
210; CHECK-NEXT:    vpkh %v0, %v0, %v0
211; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
212; CHECK-NEXT:    br %r14
213  %cmp0 = icmp eq <2 x i16> %val1, %val2
214  %cmp1 = icmp eq <2 x i64> %val3, %val4
215  %and = and <2 x i1> %cmp0, %cmp1
216  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
217  ret <2 x i8> %sel
218}
219
220define <2 x double> @fun12(<2 x i16> %val1, <2 x i16> %val2, <2 x float> %val3, <2 x float> %val4, <2 x double> %val5, <2 x double> %val6) {
221; CHECK-LABEL: fun12:
222; CHECK:       # BB#0:
223; CHECK-NEXT:    vmrlf %v0, %v30, %v30
224; CHECK-NEXT:    vmrlf %v1, %v28, %v28
225; CHECK-NEXT:    vldeb %v0, %v0
226; CHECK-NEXT:    vldeb %v1, %v1
227; CHECK-NEXT:    vfchdb %v0, %v1, %v0
228; CHECK-NEXT:    vmrhf %v1, %v30, %v30
229; CHECK-NEXT:    vmrhf %v2, %v28, %v28
230; CHECK-NEXT:    vldeb %v1, %v1
231; CHECK-NEXT:    vldeb %v2, %v2
232; CHECK-NEXT:    vfchdb %v1, %v2, %v1
233; CHECK-NEXT:    vpkg %v0, %v1, %v0
234; CHECK-NEXT:    vceqh %v1, %v24, %v26
235; CHECK-NEXT:    vuphh %v1, %v1
236; CHECK-NEXT:    vn %v0, %v1, %v0
237; CHECK-NEXT:    vuphf %v0, %v0
238; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
239; CHECK-NEXT:    br %r14
240  %cmp0 = icmp eq <2 x i16> %val1, %val2
241  %cmp1 = fcmp ogt <2 x float> %val3, %val4
242  %and = and <2 x i1> %cmp0, %cmp1
243  %sel = select <2 x i1> %and, <2 x double> %val5, <2 x double> %val6
244  ret <2 x double> %sel
245}
246
247define <2 x i16> @fun13(<2 x i16> %val1, <2 x i16> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i16> %val5, <2 x i16> %val6) {
248; CHECK-LABEL: fun13:
249; CHECK:       # BB#0:
250; CHECK-NEXT:    larl %r1, .LCPI13_0
251; CHECK-NEXT:    vl %v1, 0(%r1)
252; CHECK-NEXT:    vfchdb %v0, %v28, %v30
253; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
254; CHECK-NEXT:    vceqh %v1, %v24, %v26
255; CHECK-NEXT:    vn %v0, %v1, %v0
256; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
257; CHECK-NEXT:    br %r14
258  %cmp0 = icmp eq <2 x i16> %val1, %val2
259  %cmp1 = fcmp ogt <2 x double> %val3, %val4
260  %and = and <2 x i1> %cmp0, %cmp1
261  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
262  ret <2 x i16> %sel
263}
264
265define <2 x i16> @fun14(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i16> %val5, <2 x i16> %val6) {
266; CHECK-LABEL: fun14:
267; CHECK:       # BB#0:
268; CHECK-NEXT:    vceqf %v0, %v28, %v30
269; CHECK-NEXT:    vceqf %v1, %v24, %v26
270; CHECK-NEXT:    vn %v0, %v1, %v0
271; CHECK-NEXT:    vpkf %v0, %v0, %v0
272; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
273; CHECK-NEXT:    br %r14
274  %cmp0 = icmp eq <2 x i32> %val1, %val2
275  %cmp1 = icmp eq <2 x i32> %val3, %val4
276  %and = and <2 x i1> %cmp0, %cmp1
277  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
278  ret <2 x i16> %sel
279}
280
281define <2 x i32> @fun15(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i32> %val5, <2 x i32> %val6) {
282; CHECK-LABEL: fun15:
283; CHECK:       # BB#0:
284; CHECK-NEXT:    vceqf %v0, %v28, %v30
285; CHECK-NEXT:    vceqf %v1, %v24, %v26
286; CHECK-NEXT:    vn %v0, %v1, %v0
287; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
288; CHECK-NEXT:    br %r14
289  %cmp0 = icmp eq <2 x i32> %val1, %val2
290  %cmp1 = icmp eq <2 x i32> %val3, %val4
291  %and = and <2 x i1> %cmp0, %cmp1
292  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
293  ret <2 x i32> %sel
294}
295
296define <2 x i64> @fun16(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i64> %val5, <2 x i64> %val6) {
297; CHECK-LABEL: fun16:
298; CHECK:       # BB#0:
299; CHECK-NEXT:    vceqf %v0, %v28, %v30
300; CHECK-NEXT:    vceqf %v1, %v24, %v26
301; CHECK-NEXT:    vn %v0, %v1, %v0
302; CHECK-NEXT:    vuphf %v0, %v0
303; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
304; CHECK-NEXT:    br %r14
305  %cmp0 = icmp eq <2 x i32> %val1, %val2
306  %cmp1 = icmp eq <2 x i32> %val3, %val4
307  %and = and <2 x i1> %cmp0, %cmp1
308  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
309  ret <2 x i64> %sel
310}
311
312define <2 x i64> @fun17(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) {
313; CHECK-LABEL: fun17:
314; CHECK:       # BB#0:
315; CHECK-NEXT:    vceqf %v1, %v24, %v26
316; CHECK-NEXT:    vceqg %v0, %v28, %v30
317; CHECK-NEXT:    vuphf %v1, %v1
318; CHECK-NEXT:    vn %v0, %v1, %v0
319; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
320; CHECK-NEXT:    br %r14
321  %cmp0 = icmp eq <2 x i32> %val1, %val2
322  %cmp1 = icmp eq <2 x i64> %val3, %val4
323  %and = and <2 x i1> %cmp0, %cmp1
324  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
325  ret <2 x i64> %sel
326}
327
328define <2 x i16> @fun18(<2 x i32> %val1, <2 x i32> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i16> %val5, <2 x i16> %val6) {
329; CHECK-LABEL: fun18:
330; CHECK:       # BB#0:
331; CHECK-NEXT:    vmrlf %v0, %v30, %v30
332; CHECK-NEXT:    vmrlf %v1, %v28, %v28
333; CHECK-NEXT:    vldeb %v0, %v0
334; CHECK-NEXT:    vldeb %v1, %v1
335; CHECK-NEXT:    vfchdb %v0, %v1, %v0
336; CHECK-NEXT:    vmrhf %v1, %v30, %v30
337; CHECK-NEXT:    vmrhf %v2, %v28, %v28
338; CHECK-NEXT:    vldeb %v1, %v1
339; CHECK-NEXT:    vldeb %v2, %v2
340; CHECK-NEXT:    vfchdb %v1, %v2, %v1
341; CHECK-NEXT:    vpkg %v0, %v1, %v0
342; CHECK-NEXT:    vceqf %v1, %v24, %v26
343; CHECK-NEXT:    vn %v0, %v1, %v0
344; CHECK-NEXT:    vpkf %v0, %v0, %v0
345; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
346; CHECK-NEXT:    br %r14
347  %cmp0 = icmp eq <2 x i32> %val1, %val2
348  %cmp1 = fcmp ogt <2 x float> %val3, %val4
349  %and = and <2 x i1> %cmp0, %cmp1
350  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
351  ret <2 x i16> %sel
352}
353
354define <2 x float> @fun19(<2 x i32> %val1, <2 x i32> %val2, <2 x double> %val3, <2 x double> %val4, <2 x float> %val5, <2 x float> %val6) {
355; CHECK-LABEL: fun19:
356; CHECK:       # BB#0:
357; CHECK-NEXT:    vfchdb %v1, %v28, %v30
358; CHECK-NEXT:    vceqf %v0, %v24, %v26
359; CHECK-NEXT:    vpkg %v1, %v1, %v1
360; CHECK-NEXT:    vn %v0, %v0, %v1
361; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
362; CHECK-NEXT:    br %r14
363  %cmp0 = icmp eq <2 x i32> %val1, %val2
364  %cmp1 = fcmp ogt <2 x double> %val3, %val4
365  %and = and <2 x i1> %cmp0, %cmp1
366  %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6
367  ret <2 x float> %sel
368}
369
370define <2 x i16> @fun20(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i16> %val5, <2 x i16> %val6) {
371; CHECK-LABEL: fun20:
372; CHECK:       # BB#0:
373; CHECK-NEXT:    vceqg %v0, %v28, %v30
374; CHECK-NEXT:    vceqg %v1, %v24, %v26
375; CHECK-NEXT:    larl %r1, .LCPI20_0
376; CHECK-NEXT:    vn %v0, %v1, %v0
377; CHECK-NEXT:    vl %v1, 0(%r1)
378; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
379; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
380; CHECK-NEXT:    br %r14
381  %cmp0 = icmp eq <2 x i64> %val1, %val2
382  %cmp1 = icmp eq <2 x i64> %val3, %val4
383  %and = and <2 x i1> %cmp0, %cmp1
384  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
385  ret <2 x i16> %sel
386}
387
388define <2 x i64> @fun21(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) {
389; CHECK-LABEL: fun21:
390; CHECK:       # BB#0:
391; CHECK-NEXT:    vceqg %v0, %v28, %v30
392; CHECK-NEXT:    vceqg %v1, %v24, %v26
393; CHECK-NEXT:    vn %v0, %v1, %v0
394; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
395; CHECK-NEXT:    br %r14
396  %cmp0 = icmp eq <2 x i64> %val1, %val2
397  %cmp1 = icmp eq <2 x i64> %val3, %val4
398  %and = and <2 x i1> %cmp0, %cmp1
399  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
400  ret <2 x i64> %sel
401}
402
403define <2 x i64> @fun22(<2 x i64> %val1, <2 x i64> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i64> %val5, <2 x i64> %val6) {
404; CHECK-LABEL: fun22:
405; CHECK:       # BB#0:
406; CHECK-NEXT:    vmrlf %v0, %v30, %v30
407; CHECK-NEXT:    vmrlf %v1, %v28, %v28
408; CHECK-NEXT:    vldeb %v0, %v0
409; CHECK-NEXT:    vldeb %v1, %v1
410; CHECK-NEXT:    vfchdb %v0, %v1, %v0
411; CHECK-NEXT:    vmrhf %v1, %v30, %v30
412; CHECK-NEXT:    vmrhf %v2, %v28, %v28
413; CHECK-NEXT:    vldeb %v1, %v1
414; CHECK-NEXT:    vldeb %v2, %v2
415; CHECK-NEXT:    vfchdb %v1, %v2, %v1
416; CHECK-NEXT:    vpkg %v0, %v1, %v0
417; CHECK-NEXT:    vuphf %v0, %v0
418; CHECK-NEXT:    vceqg %v1, %v24, %v26
419; CHECK-NEXT:    vn %v0, %v1, %v0
420; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
421; CHECK-NEXT:    br %r14
422  %cmp0 = icmp eq <2 x i64> %val1, %val2
423  %cmp1 = fcmp ogt <2 x float> %val3, %val4
424  %and = and <2 x i1> %cmp0, %cmp1
425  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
426  ret <2 x i64> %sel
427}
428
429define <2 x i16> @fun23(<2 x i64> %val1, <2 x i64> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i16> %val5, <2 x i16> %val6) {
430; CHECK-LABEL: fun23:
431; CHECK:       # BB#0:
432; CHECK-NEXT:    vfchdb %v0, %v28, %v30
433; CHECK-NEXT:    vceqg %v1, %v24, %v26
434; CHECK-NEXT:    larl %r1, .LCPI23_0
435; CHECK-NEXT:    vn %v0, %v1, %v0
436; CHECK-NEXT:    vl %v1, 0(%r1)
437; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
438; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
439; CHECK-NEXT:    br %r14
440  %cmp0 = icmp eq <2 x i64> %val1, %val2
441  %cmp1 = fcmp ogt <2 x double> %val3, %val4
442  %and = and <2 x i1> %cmp0, %cmp1
443  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
444  ret <2 x i16> %sel
445}
446
447define <2 x float> @fun24(<2 x float> %val1, <2 x float> %val2, <2 x float> %val3, <2 x float> %val4, <2 x float> %val5, <2 x float> %val6) {
448; CHECK-LABEL: fun24:
449; CHECK:       # BB#0:
450; CHECK-NEXT:    vmrlf %v0, %v30, %v30
451; CHECK-NEXT:    vmrlf %v1, %v28, %v28
452; CHECK-NEXT:    vldeb %v0, %v0
453; CHECK-NEXT:    vldeb %v1, %v1
454; CHECK-NEXT:    vfchdb %v0, %v1, %v0
455; CHECK-NEXT:    vmrhf %v1, %v30, %v30
456; CHECK-NEXT:    vmrhf %v2, %v28, %v28
457; CHECK-NEXT:    vldeb %v1, %v1
458; CHECK-NEXT:    vmrhf %v3, %v24, %v24
459; CHECK-NEXT:    vldeb %v2, %v2
460; CHECK-NEXT:    vfchdb %v1, %v2, %v1
461; CHECK-NEXT:    vpkg %v0, %v1, %v0
462; CHECK-NEXT:    vmrlf %v1, %v26, %v26
463; CHECK-NEXT:    vmrlf %v2, %v24, %v24
464; CHECK-NEXT:    vldeb %v1, %v1
465; CHECK-NEXT:    vldeb %v2, %v2
466; CHECK-NEXT:    vfchdb %v1, %v2, %v1
467; CHECK-NEXT:    vmrhf %v2, %v26, %v26
468; CHECK-NEXT:    vldeb %v2, %v2
469; CHECK-NEXT:    vldeb %v3, %v3
470; CHECK-NEXT:    vfchdb %v2, %v3, %v2
471; CHECK-NEXT:    vpkg %v1, %v2, %v1
472; CHECK-NEXT:    vn %v0, %v1, %v0
473; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
474; CHECK-NEXT:    br %r14
475  %cmp0 = fcmp ogt <2 x float> %val1, %val2
476  %cmp1 = fcmp ogt <2 x float> %val3, %val4
477  %and = and <2 x i1> %cmp0, %cmp1
478  %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6
479  ret <2 x float> %sel
480}
481
482define <2 x i32> @fun25(<2 x float> %val1, <2 x float> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i32> %val5, <2 x i32> %val6) {
483; CHECK-LABEL: fun25:
484; CHECK:       # BB#0:
485; CHECK-NEXT:    vmrlf %v0, %v26, %v26
486; CHECK-NEXT:    vmrlf %v1, %v24, %v24
487; CHECK-NEXT:    vldeb %v0, %v0
488; CHECK-NEXT:    vldeb %v1, %v1
489; CHECK-NEXT:    vfchdb %v0, %v1, %v0
490; CHECK-NEXT:    vmrhf %v1, %v26, %v26
491; CHECK-NEXT:    vmrhf %v2, %v24, %v24
492; CHECK-NEXT:    vldeb %v1, %v1
493; CHECK-NEXT:    vldeb %v2, %v2
494; CHECK-NEXT:    vfchdb %v1, %v2, %v1
495; CHECK-NEXT:    vpkg %v0, %v1, %v0
496; CHECK-NEXT:    vfchdb %v1, %v28, %v30
497; CHECK-NEXT:    vpkg %v1, %v1, %v1
498; CHECK-NEXT:    vn %v0, %v0, %v1
499; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
500; CHECK-NEXT:    br %r14
501  %cmp0 = fcmp ogt <2 x float> %val1, %val2
502  %cmp1 = fcmp ogt <2 x double> %val3, %val4
503  %and = and <2 x i1> %cmp0, %cmp1
504  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
505  ret <2 x i32> %sel
506}
507
508define <4 x i16> @fun26(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i16> %val5, <4 x i16> %val6) {
509; CHECK-LABEL: fun26:
510; CHECK:       # BB#0:
511; CHECK-NEXT:    vceqf %v0, %v28, %v30
512; CHECK-NEXT:    vceqf %v1, %v24, %v26
513; CHECK-NEXT:    vn %v0, %v1, %v0
514; CHECK-NEXT:    vpkf %v0, %v0, %v0
515; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
516; CHECK-NEXT:    br %r14
517  %cmp0 = icmp eq <4 x i32> %val1, %val2
518  %cmp1 = icmp eq <4 x i32> %val3, %val4
519  %and = and <4 x i1> %cmp0, %cmp1
520  %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6
521  ret <4 x i16> %sel
522}
523
524define <4 x i32> @fun27(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i32> %val5, <4 x i32> %val6) {
525; CHECK-LABEL: fun27:
526; CHECK:       # BB#0:
527; CHECK-NEXT:    vceqf %v0, %v28, %v30
528; CHECK-NEXT:    vceqf %v1, %v24, %v26
529; CHECK-NEXT:    vn %v0, %v1, %v0
530; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
531; CHECK-NEXT:    br %r14
532  %cmp0 = icmp eq <4 x i32> %val1, %val2
533  %cmp1 = icmp eq <4 x i32> %val3, %val4
534  %and = and <4 x i1> %cmp0, %cmp1
535  %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6
536  ret <4 x i32> %sel
537}
538
539define <4 x i64> @fun28(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i64> %val5, <4 x i64> %val6) {
540; CHECK-LABEL: fun28:
541; CHECK:       # BB#0:
542; CHECK-NEXT:    vceqf %v0, %v28, %v30
543; CHECK-NEXT:    vceqf %v1, %v24, %v26
544; CHECK-NEXT:    vn %v0, %v1, %v0
545; CHECK-NEXT:    vuphf %v1, %v0
546; CHECK-NEXT:    vmrlg %v0, %v0, %v0
547; CHECK-NEXT:    vuphf %v0, %v0
548; CHECK-NEXT:    vsel %v24, %v25, %v29, %v1
549; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
550; CHECK-NEXT:    br %r14
551  %cmp0 = icmp eq <4 x i32> %val1, %val2
552  %cmp1 = icmp eq <4 x i32> %val3, %val4
553  %and = and <4 x i1> %cmp0, %cmp1
554  %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6
555  ret <4 x i64> %sel
556}
557
558define <4 x i32> @fun29(<4 x i32> %val1, <4 x i32> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i32> %val5, <4 x i32> %val6) {
559; CHECK-LABEL: fun29:
560; CHECK:       # BB#0:
561; CHECK-NEXT:    vceqg %v0, %v30, %v27
562; CHECK-NEXT:    vceqg %v1, %v28, %v25
563; CHECK-NEXT:    vpkg %v0, %v1, %v0
564; CHECK-NEXT:    vceqf %v1, %v24, %v26
565; CHECK-NEXT:    vn %v0, %v1, %v0
566; CHECK-NEXT:    vsel %v24, %v29, %v31, %v0
567; CHECK-NEXT:    br %r14
568  %cmp0 = icmp eq <4 x i32> %val1, %val2
569  %cmp1 = icmp eq <4 x i64> %val3, %val4
570  %and = and <4 x i1> %cmp0, %cmp1
571  %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6
572  ret <4 x i32> %sel
573}
574
575define <4 x i16> @fun30(<4 x i32> %val1, <4 x i32> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i16> %val5, <4 x i16> %val6) {
576; CHECK-LABEL: fun30:
577; CHECK:       # BB#0:
578; CHECK-NEXT:    vmrlf %v0, %v30, %v30
579; CHECK-NEXT:    vmrlf %v1, %v28, %v28
580; CHECK-NEXT:    vldeb %v0, %v0
581; CHECK-NEXT:    vldeb %v1, %v1
582; CHECK-NEXT:    vfchdb %v0, %v1, %v0
583; CHECK-NEXT:    vmrhf %v1, %v30, %v30
584; CHECK-NEXT:    vmrhf %v2, %v28, %v28
585; CHECK-NEXT:    vldeb %v1, %v1
586; CHECK-NEXT:    vldeb %v2, %v2
587; CHECK-NEXT:    vfchdb %v1, %v2, %v1
588; CHECK-NEXT:    vpkg %v0, %v1, %v0
589; CHECK-NEXT:    vceqf %v1, %v24, %v26
590; CHECK-NEXT:    vn %v0, %v1, %v0
591; CHECK-NEXT:    vpkf %v0, %v0, %v0
592; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
593; CHECK-NEXT:    br %r14
594  %cmp0 = icmp eq <4 x i32> %val1, %val2
595  %cmp1 = fcmp ogt <4 x float> %val3, %val4
596  %and = and <4 x i1> %cmp0, %cmp1
597  %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6
598  ret <4 x i16> %sel
599}
600
601define <4 x i8> @fun31(<4 x i32> %val1, <4 x i32> %val2, <4 x double> %val3, <4 x double> %val4, <4 x i8> %val5, <4 x i8> %val6) {
602; CHECK-LABEL: fun31:
603; CHECK:       # BB#0:
604; CHECK-NEXT:    vfchdb %v0, %v30, %v27
605; CHECK-NEXT:    vfchdb %v1, %v28, %v25
606; CHECK-NEXT:    vpkg %v0, %v1, %v0
607; CHECK-NEXT:    vceqf %v1, %v24, %v26
608; CHECK-NEXT:    larl %r1, .LCPI31_0
609; CHECK-NEXT:    vn %v0, %v1, %v0
610; CHECK-NEXT:    vl %v1, 0(%r1)
611; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
612; CHECK-NEXT:    vsel %v24, %v29, %v31, %v0
613; CHECK-NEXT:    br %r14
614  %cmp0 = icmp eq <4 x i32> %val1, %val2
615  %cmp1 = fcmp ogt <4 x double> %val3, %val4
616  %and = and <4 x i1> %cmp0, %cmp1
617  %sel = select <4 x i1> %and, <4 x i8> %val5, <4 x i8> %val6
618  ret <4 x i8> %sel
619}
620
621define <4 x i32> @fun32(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i32> %val5, <4 x i32> %val6) {
622; CHECK-LABEL: fun32:
623; CHECK:       # BB#0:
624; CHECK-NEXT:    vceqg %v0, %v27, %v31
625; CHECK-NEXT:    vceqg %v1, %v26, %v30
626; CHECK-NEXT:    vn %v0, %v1, %v0
627; CHECK-NEXT:    vceqg %v1, %v25, %v29
628; CHECK-NEXT:    vceqg %v2, %v24, %v28
629; CHECK-NEXT:    vn %v1, %v2, %v1
630; CHECK-NEXT:    vpkg %v0, %v1, %v0
631; CHECK-NEXT:    vl %v1, 176(%r15)
632; CHECK-NEXT:    vl %v2, 160(%r15)
633; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
634; CHECK-NEXT:    br %r14
635  %cmp0 = icmp eq <4 x i64> %val1, %val2
636  %cmp1 = icmp eq <4 x i64> %val3, %val4
637  %and = and <4 x i1> %cmp0, %cmp1
638  %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6
639  ret <4 x i32> %sel
640}
641
642define <4 x i64> @fun33(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i64> %val5, <4 x i64> %val6) {
643; CHECK-LABEL: fun33:
644; CHECK:       # BB#0:
645; CHECK-NEXT:    vceqg %v0, %v25, %v29
646; CHECK-NEXT:    vceqg %v1, %v24, %v28
647; CHECK-NEXT:    vn %v0, %v1, %v0
648; CHECK-NEXT:    vl %v1, 192(%r15)
649; CHECK-NEXT:    vl %v2, 160(%r15)
650; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
651; CHECK-NEXT:    vceqg %v0, %v27, %v31
652; CHECK-NEXT:    vceqg %v1, %v26, %v30
653; CHECK-NEXT:    vn %v0, %v1, %v0
654; CHECK-NEXT:    vl %v1, 208(%r15)
655; CHECK-NEXT:    vl %v2, 176(%r15)
656; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
657; CHECK-NEXT:    br %r14
658  %cmp0 = icmp eq <4 x i64> %val1, %val2
659  %cmp1 = icmp eq <4 x i64> %val3, %val4
660  %and = and <4 x i1> %cmp0, %cmp1
661  %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6
662  ret <4 x i64> %sel
663}
664
665define <4 x i64> @fun34(<4 x i64> %val1, <4 x i64> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i64> %val5, <4 x i64> %val6) {
666; CHECK-LABEL: fun34:
667; CHECK:       # BB#0:
668; CHECK-NEXT:    vmrlf %v0, %v27, %v27
669; CHECK-NEXT:    vmrlf %v1, %v25, %v25
670; CHECK-NEXT:    vldeb %v0, %v0
671; CHECK-NEXT:    vldeb %v1, %v1
672; CHECK-NEXT:    vfchdb %v0, %v1, %v0
673; CHECK-NEXT:    vmrhf %v1, %v27, %v27
674; CHECK-NEXT:    vmrhf %v2, %v25, %v25
675; CHECK-NEXT:    vldeb %v1, %v1
676; CHECK-NEXT:    vldeb %v2, %v2
677; CHECK-NEXT:    vfchdb %v1, %v2, %v1
678; CHECK-NEXT:    vpkg %v0, %v1, %v0
679; CHECK-NEXT:    vuphf %v1, %v0
680; CHECK-NEXT:    vceqg %v2, %v24, %v28
681; CHECK-NEXT:    vn %v1, %v2, %v1
682; CHECK-NEXT:    vl %v2, 160(%r15)
683; CHECK-NEXT:    vmrlg %v0, %v0, %v0
684; CHECK-NEXT:    vsel %v24, %v29, %v2, %v1
685; CHECK-NEXT:    vuphf %v0, %v0
686; CHECK-NEXT:    vceqg %v1, %v26, %v30
687; CHECK-NEXT:    vn %v0, %v1, %v0
688; CHECK-NEXT:    vl %v1, 176(%r15)
689; CHECK-NEXT:    vsel %v26, %v31, %v1, %v0
690; CHECK-NEXT:    br %r14
691  %cmp0 = icmp eq <4 x i64> %val1, %val2
692  %cmp1 = fcmp ogt <4 x float> %val3, %val4
693  %and = and <4 x i1> %cmp0, %cmp1
694  %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6
695  ret <4 x i64> %sel
696}
697
698define <4 x float> @fun35(<4 x i64> %val1, <4 x i64> %val2, <4 x double> %val3, <4 x double> %val4, <4 x float> %val5, <4 x float> %val6) {
699; CHECK-LABEL: fun35:
700; CHECK:       # BB#0:
701; CHECK-NEXT:    vfchdb %v0, %v27, %v31
702; CHECK-NEXT:    vceqg %v1, %v26, %v30
703; CHECK-NEXT:    vn %v0, %v1, %v0
704; CHECK-NEXT:    vfchdb %v1, %v25, %v29
705; CHECK-NEXT:    vceqg %v2, %v24, %v28
706; CHECK-NEXT:    vn %v1, %v2, %v1
707; CHECK-NEXT:    vpkg %v0, %v1, %v0
708; CHECK-NEXT:    vl %v1, 176(%r15)
709; CHECK-NEXT:    vl %v2, 160(%r15)
710; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
711; CHECK-NEXT:    br %r14
712  %cmp0 = icmp eq <4 x i64> %val1, %val2
713  %cmp1 = fcmp ogt <4 x double> %val3, %val4
714  %and = and <4 x i1> %cmp0, %cmp1
715  %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6
716  ret <4 x float> %sel
717}
718
719define <4 x i16> @fun36(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i16> %val5, <4 x i16> %val6) {
720; CHECK-LABEL: fun36:
721; CHECK:       # BB#0:
722; CHECK-NEXT:    vmrlf %v0, %v30, %v30
723; CHECK-NEXT:    vmrlf %v1, %v28, %v28
724; CHECK-NEXT:    vldeb %v0, %v0
725; CHECK-NEXT:    vldeb %v1, %v1
726; CHECK-NEXT:    vfchdb %v0, %v1, %v0
727; CHECK-NEXT:    vmrhf %v1, %v30, %v30
728; CHECK-NEXT:    vmrhf %v2, %v28, %v28
729; CHECK-NEXT:    vldeb %v1, %v1
730; CHECK-NEXT:    vmrhf %v3, %v24, %v24
731; CHECK-NEXT:    vldeb %v2, %v2
732; CHECK-NEXT:    vfchdb %v1, %v2, %v1
733; CHECK-NEXT:    vpkg %v0, %v1, %v0
734; CHECK-NEXT:    vmrlf %v1, %v26, %v26
735; CHECK-NEXT:    vmrlf %v2, %v24, %v24
736; CHECK-NEXT:    vldeb %v1, %v1
737; CHECK-NEXT:    vldeb %v2, %v2
738; CHECK-NEXT:    vfchdb %v1, %v2, %v1
739; CHECK-NEXT:    vmrhf %v2, %v26, %v26
740; CHECK-NEXT:    vldeb %v2, %v2
741; CHECK-NEXT:    vldeb %v3, %v3
742; CHECK-NEXT:    vfchdb %v2, %v3, %v2
743; CHECK-NEXT:    vpkg %v1, %v2, %v1
744; CHECK-NEXT:    vn %v0, %v1, %v0
745; CHECK-NEXT:    vpkf %v0, %v0, %v0
746; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
747; CHECK-NEXT:    br %r14
748  %cmp0 = fcmp ogt <4 x float> %val1, %val2
749  %cmp1 = fcmp ogt <4 x float> %val3, %val4
750  %and = and <4 x i1> %cmp0, %cmp1
751  %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6
752  ret <4 x i16> %sel
753}
754
755define <4 x float> @fun37(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x float> %val5, <4 x float> %val6) {
756; CHECK-LABEL: fun37:
757; CHECK:       # BB#0:
758; CHECK-NEXT:    vmrlf %v0, %v30, %v30
759; CHECK-NEXT:    vmrlf %v1, %v28, %v28
760; CHECK-NEXT:    vldeb %v0, %v0
761; CHECK-NEXT:    vldeb %v1, %v1
762; CHECK-NEXT:    vfchdb %v0, %v1, %v0
763; CHECK-NEXT:    vmrhf %v1, %v30, %v30
764; CHECK-NEXT:    vmrhf %v2, %v28, %v28
765; CHECK-NEXT:    vldeb %v1, %v1
766; CHECK-NEXT:    vmrhf %v3, %v24, %v24
767; CHECK-NEXT:    vldeb %v2, %v2
768; CHECK-NEXT:    vfchdb %v1, %v2, %v1
769; CHECK-NEXT:    vpkg %v0, %v1, %v0
770; CHECK-NEXT:    vmrlf %v1, %v26, %v26
771; CHECK-NEXT:    vmrlf %v2, %v24, %v24
772; CHECK-NEXT:    vldeb %v1, %v1
773; CHECK-NEXT:    vldeb %v2, %v2
774; CHECK-NEXT:    vfchdb %v1, %v2, %v1
775; CHECK-NEXT:    vmrhf %v2, %v26, %v26
776; CHECK-NEXT:    vldeb %v2, %v2
777; CHECK-NEXT:    vldeb %v3, %v3
778; CHECK-NEXT:    vfchdb %v2, %v3, %v2
779; CHECK-NEXT:    vpkg %v1, %v2, %v1
780; CHECK-NEXT:    vn %v0, %v1, %v0
781; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
782; CHECK-NEXT:    br %r14
783  %cmp0 = fcmp ogt <4 x float> %val1, %val2
784  %cmp1 = fcmp ogt <4 x float> %val3, %val4
785  %and = and <4 x i1> %cmp0, %cmp1
786  %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6
787  ret <4 x float> %sel
788}
789
790define <4 x double> @fun38(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x double> %val5, <4 x double> %val6) {
791; CHECK-LABEL: fun38:
792; CHECK:       # BB#0:
793; CHECK-NEXT:    vmrlf %v0, %v30, %v30
794; CHECK-NEXT:    vmrlf %v1, %v28, %v28
795; CHECK-NEXT:    vldeb %v0, %v0
796; CHECK-NEXT:    vldeb %v1, %v1
797; CHECK-NEXT:    vfchdb %v0, %v1, %v0
798; CHECK-NEXT:    vmrhf %v1, %v30, %v30
799; CHECK-NEXT:    vmrhf %v2, %v28, %v28
800; CHECK-NEXT:    vldeb %v1, %v1
801; CHECK-NEXT:    vmrhf %v3, %v24, %v24
802; CHECK-NEXT:    vldeb %v2, %v2
803; CHECK-NEXT:    vfchdb %v1, %v2, %v1
804; CHECK-NEXT:    vpkg %v0, %v1, %v0
805; CHECK-NEXT:    vmrlf %v1, %v26, %v26
806; CHECK-NEXT:    vmrlf %v2, %v24, %v24
807; CHECK-NEXT:    vldeb %v1, %v1
808; CHECK-NEXT:    vldeb %v2, %v2
809; CHECK-NEXT:    vfchdb %v1, %v2, %v1
810; CHECK-NEXT:    vmrhf %v2, %v26, %v26
811; CHECK-NEXT:    vldeb %v2, %v2
812; CHECK-NEXT:    vldeb %v3, %v3
813; CHECK-NEXT:    vfchdb %v2, %v3, %v2
814; CHECK-NEXT:    vpkg %v1, %v2, %v1
815; CHECK-NEXT:    vn %v0, %v1, %v0
816; CHECK-NEXT:    vuphf %v1, %v0
817; CHECK-NEXT:    vmrlg %v0, %v0, %v0
818; CHECK-NEXT:    vuphf %v0, %v0
819; CHECK-NEXT:    vsel %v24, %v25, %v29, %v1
820; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
821; CHECK-NEXT:    br %r14
822  %cmp0 = fcmp ogt <4 x float> %val1, %val2
823  %cmp1 = fcmp ogt <4 x float> %val3, %val4
824  %and = and <4 x i1> %cmp0, %cmp1
825  %sel = select <4 x i1> %and, <4 x double> %val5, <4 x double> %val6
826  ret <4 x double> %sel
827}
828
829define <4 x i8> @fun39(<4 x float> %val1, <4 x float> %val2, <4 x double> %val3, <4 x double> %val4, <4 x i8> %val5, <4 x i8> %val6) {
830; CHECK-LABEL: fun39:
831; CHECK:       # BB#0:
832; CHECK-NEXT:    vfchdb %v0, %v30, %v27
833; CHECK-NEXT:    vfchdb %v1, %v28, %v25
834; CHECK-NEXT:    vpkg %v0, %v1, %v0
835; CHECK-NEXT:    vmrlf %v1, %v26, %v26
836; CHECK-NEXT:    vmrlf %v2, %v24, %v24
837; CHECK-NEXT:    vldeb %v1, %v1
838; CHECK-NEXT:    vldeb %v2, %v2
839; CHECK-NEXT:    vfchdb %v1, %v2, %v1
840; CHECK-NEXT:    vmrhf %v2, %v26, %v26
841; CHECK-NEXT:    vmrhf %v3, %v24, %v24
842; CHECK-NEXT:    larl %r1, .LCPI39_0
843; CHECK-NEXT:    vldeb %v2, %v2
844; CHECK-NEXT:    vldeb %v3, %v3
845; CHECK-NEXT:    vfchdb %v2, %v3, %v2
846; CHECK-NEXT:    vpkg %v1, %v2, %v1
847; CHECK-NEXT:    vn %v0, %v1, %v0
848; CHECK-NEXT:    vl %v1, 0(%r1)
849; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
850; CHECK-NEXT:    vsel %v24, %v29, %v31, %v0
851; CHECK-NEXT:    br %r14
852  %cmp0 = fcmp ogt <4 x float> %val1, %val2
853  %cmp1 = fcmp ogt <4 x double> %val3, %val4
854  %and = and <4 x i1> %cmp0, %cmp1
855  %sel = select <4 x i1> %and, <4 x i8> %val5, <4 x i8> %val6
856  ret <4 x i8> %sel
857}
858
859define <8 x i8> @fun40(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i8> %val5, <8 x i8> %val6) {
860; CHECK-LABEL: fun40:
861; CHECK:       # BB#0:
862; CHECK-NEXT:    vceqh %v0, %v28, %v30
863; CHECK-NEXT:    vceqh %v1, %v24, %v26
864; CHECK-NEXT:    vn %v0, %v1, %v0
865; CHECK-NEXT:    vpkh %v0, %v0, %v0
866; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
867; CHECK-NEXT:    br %r14
868  %cmp0 = icmp eq <8 x i16> %val1, %val2
869  %cmp1 = icmp eq <8 x i16> %val3, %val4
870  %and = and <8 x i1> %cmp0, %cmp1
871  %sel = select <8 x i1> %and, <8 x i8> %val5, <8 x i8> %val6
872  ret <8 x i8> %sel
873}
874
875define <8 x i16> @fun41(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i16> %val5, <8 x i16> %val6) {
876; CHECK-LABEL: fun41:
877; CHECK:       # BB#0:
878; CHECK-NEXT:    vceqh %v0, %v28, %v30
879; CHECK-NEXT:    vceqh %v1, %v24, %v26
880; CHECK-NEXT:    vn %v0, %v1, %v0
881; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
882; CHECK-NEXT:    br %r14
883  %cmp0 = icmp eq <8 x i16> %val1, %val2
884  %cmp1 = icmp eq <8 x i16> %val3, %val4
885  %and = and <8 x i1> %cmp0, %cmp1
886  %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6
887  ret <8 x i16> %sel
888}
889
890define <8 x i32> @fun42(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i32> %val5, <8 x i32> %val6) {
891; CHECK-LABEL: fun42:
892; CHECK:       # BB#0:
893; CHECK-NEXT:    vceqh %v0, %v28, %v30
894; CHECK-NEXT:    vceqh %v1, %v24, %v26
895; CHECK-NEXT:    vn %v0, %v1, %v0
896; CHECK-NEXT:    vuphh %v1, %v0
897; CHECK-NEXT:    vmrlg %v0, %v0, %v0
898; CHECK-NEXT:    vuphh %v0, %v0
899; CHECK-NEXT:    vsel %v24, %v25, %v29, %v1
900; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
901; CHECK-NEXT:    br %r14
902  %cmp0 = icmp eq <8 x i16> %val1, %val2
903  %cmp1 = icmp eq <8 x i16> %val3, %val4
904  %and = and <8 x i1> %cmp0, %cmp1
905  %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6
906  ret <8 x i32> %sel
907}
908
909define <8 x i64> @fun43(<8 x i16> %val1, <8 x i16> %val2, <8 x i32> %val3, <8 x i32> %val4, <8 x i64> %val5, <8 x i64> %val6) {
910; CHECK-LABEL: fun43:
911; CHECK:       # BB#0:
912; CHECK-NEXT:    vceqh %v1, %v24, %v26
913; CHECK-NEXT:    vceqf %v0, %v28, %v25
914; CHECK-NEXT:    vuphh %v2, %v1
915; CHECK-NEXT:    vn %v0, %v2, %v0
916; CHECK-NEXT:    vl %v3, 192(%r15)
917; CHECK-NEXT:    vuphf %v2, %v0
918; CHECK-NEXT:    vmrlg %v0, %v0, %v0
919; CHECK-NEXT:    vsel %v24, %v29, %v3, %v2
920; CHECK-NEXT:    vl %v2, 208(%r15)
921; CHECK-NEXT:    vuphf %v0, %v0
922; CHECK-NEXT:    vmrlg %v1, %v1, %v1
923; CHECK-NEXT:    vsel %v26, %v31, %v2, %v0
924; CHECK-NEXT:    vceqf %v0, %v30, %v27
925; CHECK-NEXT:    vuphh %v1, %v1
926; CHECK-NEXT:    vn %v0, %v1, %v0
927; CHECK-NEXT:    vl %v2, 224(%r15)
928; CHECK-NEXT:    vl %v3, 160(%r15)
929; CHECK-NEXT:    vuphf %v1, %v0
930; CHECK-NEXT:    vmrlg %v0, %v0, %v0
931; CHECK-NEXT:    vsel %v28, %v3, %v2, %v1
932; CHECK-NEXT:    vl %v1, 240(%r15)
933; CHECK-NEXT:    vl %v2, 176(%r15)
934; CHECK-NEXT:    vuphf %v0, %v0
935; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
936; CHECK-NEXT:    br %r14
937  %cmp0 = icmp eq <8 x i16> %val1, %val2
938  %cmp1 = icmp eq <8 x i32> %val3, %val4
939  %and = and <8 x i1> %cmp0, %cmp1
940  %sel = select <8 x i1> %and, <8 x i64> %val5, <8 x i64> %val6
941  ret <8 x i64> %sel
942}
943
944define <8 x i8> @fun44(<8 x i16> %val1, <8 x i16> %val2, <8 x i64> %val3, <8 x i64> %val4, <8 x i8> %val5, <8 x i8> %val6) {
945; CHECK-LABEL: fun44:
946; CHECK:       # BB#0:
947; CHECK-NEXT:    vl %v0, 176(%r15)
948; CHECK-NEXT:    vl %v1, 160(%r15)
949; CHECK-NEXT:    vceqg %v0, %v27, %v0
950; CHECK-NEXT:    vceqg %v1, %v25, %v1
951; CHECK-NEXT:    vpkg %v0, %v1, %v0
952; CHECK-NEXT:    vceqg %v1, %v30, %v31
953; CHECK-NEXT:    vceqg %v2, %v28, %v29
954; CHECK-NEXT:    vpkg %v1, %v2, %v1
955; CHECK-NEXT:    vpkf %v0, %v1, %v0
956; CHECK-NEXT:    vceqh %v1, %v24, %v26
957; CHECK-NEXT:    vn %v0, %v1, %v0
958; CHECK-NEXT:    vlrepg %v1, 200(%r15)
959; CHECK-NEXT:    vlrepg %v2, 192(%r15)
960; CHECK-NEXT:    vpkh %v0, %v0, %v0
961; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
962; CHECK-NEXT:    br %r14
963  %cmp0 = icmp eq <8 x i16> %val1, %val2
964  %cmp1 = icmp eq <8 x i64> %val3, %val4
965  %and = and <8 x i1> %cmp0, %cmp1
966  %sel = select <8 x i1> %and, <8 x i8> %val5, <8 x i8> %val6
967  ret <8 x i8> %sel
968}
969
970define <8 x i16> @fun45(<8 x i16> %val1, <8 x i16> %val2, <8 x float> %val3, <8 x float> %val4, <8 x i16> %val5, <8 x i16> %val6) {
971; CHECK-LABEL: fun45:
972; CHECK:       # BB#0:
973; CHECK-NEXT:    vmrlf %v0, %v27, %v27
974; CHECK-NEXT:    vmrlf %v1, %v30, %v30
975; CHECK-NEXT:    vldeb %v0, %v0
976; CHECK-NEXT:    vldeb %v1, %v1
977; CHECK-NEXT:    vfchdb %v0, %v1, %v0
978; CHECK-NEXT:    vmrhf %v1, %v27, %v27
979; CHECK-NEXT:    vmrhf %v2, %v30, %v30
980; CHECK-NEXT:    vldeb %v1, %v1
981; CHECK-NEXT:    vmrhf %v3, %v28, %v28
982; CHECK-NEXT:    vldeb %v2, %v2
983; CHECK-NEXT:    vfchdb %v1, %v2, %v1
984; CHECK-NEXT:    vpkg %v0, %v1, %v0
985; CHECK-NEXT:    vmrlf %v1, %v25, %v25
986; CHECK-NEXT:    vmrlf %v2, %v28, %v28
987; CHECK-NEXT:    vldeb %v1, %v1
988; CHECK-NEXT:    vldeb %v2, %v2
989; CHECK-NEXT:    vfchdb %v1, %v2, %v1
990; CHECK-NEXT:    vmrhf %v2, %v25, %v25
991; CHECK-NEXT:    vldeb %v2, %v2
992; CHECK-NEXT:    vldeb %v3, %v3
993; CHECK-NEXT:    vfchdb %v2, %v3, %v2
994; CHECK-NEXT:    vpkg %v1, %v2, %v1
995; CHECK-NEXT:    vpkf %v0, %v1, %v0
996; CHECK-NEXT:    vceqh %v1, %v24, %v26
997; CHECK-NEXT:    vn %v0, %v1, %v0
998; CHECK-NEXT:    vsel %v24, %v29, %v31, %v0
999; CHECK-NEXT:    br %r14
1000  %cmp0 = icmp eq <8 x i16> %val1, %val2
1001  %cmp1 = fcmp ogt <8 x float> %val3, %val4
1002  %and = and <8 x i1> %cmp0, %cmp1
1003  %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6
1004  ret <8 x i16> %sel
1005}
1006
1007define <8 x i32> @fun46(<8 x i16> %val1, <8 x i16> %val2, <8 x double> %val3, <8 x double> %val4, <8 x i32> %val5, <8 x i32> %val6) {
1008; CHECK-LABEL: fun46:
1009; CHECK:       # BB#0:
1010; CHECK-NEXT:    vfchdb %v0, %v30, %v31
1011; CHECK-NEXT:    vfchdb %v1, %v28, %v29
1012; CHECK-NEXT:    vpkg %v0, %v1, %v0
1013; CHECK-NEXT:    vceqh %v1, %v24, %v26
1014; CHECK-NEXT:    vuphh %v2, %v1
1015; CHECK-NEXT:    vn %v0, %v2, %v0
1016; CHECK-NEXT:    vl %v2, 224(%r15)
1017; CHECK-NEXT:    vl %v3, 192(%r15)
1018; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
1019; CHECK-NEXT:    vl %v0, 176(%r15)
1020; CHECK-NEXT:    vl %v2, 160(%r15)
1021; CHECK-NEXT:    vfchdb %v0, %v27, %v0
1022; CHECK-NEXT:    vfchdb %v2, %v25, %v2
1023; CHECK-NEXT:    vmrlg %v1, %v1, %v1
1024; CHECK-NEXT:    vpkg %v0, %v2, %v0
1025; CHECK-NEXT:    vuphh %v1, %v1
1026; CHECK-NEXT:    vn %v0, %v1, %v0
1027; CHECK-NEXT:    vl %v1, 240(%r15)
1028; CHECK-NEXT:    vl %v2, 208(%r15)
1029; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1030; CHECK-NEXT:    br %r14
1031  %cmp0 = icmp eq <8 x i16> %val1, %val2
1032  %cmp1 = fcmp ogt <8 x double> %val3, %val4
1033  %and = and <8 x i1> %cmp0, %cmp1
1034  %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6
1035  ret <8 x i32> %sel
1036}
1037
1038define <8 x i32> @fun47(<8 x i32> %val1, <8 x i32> %val2, <8 x i64> %val3, <8 x i64> %val4, <8 x i32> %val5, <8 x i32> %val6) {
1039; CHECK-LABEL: fun47:
1040; CHECK:       # BB#0:
1041; CHECK-NEXT:    vl %v0, 176(%r15)
1042; CHECK-NEXT:    vl %v1, 160(%r15)
1043; CHECK-NEXT:    vceqg %v0, %v27, %v0
1044; CHECK-NEXT:    vceqg %v1, %v25, %v1
1045; CHECK-NEXT:    vpkg %v0, %v1, %v0
1046; CHECK-NEXT:    vceqf %v1, %v24, %v28
1047; CHECK-NEXT:    vn %v0, %v1, %v0
1048; CHECK-NEXT:    vl %v1, 256(%r15)
1049; CHECK-NEXT:    vl %v2, 224(%r15)
1050; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1051; CHECK-NEXT:    vl %v0, 208(%r15)
1052; CHECK-NEXT:    vl %v1, 192(%r15)
1053; CHECK-NEXT:    vceqg %v0, %v31, %v0
1054; CHECK-NEXT:    vceqg %v1, %v29, %v1
1055; CHECK-NEXT:    vpkg %v0, %v1, %v0
1056; CHECK-NEXT:    vceqf %v1, %v26, %v30
1057; CHECK-NEXT:    vn %v0, %v1, %v0
1058; CHECK-NEXT:    vl %v1, 272(%r15)
1059; CHECK-NEXT:    vl %v2, 240(%r15)
1060; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1061; CHECK-NEXT:    br %r14
1062  %cmp0 = icmp eq <8 x i32> %val1, %val2
1063  %cmp1 = icmp eq <8 x i64> %val3, %val4
1064  %and = and <8 x i1> %cmp0, %cmp1
1065  %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6
1066  ret <8 x i32> %sel
1067}
1068
1069define <8 x double> @fun48(<8 x i32> %val1, <8 x i32> %val2, <8 x float> %val3, <8 x float> %val4, <8 x double> %val5, <8 x double> %val6) {
1070; CHECK-LABEL: fun48:
1071; CHECK:       # BB#0:
1072; CHECK-NEXT:    vmrlf %v0, %v29, %v29
1073; CHECK-NEXT:    vmrlf %v1, %v25, %v25
1074; CHECK-NEXT:    vldeb %v0, %v0
1075; CHECK-NEXT:    vldeb %v1, %v1
1076; CHECK-NEXT:    vfchdb %v0, %v1, %v0
1077; CHECK-NEXT:    vmrhf %v1, %v29, %v29
1078; CHECK-NEXT:    vmrhf %v2, %v25, %v25
1079; CHECK-NEXT:    vldeb %v1, %v1
1080; CHECK-NEXT:    vl %v3, 160(%r15)
1081; CHECK-NEXT:    vldeb %v2, %v2
1082; CHECK-NEXT:    vl %v4, 192(%r15)
1083; CHECK-NEXT:    vfchdb %v1, %v2, %v1
1084; CHECK-NEXT:    vl %v2, 224(%r15)
1085; CHECK-NEXT:    vpkg %v0, %v1, %v0
1086; CHECK-NEXT:    vceqf %v1, %v24, %v28
1087; CHECK-NEXT:    vn %v0, %v1, %v0
1088; CHECK-NEXT:    vuphf %v1, %v0
1089; CHECK-NEXT:    vsel %v24, %v3, %v2, %v1
1090; CHECK-NEXT:    vmrlf %v1, %v31, %v31
1091; CHECK-NEXT:    vmrlf %v2, %v27, %v27
1092; CHECK-NEXT:    vmrhf %v3, %v27, %v27
1093; CHECK-NEXT:    vmrlg %v0, %v0, %v0
1094; CHECK-NEXT:    vuphf %v0, %v0
1095; CHECK-NEXT:    vldeb %v1, %v1
1096; CHECK-NEXT:    vldeb %v2, %v2
1097; CHECK-NEXT:    vfchdb %v1, %v2, %v1
1098; CHECK-NEXT:    vmrhf %v2, %v31, %v31
1099; CHECK-NEXT:    vldeb %v2, %v2
1100; CHECK-NEXT:    vldeb %v3, %v3
1101; CHECK-NEXT:    vfchdb %v2, %v3, %v2
1102; CHECK-NEXT:    vl %v3, 256(%r15)
1103; CHECK-NEXT:    vpkg %v1, %v2, %v1
1104; CHECK-NEXT:    vceqf %v2, %v26, %v30
1105; CHECK-NEXT:    vn %v1, %v2, %v1
1106; CHECK-NEXT:    vuphf %v2, %v1
1107; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
1108; CHECK-NEXT:    vl %v2, 240(%r15)
1109; CHECK-NEXT:    vl %v3, 176(%r15)
1110; CHECK-NEXT:    vsel %v26, %v3, %v2, %v0
1111; CHECK-NEXT:    vl %v2, 208(%r15)
1112; CHECK-NEXT:    vmrlg %v0, %v1, %v1
1113; CHECK-NEXT:    vl %v1, 272(%r15)
1114; CHECK-NEXT:    vuphf %v0, %v0
1115; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
1116; CHECK-NEXT:    br %r14
1117  %cmp0 = icmp eq <8 x i32> %val1, %val2
1118  %cmp1 = fcmp ogt <8 x float> %val3, %val4
1119  %and = and <8 x i1> %cmp0, %cmp1
1120  %sel = select <8 x i1> %and, <8 x double> %val5, <8 x double> %val6
1121  ret <8 x double> %sel
1122}
1123
1124define <8 x double> @fun49(<8 x i32> %val1, <8 x i32> %val2, <8 x double> %val3, <8 x double> %val4, <8 x double> %val5, <8 x double> %val6) {
1125; CHECK-LABEL: fun49:
1126; CHECK:       # BB#0:
1127; CHECK-NEXT:    vl %v0, 160(%r15)
1128; CHECK-NEXT:    vceqf %v1, %v24, %v28
1129; CHECK-NEXT:    vfchdb %v0, %v25, %v0
1130; CHECK-NEXT:    vuphf %v2, %v1
1131; CHECK-NEXT:    vn %v0, %v2, %v0
1132; CHECK-NEXT:    vl %v2, 288(%r15)
1133; CHECK-NEXT:    vl %v3, 224(%r15)
1134; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
1135; CHECK-NEXT:    vl %v0, 192(%r15)
1136; CHECK-NEXT:    vceqf %v2, %v26, %v30
1137; CHECK-NEXT:    vfchdb %v0, %v29, %v0
1138; CHECK-NEXT:    vuphf %v3, %v2
1139; CHECK-NEXT:    vn %v0, %v3, %v0
1140; CHECK-NEXT:    vl %v3, 320(%r15)
1141; CHECK-NEXT:    vl %v4, 256(%r15)
1142; CHECK-NEXT:    vsel %v28, %v4, %v3, %v0
1143; CHECK-NEXT:    vl %v0, 176(%r15)
1144; CHECK-NEXT:    vmrlg %v1, %v1, %v1
1145; CHECK-NEXT:    vfchdb %v0, %v27, %v0
1146; CHECK-NEXT:    vuphf %v1, %v1
1147; CHECK-NEXT:    vn %v0, %v1, %v0
1148; CHECK-NEXT:    vl %v1, 304(%r15)
1149; CHECK-NEXT:    vl %v3, 240(%r15)
1150; CHECK-NEXT:    vsel %v26, %v3, %v1, %v0
1151; CHECK-NEXT:    vl %v0, 208(%r15)
1152; CHECK-NEXT:    vmrlg %v1, %v2, %v2
1153; CHECK-NEXT:    vfchdb %v0, %v31, %v0
1154; CHECK-NEXT:    vuphf %v1, %v1
1155; CHECK-NEXT:    vl %v2, 272(%r15)
1156; CHECK-NEXT:    vn %v0, %v1, %v0
1157; CHECK-NEXT:    vl %v1, 336(%r15)
1158; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
1159; CHECK-NEXT:    br %r14
1160  %cmp0 = icmp eq <8 x i32> %val1, %val2
1161  %cmp1 = fcmp ogt <8 x double> %val3, %val4
1162  %and = and <8 x i1> %cmp0, %cmp1
1163  %sel = select <8 x i1> %and, <8 x double> %val5, <8 x double> %val6
1164  ret <8 x double> %sel
1165}
1166
1167define <8 x i64> @fun50(<8 x float> %val1, <8 x float> %val2, <8 x double> %val3, <8 x double> %val4, <8 x i64> %val5, <8 x i64> %val6) {
1168; CHECK-LABEL: fun50:
1169; CHECK:       # BB#0:
1170; CHECK-NEXT:    vmrlf %v0, %v28, %v28
1171; CHECK-NEXT:    vmrlf %v1, %v24, %v24
1172; CHECK-NEXT:    vldeb %v0, %v0
1173; CHECK-NEXT:    vldeb %v1, %v1
1174; CHECK-NEXT:    vfchdb %v0, %v1, %v0
1175; CHECK-NEXT:    vmrhf %v1, %v28, %v28
1176; CHECK-NEXT:    vmrhf %v2, %v24, %v24
1177; CHECK-NEXT:    vldeb %v1, %v1
1178; CHECK-NEXT:    vl %v3, 224(%r15)
1179; CHECK-NEXT:    vldeb %v2, %v2
1180; CHECK-NEXT:    vl %v4, 256(%r15)
1181; CHECK-NEXT:    vfchdb %v1, %v2, %v1
1182; CHECK-NEXT:    vl %v2, 160(%r15)
1183; CHECK-NEXT:    vpkg %v0, %v1, %v0
1184; CHECK-NEXT:    vuphf %v1, %v0
1185; CHECK-NEXT:    vfchdb %v2, %v25, %v2
1186; CHECK-NEXT:    vn %v1, %v1, %v2
1187; CHECK-NEXT:    vl %v2, 288(%r15)
1188; CHECK-NEXT:    vsel %v24, %v3, %v2, %v1
1189; CHECK-NEXT:    vmrlf %v1, %v30, %v30
1190; CHECK-NEXT:    vmrlf %v2, %v26, %v26
1191; CHECK-NEXT:    vmrhf %v3, %v26, %v26
1192; CHECK-NEXT:    vmrlg %v0, %v0, %v0
1193; CHECK-NEXT:    vuphf %v0, %v0
1194; CHECK-NEXT:    vldeb %v1, %v1
1195; CHECK-NEXT:    vldeb %v2, %v2
1196; CHECK-NEXT:    vfchdb %v1, %v2, %v1
1197; CHECK-NEXT:    vmrhf %v2, %v30, %v30
1198; CHECK-NEXT:    vldeb %v2, %v2
1199; CHECK-NEXT:    vldeb %v3, %v3
1200; CHECK-NEXT:    vfchdb %v2, %v3, %v2
1201; CHECK-NEXT:    vl %v3, 192(%r15)
1202; CHECK-NEXT:    vpkg %v1, %v2, %v1
1203; CHECK-NEXT:    vuphf %v2, %v1
1204; CHECK-NEXT:    vfchdb %v3, %v29, %v3
1205; CHECK-NEXT:    vn %v2, %v2, %v3
1206; CHECK-NEXT:    vl %v3, 320(%r15)
1207; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
1208; CHECK-NEXT:    vl %v2, 176(%r15)
1209; CHECK-NEXT:    vl %v3, 240(%r15)
1210; CHECK-NEXT:    vfchdb %v2, %v27, %v2
1211; CHECK-NEXT:    vn %v0, %v0, %v2
1212; CHECK-NEXT:    vl %v2, 304(%r15)
1213; CHECK-NEXT:    vsel %v26, %v3, %v2, %v0
1214; CHECK-NEXT:    vl %v2, 272(%r15)
1215; CHECK-NEXT:    vmrlg %v0, %v1, %v1
1216; CHECK-NEXT:    vl %v1, 208(%r15)
1217; CHECK-NEXT:    vuphf %v0, %v0
1218; CHECK-NEXT:    vfchdb %v1, %v31, %v1
1219; CHECK-NEXT:    vn %v0, %v0, %v1
1220; CHECK-NEXT:    vl %v1, 336(%r15)
1221; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
1222; CHECK-NEXT:    br %r14
1223  %cmp0 = fcmp ogt <8 x float> %val1, %val2
1224  %cmp1 = fcmp ogt <8 x double> %val3, %val4
1225  %and = and <8 x i1> %cmp0, %cmp1
1226  %sel = select <8 x i1> %and, <8 x i64> %val5, <8 x i64> %val6
1227  ret <8 x i64> %sel
1228}
1229
1230define <16 x i8> @fun51(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4, <16 x i8> %val5, <16 x i8> %val6) {
1231; CHECK-LABEL: fun51:
1232; CHECK:       # BB#0:
1233; CHECK-NEXT:    vceqb %v0, %v28, %v30
1234; CHECK-NEXT:    vceqb %v1, %v24, %v26
1235; CHECK-NEXT:    vn %v0, %v1, %v0
1236; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
1237; CHECK-NEXT:    br %r14
1238  %cmp0 = icmp eq <16 x i8> %val1, %val2
1239  %cmp1 = icmp eq <16 x i8> %val3, %val4
1240  %and = and <16 x i1> %cmp0, %cmp1
1241  %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6
1242  ret <16 x i8> %sel
1243}
1244
1245define <16 x i16> @fun52(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4, <16 x i16> %val5, <16 x i16> %val6) {
1246; CHECK-LABEL: fun52:
1247; CHECK:       # BB#0:
1248; CHECK-NEXT:    vceqb %v0, %v28, %v30
1249; CHECK-NEXT:    vceqb %v1, %v24, %v26
1250; CHECK-NEXT:    vn %v0, %v1, %v0
1251; CHECK-NEXT:    vuphb %v1, %v0
1252; CHECK-NEXT:    vmrlg %v0, %v0, %v0
1253; CHECK-NEXT:    vuphb %v0, %v0
1254; CHECK-NEXT:    vsel %v24, %v25, %v29, %v1
1255; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
1256; CHECK-NEXT:    br %r14
1257  %cmp0 = icmp eq <16 x i8> %val1, %val2
1258  %cmp1 = icmp eq <16 x i8> %val3, %val4
1259  %and = and <16 x i1> %cmp0, %cmp1
1260  %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6
1261  ret <16 x i16> %sel
1262}
1263
1264define <16 x i64> @fun53(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i64> %val5, <16 x i64> %val6) {
1265; CHECK-LABEL: fun53:
1266; CHECK:       # BB#0:
1267; CHECK-NEXT:    vceqb %v1, %v24, %v26
1268; CHECK-NEXT:    vceqh %v0, %v28, %v25
1269; CHECK-NEXT:    vuphb %v2, %v1
1270; CHECK-NEXT:    vn %v0, %v2, %v0
1271; CHECK-NEXT:    vuphh %v2, %v0
1272; CHECK-NEXT:    vl %v3, 256(%r15)
1273; CHECK-NEXT:    vuphf %v2, %v2
1274; CHECK-NEXT:    vsel %v24, %v29, %v3, %v2
1275; CHECK-NEXT:    vpkg %v2, %v0, %v0
1276; CHECK-NEXT:    vuphh %v2, %v2
1277; CHECK-NEXT:    vl %v3, 272(%r15)
1278; CHECK-NEXT:    vuphf %v2, %v2
1279; CHECK-NEXT:    vsel %v26, %v31, %v3, %v2
1280; CHECK-NEXT:    vmrlg %v2, %v0, %v0
1281; CHECK-NEXT:    vuphh %v2, %v2
1282; CHECK-NEXT:    vsldb %v0, %v0, %v0, 12
1283; CHECK-NEXT:    vl %v3, 288(%r15)
1284; CHECK-NEXT:    vl %v4, 160(%r15)
1285; CHECK-NEXT:    vuphf %v2, %v2
1286; CHECK-NEXT:    vuphh %v0, %v0
1287; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
1288; CHECK-NEXT:    vl %v2, 304(%r15)
1289; CHECK-NEXT:    vl %v3, 176(%r15)
1290; CHECK-NEXT:    vl %v4, 192(%r15)
1291; CHECK-NEXT:    vuphf %v0, %v0
1292; CHECK-NEXT:    vmrlg %v1, %v1, %v1
1293; CHECK-NEXT:    vsel %v0, %v3, %v2, %v0
1294; CHECK-NEXT:    vl %v3, 320(%r15)
1295; CHECK-NEXT:    vceqh %v2, %v30, %v27
1296; CHECK-NEXT:    vlr %v30, %v0
1297; CHECK-NEXT:    vuphb %v1, %v1
1298; CHECK-NEXT:    vn %v1, %v1, %v2
1299; CHECK-NEXT:    vuphh %v2, %v1
1300; CHECK-NEXT:    vuphf %v2, %v2
1301; CHECK-NEXT:    vsel %v25, %v4, %v3, %v2
1302; CHECK-NEXT:    vl %v3, 336(%r15)
1303; CHECK-NEXT:    vl %v4, 208(%r15)
1304; CHECK-NEXT:    vpkg %v2, %v1, %v1
1305; CHECK-NEXT:    vuphh %v2, %v2
1306; CHECK-NEXT:    vuphf %v2, %v2
1307; CHECK-NEXT:    vsel %v27, %v4, %v3, %v2
1308; CHECK-NEXT:    vl %v3, 352(%r15)
1309; CHECK-NEXT:    vl %v4, 224(%r15)
1310; CHECK-NEXT:    vmrlg %v2, %v1, %v1
1311; CHECK-NEXT:    vuphh %v2, %v2
1312; CHECK-NEXT:    vsldb %v1, %v1, %v1, 12
1313; CHECK-NEXT:    vuphf %v2, %v2
1314; CHECK-NEXT:    vuphh %v1, %v1
1315; CHECK-NEXT:    vsel %v29, %v4, %v3, %v2
1316; CHECK-NEXT:    vl %v2, 368(%r15)
1317; CHECK-NEXT:    vl %v3, 240(%r15)
1318; CHECK-NEXT:    vuphf %v1, %v1
1319; CHECK-NEXT:    vsel %v31, %v3, %v2, %v1
1320; CHECK-NEXT:    br %r14
1321  %cmp0 = icmp eq <16 x i8> %val1, %val2
1322  %cmp1 = icmp eq <16 x i16> %val3, %val4
1323  %and = and <16 x i1> %cmp0, %cmp1
1324  %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6
1325  ret <16 x i64> %sel
1326}
1327
1328define <16 x i64> @fun54(<16 x i8> %val1, <16 x i8> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i64> %val5, <16 x i64> %val6) {
1329; CHECK-LABEL: fun54:
1330; CHECK:       # BB#0:
1331; CHECK-NEXT:    vceqb %v1, %v24, %v26
1332; CHECK-NEXT:    vuphb %v2, %v1
1333; CHECK-NEXT:    vceqf %v0, %v28, %v29
1334; CHECK-NEXT:    vuphh %v2, %v2
1335; CHECK-NEXT:    vn %v0, %v2, %v0
1336; CHECK-NEXT:    vl %v3, 320(%r15)
1337; CHECK-NEXT:    vl %v4, 192(%r15)
1338; CHECK-NEXT:    vuphf %v2, %v0
1339; CHECK-NEXT:    vmrlg %v0, %v0, %v0
1340; CHECK-NEXT:    vsel %v24, %v4, %v3, %v2
1341; CHECK-NEXT:    vl %v2, 336(%r15)
1342; CHECK-NEXT:    vl %v3, 208(%r15)
1343; CHECK-NEXT:    vuphf %v0, %v0
1344; CHECK-NEXT:    vsel %v26, %v3, %v2, %v0
1345; CHECK-NEXT:    vpkg %v2, %v1, %v1
1346; CHECK-NEXT:    vuphb %v2, %v2
1347; CHECK-NEXT:    vceqf %v0, %v30, %v31
1348; CHECK-NEXT:    vuphh %v2, %v2
1349; CHECK-NEXT:    vn %v0, %v2, %v0
1350; CHECK-NEXT:    vl %v3, 352(%r15)
1351; CHECK-NEXT:    vl %v4, 224(%r15)
1352; CHECK-NEXT:    vuphf %v2, %v0
1353; CHECK-NEXT:    vl %v5, 256(%r15)
1354; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
1355; CHECK-NEXT:    vl %v2, 160(%r15)
1356; CHECK-NEXT:    vl %v4, 384(%r15)
1357; CHECK-NEXT:    vmrlg %v3, %v1, %v1
1358; CHECK-NEXT:    vuphb %v3, %v3
1359; CHECK-NEXT:    vceqf %v2, %v25, %v2
1360; CHECK-NEXT:    vuphh %v3, %v3
1361; CHECK-NEXT:    vn %v2, %v3, %v2
1362; CHECK-NEXT:    vuphf %v3, %v2
1363; CHECK-NEXT:    vsldb %v1, %v1, %v1, 12
1364; CHECK-NEXT:    vsel %v25, %v5, %v4, %v3
1365; CHECK-NEXT:    vl %v3, 176(%r15)
1366; CHECK-NEXT:    vl %v4, 416(%r15)
1367; CHECK-NEXT:    vl %v5, 288(%r15)
1368; CHECK-NEXT:    vuphb %v1, %v1
1369; CHECK-NEXT:    vceqf %v3, %v27, %v3
1370; CHECK-NEXT:    vuphh %v1, %v1
1371; CHECK-NEXT:    vn %v1, %v1, %v3
1372; CHECK-NEXT:    vuphf %v3, %v1
1373; CHECK-NEXT:    vmrlg %v0, %v0, %v0
1374; CHECK-NEXT:    vsel %v29, %v5, %v4, %v3
1375; CHECK-NEXT:    vl %v3, 368(%r15)
1376; CHECK-NEXT:    vl %v4, 240(%r15)
1377; CHECK-NEXT:    vuphf %v0, %v0
1378; CHECK-NEXT:    vsel %v30, %v4, %v3, %v0
1379; CHECK-NEXT:    vl %v3, 272(%r15)
1380; CHECK-NEXT:    vmrlg %v0, %v2, %v2
1381; CHECK-NEXT:    vl %v2, 400(%r15)
1382; CHECK-NEXT:    vuphf %v0, %v0
1383; CHECK-NEXT:    vsel %v27, %v3, %v2, %v0
1384; CHECK-NEXT:    vl %v2, 304(%r15)
1385; CHECK-NEXT:    vmrlg %v0, %v1, %v1
1386; CHECK-NEXT:    vl %v1, 432(%r15)
1387; CHECK-NEXT:    vuphf %v0, %v0
1388; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
1389; CHECK-NEXT:    br %r14
1390  %cmp0 = icmp eq <16 x i8> %val1, %val2
1391  %cmp1 = icmp eq <16 x i32> %val3, %val4
1392  %and = and <16 x i1> %cmp0, %cmp1
1393  %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6
1394  ret <16 x i64> %sel
1395}
1396
1397define <16 x i64> @fun55(<16 x i8> %val1, <16 x i8> %val2, <16 x i64> %val3, <16 x i64> %val4, <16 x i64> %val5, <16 x i64> %val6) {
1398; CHECK-LABEL: fun55:
1399; CHECK:       # BB#0:
1400; CHECK-NEXT:    vl %v0, 192(%r15)
1401; CHECK-NEXT:    vceqg %v1, %v28, %v0
1402; CHECK-NEXT:    vceqb %v0, %v24, %v26
1403; CHECK-NEXT:    vuphb %v2, %v0
1404; CHECK-NEXT:    vuphh %v2, %v2
1405; CHECK-NEXT:    vuphf %v2, %v2
1406; CHECK-NEXT:    vn %v1, %v2, %v1
1407; CHECK-NEXT:    vl %v2, 448(%r15)
1408; CHECK-NEXT:    vl %v3, 320(%r15)
1409; CHECK-NEXT:    vsel %v24, %v3, %v2, %v1
1410; CHECK-NEXT:    vpkf %v2, %v0, %v0
1411; CHECK-NEXT:    vuphb %v2, %v2
1412; CHECK-NEXT:    vl %v1, 208(%r15)
1413; CHECK-NEXT:    vuphh %v2, %v2
1414; CHECK-NEXT:    vceqg %v1, %v30, %v1
1415; CHECK-NEXT:    vuphf %v2, %v2
1416; CHECK-NEXT:    vn %v1, %v2, %v1
1417; CHECK-NEXT:    vl %v2, 464(%r15)
1418; CHECK-NEXT:    vl %v3, 336(%r15)
1419; CHECK-NEXT:    vsel %v26, %v3, %v2, %v1
1420; CHECK-NEXT:    vpkg %v2, %v0, %v0
1421; CHECK-NEXT:    vuphb %v2, %v2
1422; CHECK-NEXT:    vl %v1, 224(%r15)
1423; CHECK-NEXT:    vl %v3, 352(%r15)
1424; CHECK-NEXT:    vuphh %v2, %v2
1425; CHECK-NEXT:    vceqg %v1, %v25, %v1
1426; CHECK-NEXT:    vuphf %v2, %v2
1427; CHECK-NEXT:    vn %v1, %v2, %v1
1428; CHECK-NEXT:    vl %v2, 480(%r15)
1429; CHECK-NEXT:    vsel %v28, %v3, %v2, %v1
1430; CHECK-NEXT:    vl %v1, 240(%r15)
1431; CHECK-NEXT:    vl %v3, 368(%r15)
1432; CHECK-NEXT:    vsldb %v2, %v0, %v0, 6
1433; CHECK-NEXT:    vuphb %v2, %v2
1434; CHECK-NEXT:    vuphh %v2, %v2
1435; CHECK-NEXT:    vceqg %v1, %v27, %v1
1436; CHECK-NEXT:    vuphf %v2, %v2
1437; CHECK-NEXT:    vn %v1, %v2, %v1
1438; CHECK-NEXT:    vl %v2, 496(%r15)
1439; CHECK-NEXT:    vsel %v30, %v3, %v2, %v1
1440; CHECK-NEXT:    vl %v1, 256(%r15)
1441; CHECK-NEXT:    vl %v3, 384(%r15)
1442; CHECK-NEXT:    vmrlg %v2, %v0, %v0
1443; CHECK-NEXT:    vuphb %v2, %v2
1444; CHECK-NEXT:    vuphh %v2, %v2
1445; CHECK-NEXT:    vceqg %v1, %v29, %v1
1446; CHECK-NEXT:    vuphf %v2, %v2
1447; CHECK-NEXT:    vn %v1, %v2, %v1
1448; CHECK-NEXT:    vl %v2, 512(%r15)
1449; CHECK-NEXT:    vsel %v25, %v3, %v2, %v1
1450; CHECK-NEXT:    vl %v1, 272(%r15)
1451; CHECK-NEXT:    vl %v3, 400(%r15)
1452; CHECK-NEXT:    vsldb %v2, %v0, %v0, 10
1453; CHECK-NEXT:    vuphb %v2, %v2
1454; CHECK-NEXT:    vuphh %v2, %v2
1455; CHECK-NEXT:    vceqg %v1, %v31, %v1
1456; CHECK-NEXT:    vuphf %v2, %v2
1457; CHECK-NEXT:    vn %v1, %v2, %v1
1458; CHECK-NEXT:    vl %v2, 528(%r15)
1459; CHECK-NEXT:    vsel %v27, %v3, %v2, %v1
1460; CHECK-NEXT:    vl %v1, 288(%r15)
1461; CHECK-NEXT:    vl %v2, 160(%r15)
1462; CHECK-NEXT:    vl %v3, 416(%r15)
1463; CHECK-NEXT:    vceqg %v1, %v2, %v1
1464; CHECK-NEXT:    vsldb %v2, %v0, %v0, 12
1465; CHECK-NEXT:    vuphb %v2, %v2
1466; CHECK-NEXT:    vuphh %v2, %v2
1467; CHECK-NEXT:    vuphf %v2, %v2
1468; CHECK-NEXT:    vsldb %v0, %v0, %v0, 14
1469; CHECK-NEXT:    vn %v1, %v2, %v1
1470; CHECK-NEXT:    vl %v2, 544(%r15)
1471; CHECK-NEXT:    vuphb %v0, %v0
1472; CHECK-NEXT:    vsel %v29, %v3, %v2, %v1
1473; CHECK-NEXT:    vl %v1, 304(%r15)
1474; CHECK-NEXT:    vl %v2, 176(%r15)
1475; CHECK-NEXT:    vuphh %v0, %v0
1476; CHECK-NEXT:    vceqg %v1, %v2, %v1
1477; CHECK-NEXT:    vl %v2, 432(%r15)
1478; CHECK-NEXT:    vuphf %v0, %v0
1479; CHECK-NEXT:    vn %v0, %v0, %v1
1480; CHECK-NEXT:    vl %v1, 560(%r15)
1481; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
1482; CHECK-NEXT:    br %r14
1483  %cmp0 = icmp eq <16 x i8> %val1, %val2
1484  %cmp1 = icmp eq <16 x i64> %val3, %val4
1485  %and = and <16 x i1> %cmp0, %cmp1
1486  %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6
1487  ret <16 x i64> %sel
1488}
1489
1490define <16 x i16> @fun56(<16 x i8> %val1, <16 x i8> %val2, <16 x float> %val3, <16 x float> %val4, <16 x i16> %val5, <16 x i16> %val6) {
1491; CHECK-LABEL: fun56:
1492; CHECK:       # BB#0:
1493; CHECK-NEXT:    vmrlf %v0, %v31, %v31
1494; CHECK-NEXT:    vmrlf %v1, %v30, %v30
1495; CHECK-NEXT:    vldeb %v0, %v0
1496; CHECK-NEXT:    vldeb %v1, %v1
1497; CHECK-NEXT:    vfchdb %v0, %v1, %v0
1498; CHECK-NEXT:    vmrhf %v1, %v31, %v31
1499; CHECK-NEXT:    vmrhf %v2, %v30, %v30
1500; CHECK-NEXT:    vldeb %v1, %v1
1501; CHECK-NEXT:    vmrhf %v3, %v28, %v28
1502; CHECK-NEXT:    vmrlf %v4, %v25, %v25
1503; CHECK-NEXT:    vldeb %v2, %v2
1504; CHECK-NEXT:    vfchdb %v1, %v2, %v1
1505; CHECK-NEXT:    vpkg %v0, %v1, %v0
1506; CHECK-NEXT:    vmrlf %v1, %v29, %v29
1507; CHECK-NEXT:    vmrlf %v2, %v28, %v28
1508; CHECK-NEXT:    vldeb %v1, %v1
1509; CHECK-NEXT:    vldeb %v2, %v2
1510; CHECK-NEXT:    vfchdb %v1, %v2, %v1
1511; CHECK-NEXT:    vmrhf %v2, %v29, %v29
1512; CHECK-NEXT:    vldeb %v2, %v2
1513; CHECK-NEXT:    vldeb %v3, %v3
1514; CHECK-NEXT:    vfchdb %v2, %v3, %v2
1515; CHECK-NEXT:    vl %v3, 192(%r15)
1516; CHECK-NEXT:    vpkg %v1, %v2, %v1
1517; CHECK-NEXT:    vpkf %v0, %v1, %v0
1518; CHECK-NEXT:    vceqb %v1, %v24, %v26
1519; CHECK-NEXT:    vuphb %v2, %v1
1520; CHECK-NEXT:    vn %v0, %v2, %v0
1521; CHECK-NEXT:    vl %v2, 224(%r15)
1522; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
1523; CHECK-NEXT:    vl %v0, 176(%r15)
1524; CHECK-NEXT:    vmrlf %v2, %v0, %v0
1525; CHECK-NEXT:    vmrlf %v3, %v27, %v27
1526; CHECK-NEXT:    vmrhf %v0, %v0, %v0
1527; CHECK-NEXT:    vmrlg %v1, %v1, %v1
1528; CHECK-NEXT:    vuphb %v1, %v1
1529; CHECK-NEXT:    vldeb %v2, %v2
1530; CHECK-NEXT:    vldeb %v3, %v3
1531; CHECK-NEXT:    vfchdb %v2, %v3, %v2
1532; CHECK-NEXT:    vmrhf %v3, %v27, %v27
1533; CHECK-NEXT:    vldeb %v0, %v0
1534; CHECK-NEXT:    vldeb %v3, %v3
1535; CHECK-NEXT:    vfchdb %v0, %v3, %v0
1536; CHECK-NEXT:    vpkg %v0, %v0, %v2
1537; CHECK-NEXT:    vl %v2, 160(%r15)
1538; CHECK-NEXT:    vmrlf %v3, %v2, %v2
1539; CHECK-NEXT:    vmrhf %v2, %v2, %v2
1540; CHECK-NEXT:    vldeb %v3, %v3
1541; CHECK-NEXT:    vldeb %v4, %v4
1542; CHECK-NEXT:    vfchdb %v3, %v4, %v3
1543; CHECK-NEXT:    vmrhf %v4, %v25, %v25
1544; CHECK-NEXT:    vldeb %v2, %v2
1545; CHECK-NEXT:    vldeb %v4, %v4
1546; CHECK-NEXT:    vfchdb %v2, %v4, %v2
1547; CHECK-NEXT:    vpkg %v2, %v2, %v3
1548; CHECK-NEXT:    vpkf %v0, %v2, %v0
1549; CHECK-NEXT:    vl %v2, 208(%r15)
1550; CHECK-NEXT:    vn %v0, %v1, %v0
1551; CHECK-NEXT:    vl %v1, 240(%r15)
1552; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1553; CHECK-NEXT:    br %r14
1554  %cmp0 = icmp eq <16 x i8> %val1, %val2
1555  %cmp1 = fcmp ogt <16 x float> %val3, %val4
1556  %and = and <16 x i1> %cmp0, %cmp1
1557  %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6
1558  ret <16 x i16> %sel
1559}
1560
1561define <16 x i8> @fun57(<16 x i8> %val1, <16 x i8> %val2, <16 x double> %val3, <16 x double> %val4, <16 x i8> %val5, <16 x i8> %val6) {
1562; CHECK-LABEL: fun57:
1563; CHECK:       # BB#0:
1564; CHECK-NEXT:    vl %v0, 304(%r15)
1565; CHECK-NEXT:    vl %v1, 176(%r15)
1566; CHECK-NEXT:    vfchdb %v0, %v1, %v0
1567; CHECK-NEXT:    vl %v1, 288(%r15)
1568; CHECK-NEXT:    vl %v2, 160(%r15)
1569; CHECK-NEXT:    vfchdb %v1, %v2, %v1
1570; CHECK-NEXT:    vpkg %v0, %v1, %v0
1571; CHECK-NEXT:    vl %v1, 272(%r15)
1572; CHECK-NEXT:    vl %v2, 256(%r15)
1573; CHECK-NEXT:    vfchdb %v1, %v31, %v1
1574; CHECK-NEXT:    vfchdb %v2, %v29, %v2
1575; CHECK-NEXT:    vpkg %v1, %v2, %v1
1576; CHECK-NEXT:    vpkf %v0, %v1, %v0
1577; CHECK-NEXT:    vl %v1, 240(%r15)
1578; CHECK-NEXT:    vl %v2, 224(%r15)
1579; CHECK-NEXT:    vfchdb %v1, %v27, %v1
1580; CHECK-NEXT:    vfchdb %v2, %v25, %v2
1581; CHECK-NEXT:    vpkg %v1, %v2, %v1
1582; CHECK-NEXT:    vl %v2, 208(%r15)
1583; CHECK-NEXT:    vl %v3, 192(%r15)
1584; CHECK-NEXT:    vfchdb %v2, %v30, %v2
1585; CHECK-NEXT:    vfchdb %v3, %v28, %v3
1586; CHECK-NEXT:    vpkg %v2, %v3, %v2
1587; CHECK-NEXT:    vpkf %v1, %v2, %v1
1588; CHECK-NEXT:    vpkh %v0, %v1, %v0
1589; CHECK-NEXT:    vceqb %v1, %v24, %v26
1590; CHECK-NEXT:    vn %v0, %v1, %v0
1591; CHECK-NEXT:    vl %v1, 336(%r15)
1592; CHECK-NEXT:    vl %v2, 320(%r15)
1593; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1594; CHECK-NEXT:    br %r14
1595  %cmp0 = icmp eq <16 x i8> %val1, %val2
1596  %cmp1 = fcmp ogt <16 x double> %val3, %val4
1597  %and = and <16 x i1> %cmp0, %cmp1
1598  %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6
1599  ret <16 x i8> %sel
1600}
1601
1602define <16 x i8> @fun58(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i8> %val5, <16 x i8> %val6) {
1603; CHECK-LABEL: fun58:
1604; CHECK:       # BB#0:
1605; CHECK-NEXT:    vceqh %v0, %v27, %v31
1606; CHECK-NEXT:    vceqh %v1, %v26, %v30
1607; CHECK-NEXT:    vn %v0, %v1, %v0
1608; CHECK-NEXT:    vceqh %v1, %v25, %v29
1609; CHECK-NEXT:    vceqh %v2, %v24, %v28
1610; CHECK-NEXT:    vn %v1, %v2, %v1
1611; CHECK-NEXT:    vpkh %v0, %v1, %v0
1612; CHECK-NEXT:    vl %v1, 176(%r15)
1613; CHECK-NEXT:    vl %v2, 160(%r15)
1614; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1615; CHECK-NEXT:    br %r14
1616  %cmp0 = icmp eq <16 x i16> %val1, %val2
1617  %cmp1 = icmp eq <16 x i16> %val3, %val4
1618  %and = and <16 x i1> %cmp0, %cmp1
1619  %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6
1620  ret <16 x i8> %sel
1621}
1622
1623define <16 x i16> @fun59(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i16> %val5, <16 x i16> %val6) {
1624; CHECK-LABEL: fun59:
1625; CHECK:       # BB#0:
1626; CHECK-NEXT:    vceqh %v0, %v25, %v29
1627; CHECK-NEXT:    vceqh %v1, %v24, %v28
1628; CHECK-NEXT:    vn %v0, %v1, %v0
1629; CHECK-NEXT:    vl %v1, 192(%r15)
1630; CHECK-NEXT:    vl %v2, 160(%r15)
1631; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1632; CHECK-NEXT:    vceqh %v0, %v27, %v31
1633; CHECK-NEXT:    vceqh %v1, %v26, %v30
1634; CHECK-NEXT:    vn %v0, %v1, %v0
1635; CHECK-NEXT:    vl %v1, 208(%r15)
1636; CHECK-NEXT:    vl %v2, 176(%r15)
1637; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
1638; CHECK-NEXT:    br %r14
1639  %cmp0 = icmp eq <16 x i16> %val1, %val2
1640  %cmp1 = icmp eq <16 x i16> %val3, %val4
1641  %and = and <16 x i1> %cmp0, %cmp1
1642  %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6
1643  ret <16 x i16> %sel
1644}
1645
1646define <16 x i32> @fun60(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i32> %val5, <16 x i32> %val6) {
1647; CHECK-LABEL: fun60:
1648; CHECK:       # BB#0:
1649; CHECK-NEXT:    vceqh %v0, %v25, %v29
1650; CHECK-NEXT:    vceqh %v1, %v24, %v28
1651; CHECK-NEXT:    vn %v0, %v1, %v0
1652; CHECK-NEXT:    vl %v2, 224(%r15)
1653; CHECK-NEXT:    vl %v3, 160(%r15)
1654; CHECK-NEXT:    vuphh %v1, %v0
1655; CHECK-NEXT:    vsel %v24, %v3, %v2, %v1
1656; CHECK-NEXT:    vceqh %v1, %v27, %v31
1657; CHECK-NEXT:    vceqh %v2, %v26, %v30
1658; CHECK-NEXT:    vn %v1, %v2, %v1
1659; CHECK-NEXT:    vl %v3, 256(%r15)
1660; CHECK-NEXT:    vl %v4, 192(%r15)
1661; CHECK-NEXT:    vuphh %v2, %v1
1662; CHECK-NEXT:    vmrlg %v0, %v0, %v0
1663; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
1664; CHECK-NEXT:    vl %v2, 240(%r15)
1665; CHECK-NEXT:    vl %v3, 176(%r15)
1666; CHECK-NEXT:    vuphh %v0, %v0
1667; CHECK-NEXT:    vsel %v26, %v3, %v2, %v0
1668; CHECK-NEXT:    vmrlg %v0, %v1, %v1
1669; CHECK-NEXT:    vl %v1, 272(%r15)
1670; CHECK-NEXT:    vl %v2, 208(%r15)
1671; CHECK-NEXT:    vuphh %v0, %v0
1672; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
1673; CHECK-NEXT:    br %r14
1674  %cmp0 = icmp eq <16 x i16> %val1, %val2
1675  %cmp1 = icmp eq <16 x i16> %val3, %val4
1676  %and = and <16 x i1> %cmp0, %cmp1
1677  %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6
1678  ret <16 x i32> %sel
1679}
1680
1681define <16 x i8> @fun61(<16 x i16> %val1, <16 x i16> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i8> %val5, <16 x i8> %val6) {
1682; CHECK-LABEL: fun61:
1683; CHECK:       # BB#0:
1684; CHECK-NEXT:    vl %v0, 208(%r15)
1685; CHECK-NEXT:    vl %v1, 192(%r15)
1686; CHECK-NEXT:    vceqf %v0, %v31, %v0
1687; CHECK-NEXT:    vceqf %v1, %v29, %v1
1688; CHECK-NEXT:    vpkf %v0, %v1, %v0
1689; CHECK-NEXT:    vceqh %v1, %v26, %v30
1690; CHECK-NEXT:    vn %v0, %v1, %v0
1691; CHECK-NEXT:    vl %v1, 176(%r15)
1692; CHECK-NEXT:    vl %v2, 160(%r15)
1693; CHECK-NEXT:    vceqf %v1, %v27, %v1
1694; CHECK-NEXT:    vceqf %v2, %v25, %v2
1695; CHECK-NEXT:    vpkf %v1, %v2, %v1
1696; CHECK-NEXT:    vceqh %v2, %v24, %v28
1697; CHECK-NEXT:    vn %v1, %v2, %v1
1698; CHECK-NEXT:    vpkh %v0, %v1, %v0
1699; CHECK-NEXT:    vl %v1, 240(%r15)
1700; CHECK-NEXT:    vl %v2, 224(%r15)
1701; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
1702; CHECK-NEXT:    br %r14
1703  %cmp0 = icmp eq <16 x i16> %val1, %val2
1704  %cmp1 = icmp eq <16 x i32> %val3, %val4
1705  %and = and <16 x i1> %cmp0, %cmp1
1706  %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6
1707  ret <16 x i8> %sel
1708}
1709
1710define <16 x i32> @fun62(<16 x i16> %val1, <16 x i16> %val2, <16 x i64> %val3, <16 x i64> %val4, <16 x i32> %val5, <16 x i32> %val6) {
1711; CHECK-LABEL: fun62:
1712; CHECK:       # BB#0:
1713; CHECK-NEXT:    vl %v0, 240(%r15)
1714; CHECK-NEXT:    vl %v1, 224(%r15)
1715; CHECK-NEXT:    vceqg %v0, %v27, %v0
1716; CHECK-NEXT:    vceqg %v1, %v25, %v1
1717; CHECK-NEXT:    vpkg %v0, %v1, %v0
1718; CHECK-NEXT:    vceqh %v1, %v24, %v28
1719; CHECK-NEXT:    vuphh %v2, %v1
1720; CHECK-NEXT:    vn %v0, %v2, %v0
1721; CHECK-NEXT:    vl %v2, 416(%r15)
1722; CHECK-NEXT:    vl %v3, 352(%r15)
1723; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
1724; CHECK-NEXT:    vl %v0, 304(%r15)
1725; CHECK-NEXT:    vl %v2, 176(%r15)
1726; CHECK-NEXT:    vceqg %v0, %v2, %v0
1727; CHECK-NEXT:    vl %v2, 288(%r15)
1728; CHECK-NEXT:    vl %v3, 160(%r15)
1729; CHECK-NEXT:    vceqg %v2, %v3, %v2
1730; CHECK-NEXT:    vpkg %v0, %v2, %v0
1731; CHECK-NEXT:    vceqh %v2, %v26, %v30
1732; CHECK-NEXT:    vuphh %v3, %v2
1733; CHECK-NEXT:    vn %v0, %v3, %v0
1734; CHECK-NEXT:    vl %v3, 448(%r15)
1735; CHECK-NEXT:    vl %v4, 384(%r15)
1736; CHECK-NEXT:    vsel %v28, %v4, %v3, %v0
1737; CHECK-NEXT:    vl %v0, 272(%r15)
1738; CHECK-NEXT:    vl %v3, 256(%r15)
1739; CHECK-NEXT:    vceqg %v0, %v31, %v0
1740; CHECK-NEXT:    vceqg %v3, %v29, %v3
1741; CHECK-NEXT:    vmrlg %v1, %v1, %v1
1742; CHECK-NEXT:    vpkg %v0, %v3, %v0
1743; CHECK-NEXT:    vuphh %v1, %v1
1744; CHECK-NEXT:    vl %v3, 368(%r15)
1745; CHECK-NEXT:    vn %v0, %v1, %v0
1746; CHECK-NEXT:    vl %v1, 432(%r15)
1747; CHECK-NEXT:    vsel %v26, %v3, %v1, %v0
1748; CHECK-NEXT:    vl %v0, 336(%r15)
1749; CHECK-NEXT:    vl %v1, 208(%r15)
1750; CHECK-NEXT:    vl %v3, 192(%r15)
1751; CHECK-NEXT:    vceqg %v0, %v1, %v0
1752; CHECK-NEXT:    vl %v1, 320(%r15)
1753; CHECK-NEXT:    vceqg %v1, %v3, %v1
1754; CHECK-NEXT:    vpkg %v0, %v1, %v0
1755; CHECK-NEXT:    vmrlg %v1, %v2, %v2
1756; CHECK-NEXT:    vl %v2, 400(%r15)
1757; CHECK-NEXT:    vuphh %v1, %v1
1758; CHECK-NEXT:    vn %v0, %v1, %v0
1759; CHECK-NEXT:    vl %v1, 464(%r15)
1760; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
1761; CHECK-NEXT:    br %r14
1762  %cmp0 = icmp eq <16 x i16> %val1, %val2
1763  %cmp1 = icmp eq <16 x i64> %val3, %val4
1764  %and = and <16 x i1> %cmp0, %cmp1
1765  %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6
1766  ret <16 x i32> %sel
1767}
1768
1769define <16 x double> @fun63(<16 x i16> %val1, <16 x i16> %val2, <16 x float> %val3, <16 x float> %val4, <16 x double> %val5, <16 x double> %val6) {
1770; CHECK-LABEL: fun63:
1771; CHECK:       # BB#0:
1772; CHECK-NEXT:    vl %v0, 160(%r15)
1773; CHECK-NEXT:    vmrlf %v1, %v0, %v0
1774; CHECK-NEXT:    vmrlf %v2, %v25, %v25
1775; CHECK-NEXT:    vldeb %v1, %v1
1776; CHECK-NEXT:    vldeb %v2, %v2
1777; CHECK-NEXT:    vfchdb %v1, %v2, %v1
1778; CHECK-NEXT:    vmrhf %v0, %v0, %v0
1779; CHECK-NEXT:    vmrhf %v2, %v25, %v25
1780; CHECK-NEXT:    vldeb %v0, %v0
1781; CHECK-NEXT:    vldeb %v2, %v2
1782; CHECK-NEXT:    vl %v3, 352(%r15)
1783; CHECK-NEXT:    vl %v4, 224(%r15)
1784; CHECK-NEXT:    vl %v5, 416(%r15)
1785; CHECK-NEXT:    vl %v6, 288(%r15)
1786; CHECK-NEXT:    vfchdb %v0, %v2, %v0
1787; CHECK-NEXT:    vpkg %v0, %v0, %v1
1788; CHECK-NEXT:    vceqh %v1, %v24, %v28
1789; CHECK-NEXT:    vuphh %v2, %v1
1790; CHECK-NEXT:    vn %v0, %v2, %v0
1791; CHECK-NEXT:    vuphf %v2, %v0
1792; CHECK-NEXT:    vsel %v24, %v4, %v3, %v2
1793; CHECK-NEXT:    vl %v2, 176(%r15)
1794; CHECK-NEXT:    vmrlf %v3, %v2, %v2
1795; CHECK-NEXT:    vmrlf %v4, %v27, %v27
1796; CHECK-NEXT:    vmrhf %v2, %v2, %v2
1797; CHECK-NEXT:    vmrlg %v1, %v1, %v1
1798; CHECK-NEXT:    vuphh %v1, %v1
1799; CHECK-NEXT:    vmrlg %v0, %v0, %v0
1800; CHECK-NEXT:    vuphf %v0, %v0
1801; CHECK-NEXT:    vldeb %v3, %v3
1802; CHECK-NEXT:    vldeb %v4, %v4
1803; CHECK-NEXT:    vfchdb %v3, %v4, %v3
1804; CHECK-NEXT:    vmrhf %v4, %v27, %v27
1805; CHECK-NEXT:    vldeb %v2, %v2
1806; CHECK-NEXT:    vldeb %v4, %v4
1807; CHECK-NEXT:    vfchdb %v2, %v4, %v2
1808; CHECK-NEXT:    vl %v4, 256(%r15)
1809; CHECK-NEXT:    vpkg %v2, %v2, %v3
1810; CHECK-NEXT:    vl %v3, 384(%r15)
1811; CHECK-NEXT:    vn %v1, %v1, %v2
1812; CHECK-NEXT:    vuphf %v2, %v1
1813; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
1814; CHECK-NEXT:    vl %v2, 192(%r15)
1815; CHECK-NEXT:    vmrlf %v3, %v2, %v2
1816; CHECK-NEXT:    vmrlf %v4, %v29, %v29
1817; CHECK-NEXT:    vmrhf %v2, %v2, %v2
1818; CHECK-NEXT:    vldeb %v3, %v3
1819; CHECK-NEXT:    vldeb %v4, %v4
1820; CHECK-NEXT:    vfchdb %v3, %v4, %v3
1821; CHECK-NEXT:    vmrhf %v4, %v29, %v29
1822; CHECK-NEXT:    vldeb %v2, %v2
1823; CHECK-NEXT:    vldeb %v4, %v4
1824; CHECK-NEXT:    vfchdb %v2, %v4, %v2
1825; CHECK-NEXT:    vpkg %v2, %v2, %v3
1826; CHECK-NEXT:    vceqh %v3, %v26, %v30
1827; CHECK-NEXT:    vuphh %v4, %v3
1828; CHECK-NEXT:    vn %v2, %v4, %v2
1829; CHECK-NEXT:    vuphf %v4, %v2
1830; CHECK-NEXT:    vsel %v25, %v6, %v5, %v4
1831; CHECK-NEXT:    vl %v4, 208(%r15)
1832; CHECK-NEXT:    vmrlf %v5, %v4, %v4
1833; CHECK-NEXT:    vmrlf %v6, %v31, %v31
1834; CHECK-NEXT:    vmrhf %v4, %v4, %v4
1835; CHECK-NEXT:    vmrlg %v3, %v3, %v3
1836; CHECK-NEXT:    vuphh %v3, %v3
1837; CHECK-NEXT:    vldeb %v5, %v5
1838; CHECK-NEXT:    vldeb %v6, %v6
1839; CHECK-NEXT:    vfchdb %v5, %v6, %v5
1840; CHECK-NEXT:    vmrhf %v6, %v31, %v31
1841; CHECK-NEXT:    vldeb %v4, %v4
1842; CHECK-NEXT:    vldeb %v6, %v6
1843; CHECK-NEXT:    vfchdb %v4, %v6, %v4
1844; CHECK-NEXT:    vl %v6, 320(%r15)
1845; CHECK-NEXT:    vpkg %v4, %v4, %v5
1846; CHECK-NEXT:    vl %v5, 448(%r15)
1847; CHECK-NEXT:    vn %v3, %v3, %v4
1848; CHECK-NEXT:    vuphf %v4, %v3
1849; CHECK-NEXT:    vsel %v29, %v6, %v5, %v4
1850; CHECK-NEXT:    vl %v4, 368(%r15)
1851; CHECK-NEXT:    vl %v5, 240(%r15)
1852; CHECK-NEXT:    vsel %v26, %v5, %v4, %v0
1853; CHECK-NEXT:    vl %v4, 272(%r15)
1854; CHECK-NEXT:    vmrlg %v0, %v1, %v1
1855; CHECK-NEXT:    vl %v1, 400(%r15)
1856; CHECK-NEXT:    vuphf %v0, %v0
1857; CHECK-NEXT:    vsel %v30, %v4, %v1, %v0
1858; CHECK-NEXT:    vl %v1, 432(%r15)
1859; CHECK-NEXT:    vmrlg %v0, %v2, %v2
1860; CHECK-NEXT:    vl %v2, 304(%r15)
1861; CHECK-NEXT:    vuphf %v0, %v0
1862; CHECK-NEXT:    vsel %v27, %v2, %v1, %v0
1863; CHECK-NEXT:    vl %v1, 464(%r15)
1864; CHECK-NEXT:    vl %v2, 336(%r15)
1865; CHECK-NEXT:    vmrlg %v0, %v3, %v3
1866; CHECK-NEXT:    vuphf %v0, %v0
1867; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
1868; CHECK-NEXT:    br %r14
1869  %cmp0 = icmp eq <16 x i16> %val1, %val2
1870  %cmp1 = fcmp ogt <16 x float> %val3, %val4
1871  %and = and <16 x i1> %cmp0, %cmp1
1872  %sel = select <16 x i1> %and, <16 x double> %val5, <16 x double> %val6
1873  ret <16 x double> %sel
1874}
1875
1876define <16 x i32> @fun64(<16 x i16> %val1, <16 x i16> %val2, <16 x double> %val3, <16 x double> %val4, <16 x i32> %val5, <16 x i32> %val6) {
1877; CHECK-LABEL: fun64:
1878; CHECK:       # BB#0:
1879; CHECK-NEXT:    vl %v0, 240(%r15)
1880; CHECK-NEXT:    vl %v1, 224(%r15)
1881; CHECK-NEXT:    vfchdb %v0, %v27, %v0
1882; CHECK-NEXT:    vfchdb %v1, %v25, %v1
1883; CHECK-NEXT:    vpkg %v0, %v1, %v0
1884; CHECK-NEXT:    vceqh %v1, %v24, %v28
1885; CHECK-NEXT:    vuphh %v2, %v1
1886; CHECK-NEXT:    vn %v0, %v2, %v0
1887; CHECK-NEXT:    vl %v2, 416(%r15)
1888; CHECK-NEXT:    vl %v3, 352(%r15)
1889; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
1890; CHECK-NEXT:    vl %v0, 304(%r15)
1891; CHECK-NEXT:    vl %v2, 176(%r15)
1892; CHECK-NEXT:    vfchdb %v0, %v2, %v0
1893; CHECK-NEXT:    vl %v2, 288(%r15)
1894; CHECK-NEXT:    vl %v3, 160(%r15)
1895; CHECK-NEXT:    vfchdb %v2, %v3, %v2
1896; CHECK-NEXT:    vpkg %v0, %v2, %v0
1897; CHECK-NEXT:    vceqh %v2, %v26, %v30
1898; CHECK-NEXT:    vuphh %v3, %v2
1899; CHECK-NEXT:    vn %v0, %v3, %v0
1900; CHECK-NEXT:    vl %v3, 448(%r15)
1901; CHECK-NEXT:    vl %v4, 384(%r15)
1902; CHECK-NEXT:    vsel %v28, %v4, %v3, %v0
1903; CHECK-NEXT:    vl %v0, 272(%r15)
1904; CHECK-NEXT:    vl %v3, 256(%r15)
1905; CHECK-NEXT:    vfchdb %v0, %v31, %v0
1906; CHECK-NEXT:    vfchdb %v3, %v29, %v3
1907; CHECK-NEXT:    vmrlg %v1, %v1, %v1
1908; CHECK-NEXT:    vpkg %v0, %v3, %v0
1909; CHECK-NEXT:    vuphh %v1, %v1
1910; CHECK-NEXT:    vl %v3, 368(%r15)
1911; CHECK-NEXT:    vn %v0, %v1, %v0
1912; CHECK-NEXT:    vl %v1, 432(%r15)
1913; CHECK-NEXT:    vsel %v26, %v3, %v1, %v0
1914; CHECK-NEXT:    vl %v0, 336(%r15)
1915; CHECK-NEXT:    vl %v1, 208(%r15)
1916; CHECK-NEXT:    vl %v3, 192(%r15)
1917; CHECK-NEXT:    vfchdb %v0, %v1, %v0
1918; CHECK-NEXT:    vl %v1, 320(%r15)
1919; CHECK-NEXT:    vfchdb %v1, %v3, %v1
1920; CHECK-NEXT:    vpkg %v0, %v1, %v0
1921; CHECK-NEXT:    vmrlg %v1, %v2, %v2
1922; CHECK-NEXT:    vl %v2, 400(%r15)
1923; CHECK-NEXT:    vuphh %v1, %v1
1924; CHECK-NEXT:    vn %v0, %v1, %v0
1925; CHECK-NEXT:    vl %v1, 464(%r15)
1926; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
1927; CHECK-NEXT:    br %r14
1928  %cmp0 = icmp eq <16 x i16> %val1, %val2
1929  %cmp1 = fcmp ogt <16 x double> %val3, %val4
1930  %and = and <16 x i1> %cmp0, %cmp1
1931  %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6
1932  ret <16 x i32> %sel
1933}
1934
1935define <2 x i8> @fun65(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i8> %val5, <2 x i8> %val6) {
1936; CHECK-LABEL: fun65:
1937; CHECK:       # BB#0:
1938; CHECK-NEXT:    vceqb %v0, %v28, %v30
1939; CHECK-NEXT:    vceqb %v1, %v24, %v26
1940; CHECK-NEXT:    vo %v0, %v1, %v0
1941; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
1942; CHECK-NEXT:    br %r14
1943  %cmp0 = icmp eq <2 x i8> %val1, %val2
1944  %cmp1 = icmp eq <2 x i8> %val3, %val4
1945  %and = or <2 x i1> %cmp0, %cmp1
1946  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
1947  ret <2 x i8> %sel
1948}
1949
1950define <2 x i16> @fun66(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i16> %val5, <2 x i16> %val6) {
1951; CHECK-LABEL: fun66:
1952; CHECK:       # BB#0:
1953; CHECK-NEXT:    vceqb %v0, %v28, %v30
1954; CHECK-NEXT:    vceqb %v1, %v24, %v26
1955; CHECK-NEXT:    vo %v0, %v1, %v0
1956; CHECK-NEXT:    vuphb %v0, %v0
1957; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
1958; CHECK-NEXT:    br %r14
1959  %cmp0 = icmp eq <2 x i8> %val1, %val2
1960  %cmp1 = icmp eq <2 x i8> %val3, %val4
1961  %and = or <2 x i1> %cmp0, %cmp1
1962  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
1963  ret <2 x i16> %sel
1964}
1965
1966define <2 x i8> @fun67(<2 x i8> %val1, <2 x i8> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i8> %val5, <2 x i8> %val6) {
1967; CHECK-LABEL: fun67:
1968; CHECK:       # BB#0:
1969; CHECK-NEXT:    vceqh %v1, %v28, %v30
1970; CHECK-NEXT:    vceqb %v0, %v24, %v26
1971; CHECK-NEXT:    vpkh %v1, %v1, %v1
1972; CHECK-NEXT:    vo %v0, %v0, %v1
1973; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
1974; CHECK-NEXT:    br %r14
1975  %cmp0 = icmp eq <2 x i8> %val1, %val2
1976  %cmp1 = icmp eq <2 x i16> %val3, %val4
1977  %and = or <2 x i1> %cmp0, %cmp1
1978  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
1979  ret <2 x i8> %sel
1980}
1981
1982define <2 x i32> @fun68(<2 x i8> %val1, <2 x i8> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i32> %val5, <2 x i32> %val6) {
1983; CHECK-LABEL: fun68:
1984; CHECK:       # BB#0:
1985; CHECK-NEXT:    vceqb %v1, %v24, %v26
1986; CHECK-NEXT:    vuphb %v1, %v1
1987; CHECK-NEXT:    vceqf %v0, %v28, %v30
1988; CHECK-NEXT:    vuphh %v1, %v1
1989; CHECK-NEXT:    vo %v0, %v1, %v0
1990; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
1991; CHECK-NEXT:    br %r14
1992  %cmp0 = icmp eq <2 x i8> %val1, %val2
1993  %cmp1 = icmp eq <2 x i32> %val3, %val4
1994  %and = or <2 x i1> %cmp0, %cmp1
1995  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
1996  ret <2 x i32> %sel
1997}
1998
1999define <2 x i32> @fun69(<2 x i8> %val1, <2 x i8> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i32> %val5, <2 x i32> %val6) {
2000; CHECK-LABEL: fun69:
2001; CHECK:       # BB#0:
2002; CHECK-NEXT:    vceqb %v1, %v24, %v26
2003; CHECK-NEXT:    vceqg %v0, %v28, %v30
2004; CHECK-NEXT:    vuphb %v1, %v1
2005; CHECK-NEXT:    vpkg %v0, %v0, %v0
2006; CHECK-NEXT:    vuphh %v1, %v1
2007; CHECK-NEXT:    vo %v0, %v1, %v0
2008; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2009; CHECK-NEXT:    br %r14
2010  %cmp0 = icmp eq <2 x i8> %val1, %val2
2011  %cmp1 = icmp eq <2 x i64> %val3, %val4
2012  %and = or <2 x i1> %cmp0, %cmp1
2013  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
2014  ret <2 x i32> %sel
2015}
2016
2017define <2 x i16> @fun70(<2 x i8> %val1, <2 x i8> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i16> %val5, <2 x i16> %val6) {
2018; CHECK-LABEL: fun70:
2019; CHECK:       # BB#0:
2020; CHECK-NEXT:    vmrlf %v0, %v30, %v30
2021; CHECK-NEXT:    vmrlf %v1, %v28, %v28
2022; CHECK-NEXT:    vldeb %v0, %v0
2023; CHECK-NEXT:    vldeb %v1, %v1
2024; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2025; CHECK-NEXT:    vmrhf %v1, %v30, %v30
2026; CHECK-NEXT:    vmrhf %v2, %v28, %v28
2027; CHECK-NEXT:    vldeb %v1, %v1
2028; CHECK-NEXT:    vldeb %v2, %v2
2029; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2030; CHECK-NEXT:    vpkg %v0, %v1, %v0
2031; CHECK-NEXT:    vceqb %v1, %v24, %v26
2032; CHECK-NEXT:    vpkf %v0, %v0, %v0
2033; CHECK-NEXT:    vuphb %v1, %v1
2034; CHECK-NEXT:    vo %v0, %v1, %v0
2035; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2036; CHECK-NEXT:    br %r14
2037  %cmp0 = icmp eq <2 x i8> %val1, %val2
2038  %cmp1 = fcmp ogt <2 x float> %val3, %val4
2039  %and = or <2 x i1> %cmp0, %cmp1
2040  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
2041  ret <2 x i16> %sel
2042}
2043
2044define <2 x i64> @fun71(<2 x i8> %val1, <2 x i8> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i64> %val5, <2 x i64> %val6) {
2045; CHECK-LABEL: fun71:
2046; CHECK:       # BB#0:
2047; CHECK-NEXT:    vceqb %v1, %v24, %v26
2048; CHECK-NEXT:    vuphb %v1, %v1
2049; CHECK-NEXT:    vuphh %v1, %v1
2050; CHECK-NEXT:    vfchdb %v0, %v28, %v30
2051; CHECK-NEXT:    vuphf %v1, %v1
2052; CHECK-NEXT:    vo %v0, %v1, %v0
2053; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2054; CHECK-NEXT:    br %r14
2055  %cmp0 = icmp eq <2 x i8> %val1, %val2
2056  %cmp1 = fcmp ogt <2 x double> %val3, %val4
2057  %and = or <2 x i1> %cmp0, %cmp1
2058  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
2059  ret <2 x i64> %sel
2060}
2061
2062define <2 x i8> @fun72(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i8> %val5, <2 x i8> %val6) {
2063; CHECK-LABEL: fun72:
2064; CHECK:       # BB#0:
2065; CHECK-NEXT:    vceqh %v0, %v28, %v30
2066; CHECK-NEXT:    vceqh %v1, %v24, %v26
2067; CHECK-NEXT:    vo %v0, %v1, %v0
2068; CHECK-NEXT:    vpkh %v0, %v0, %v0
2069; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2070; CHECK-NEXT:    br %r14
2071  %cmp0 = icmp eq <2 x i16> %val1, %val2
2072  %cmp1 = icmp eq <2 x i16> %val3, %val4
2073  %and = or <2 x i1> %cmp0, %cmp1
2074  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
2075  ret <2 x i8> %sel
2076}
2077
2078define <2 x i16> @fun73(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i16> %val5, <2 x i16> %val6) {
2079; CHECK-LABEL: fun73:
2080; CHECK:       # BB#0:
2081; CHECK-NEXT:    vceqh %v0, %v28, %v30
2082; CHECK-NEXT:    vceqh %v1, %v24, %v26
2083; CHECK-NEXT:    vo %v0, %v1, %v0
2084; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2085; CHECK-NEXT:    br %r14
2086  %cmp0 = icmp eq <2 x i16> %val1, %val2
2087  %cmp1 = icmp eq <2 x i16> %val3, %val4
2088  %and = or <2 x i1> %cmp0, %cmp1
2089  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
2090  ret <2 x i16> %sel
2091}
2092
2093define <2 x i32> @fun74(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i32> %val5, <2 x i32> %val6) {
2094; CHECK-LABEL: fun74:
2095; CHECK:       # BB#0:
2096; CHECK-NEXT:    vceqh %v0, %v28, %v30
2097; CHECK-NEXT:    vceqh %v1, %v24, %v26
2098; CHECK-NEXT:    vo %v0, %v1, %v0
2099; CHECK-NEXT:    vuphh %v0, %v0
2100; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2101; CHECK-NEXT:    br %r14
2102  %cmp0 = icmp eq <2 x i16> %val1, %val2
2103  %cmp1 = icmp eq <2 x i16> %val3, %val4
2104  %and = or <2 x i1> %cmp0, %cmp1
2105  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
2106  ret <2 x i32> %sel
2107}
2108
2109define <2 x i8> @fun75(<2 x i16> %val1, <2 x i16> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i8> %val5, <2 x i8> %val6) {
2110; CHECK-LABEL: fun75:
2111; CHECK:       # BB#0:
2112; CHECK-NEXT:    vceqf %v1, %v28, %v30
2113; CHECK-NEXT:    vceqh %v0, %v24, %v26
2114; CHECK-NEXT:    vpkf %v1, %v1, %v1
2115; CHECK-NEXT:    vo %v0, %v0, %v1
2116; CHECK-NEXT:    vpkh %v0, %v0, %v0
2117; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2118; CHECK-NEXT:    br %r14
2119  %cmp0 = icmp eq <2 x i16> %val1, %val2
2120  %cmp1 = icmp eq <2 x i32> %val3, %val4
2121  %and = or <2 x i1> %cmp0, %cmp1
2122  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
2123  ret <2 x i8> %sel
2124}
2125
2126define <2 x i8> @fun76(<2 x i16> %val1, <2 x i16> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i8> %val5, <2 x i8> %val6) {
2127; CHECK-LABEL: fun76:
2128; CHECK:       # BB#0:
2129; CHECK-NEXT:    larl %r1, .LCPI76_0
2130; CHECK-NEXT:    vl %v1, 0(%r1)
2131; CHECK-NEXT:    vceqg %v0, %v28, %v30
2132; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
2133; CHECK-NEXT:    vceqh %v1, %v24, %v26
2134; CHECK-NEXT:    vo %v0, %v1, %v0
2135; CHECK-NEXT:    vpkh %v0, %v0, %v0
2136; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2137; CHECK-NEXT:    br %r14
2138  %cmp0 = icmp eq <2 x i16> %val1, %val2
2139  %cmp1 = icmp eq <2 x i64> %val3, %val4
2140  %and = or <2 x i1> %cmp0, %cmp1
2141  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
2142  ret <2 x i8> %sel
2143}
2144
2145define <2 x double> @fun77(<2 x i16> %val1, <2 x i16> %val2, <2 x float> %val3, <2 x float> %val4, <2 x double> %val5, <2 x double> %val6) {
2146; CHECK-LABEL: fun77:
2147; CHECK:       # BB#0:
2148; CHECK-NEXT:    vmrlf %v0, %v30, %v30
2149; CHECK-NEXT:    vmrlf %v1, %v28, %v28
2150; CHECK-NEXT:    vldeb %v0, %v0
2151; CHECK-NEXT:    vldeb %v1, %v1
2152; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2153; CHECK-NEXT:    vmrhf %v1, %v30, %v30
2154; CHECK-NEXT:    vmrhf %v2, %v28, %v28
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:    vceqh %v1, %v24, %v26
2160; CHECK-NEXT:    vuphh %v1, %v1
2161; CHECK-NEXT:    vo %v0, %v1, %v0
2162; CHECK-NEXT:    vuphf %v0, %v0
2163; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2164; CHECK-NEXT:    br %r14
2165  %cmp0 = icmp eq <2 x i16> %val1, %val2
2166  %cmp1 = fcmp ogt <2 x float> %val3, %val4
2167  %and = or <2 x i1> %cmp0, %cmp1
2168  %sel = select <2 x i1> %and, <2 x double> %val5, <2 x double> %val6
2169  ret <2 x double> %sel
2170}
2171
2172define <2 x i16> @fun78(<2 x i16> %val1, <2 x i16> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i16> %val5, <2 x i16> %val6) {
2173; CHECK-LABEL: fun78:
2174; CHECK:       # BB#0:
2175; CHECK-NEXT:    larl %r1, .LCPI78_0
2176; CHECK-NEXT:    vl %v1, 0(%r1)
2177; CHECK-NEXT:    vfchdb %v0, %v28, %v30
2178; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
2179; CHECK-NEXT:    vceqh %v1, %v24, %v26
2180; CHECK-NEXT:    vo %v0, %v1, %v0
2181; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2182; CHECK-NEXT:    br %r14
2183  %cmp0 = icmp eq <2 x i16> %val1, %val2
2184  %cmp1 = fcmp ogt <2 x double> %val3, %val4
2185  %and = or <2 x i1> %cmp0, %cmp1
2186  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
2187  ret <2 x i16> %sel
2188}
2189
2190define <2 x i16> @fun79(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i16> %val5, <2 x i16> %val6) {
2191; CHECK-LABEL: fun79:
2192; CHECK:       # BB#0:
2193; CHECK-NEXT:    vceqf %v0, %v28, %v30
2194; CHECK-NEXT:    vceqf %v1, %v24, %v26
2195; CHECK-NEXT:    vo %v0, %v1, %v0
2196; CHECK-NEXT:    vpkf %v0, %v0, %v0
2197; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2198; CHECK-NEXT:    br %r14
2199  %cmp0 = icmp eq <2 x i32> %val1, %val2
2200  %cmp1 = icmp eq <2 x i32> %val3, %val4
2201  %and = or <2 x i1> %cmp0, %cmp1
2202  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
2203  ret <2 x i16> %sel
2204}
2205
2206define <2 x i32> @fun80(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i32> %val5, <2 x i32> %val6) {
2207; CHECK-LABEL: fun80:
2208; CHECK:       # BB#0:
2209; CHECK-NEXT:    vceqf %v0, %v28, %v30
2210; CHECK-NEXT:    vceqf %v1, %v24, %v26
2211; CHECK-NEXT:    vo %v0, %v1, %v0
2212; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2213; CHECK-NEXT:    br %r14
2214  %cmp0 = icmp eq <2 x i32> %val1, %val2
2215  %cmp1 = icmp eq <2 x i32> %val3, %val4
2216  %and = or <2 x i1> %cmp0, %cmp1
2217  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
2218  ret <2 x i32> %sel
2219}
2220
2221define <2 x i64> @fun81(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i64> %val5, <2 x i64> %val6) {
2222; CHECK-LABEL: fun81:
2223; CHECK:       # BB#0:
2224; CHECK-NEXT:    vceqf %v0, %v28, %v30
2225; CHECK-NEXT:    vceqf %v1, %v24, %v26
2226; CHECK-NEXT:    vo %v0, %v1, %v0
2227; CHECK-NEXT:    vuphf %v0, %v0
2228; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2229; CHECK-NEXT:    br %r14
2230  %cmp0 = icmp eq <2 x i32> %val1, %val2
2231  %cmp1 = icmp eq <2 x i32> %val3, %val4
2232  %and = or <2 x i1> %cmp0, %cmp1
2233  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
2234  ret <2 x i64> %sel
2235}
2236
2237define <2 x i64> @fun82(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) {
2238; CHECK-LABEL: fun82:
2239; CHECK:       # BB#0:
2240; CHECK-NEXT:    vceqf %v1, %v24, %v26
2241; CHECK-NEXT:    vceqg %v0, %v28, %v30
2242; CHECK-NEXT:    vuphf %v1, %v1
2243; CHECK-NEXT:    vo %v0, %v1, %v0
2244; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2245; CHECK-NEXT:    br %r14
2246  %cmp0 = icmp eq <2 x i32> %val1, %val2
2247  %cmp1 = icmp eq <2 x i64> %val3, %val4
2248  %and = or <2 x i1> %cmp0, %cmp1
2249  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
2250  ret <2 x i64> %sel
2251}
2252
2253define <2 x i16> @fun83(<2 x i32> %val1, <2 x i32> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i16> %val5, <2 x i16> %val6) {
2254; CHECK-LABEL: fun83:
2255; CHECK:       # BB#0:
2256; CHECK-NEXT:    vmrlf %v0, %v30, %v30
2257; CHECK-NEXT:    vmrlf %v1, %v28, %v28
2258; CHECK-NEXT:    vldeb %v0, %v0
2259; CHECK-NEXT:    vldeb %v1, %v1
2260; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2261; CHECK-NEXT:    vmrhf %v1, %v30, %v30
2262; CHECK-NEXT:    vmrhf %v2, %v28, %v28
2263; CHECK-NEXT:    vldeb %v1, %v1
2264; CHECK-NEXT:    vldeb %v2, %v2
2265; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2266; CHECK-NEXT:    vpkg %v0, %v1, %v0
2267; CHECK-NEXT:    vceqf %v1, %v24, %v26
2268; CHECK-NEXT:    vo %v0, %v1, %v0
2269; CHECK-NEXT:    vpkf %v0, %v0, %v0
2270; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2271; CHECK-NEXT:    br %r14
2272  %cmp0 = icmp eq <2 x i32> %val1, %val2
2273  %cmp1 = fcmp ogt <2 x float> %val3, %val4
2274  %and = or <2 x i1> %cmp0, %cmp1
2275  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
2276  ret <2 x i16> %sel
2277}
2278
2279define <2 x float> @fun84(<2 x i32> %val1, <2 x i32> %val2, <2 x double> %val3, <2 x double> %val4, <2 x float> %val5, <2 x float> %val6) {
2280; CHECK-LABEL: fun84:
2281; CHECK:       # BB#0:
2282; CHECK-NEXT:    vfchdb %v1, %v28, %v30
2283; CHECK-NEXT:    vceqf %v0, %v24, %v26
2284; CHECK-NEXT:    vpkg %v1, %v1, %v1
2285; CHECK-NEXT:    vo %v0, %v0, %v1
2286; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2287; CHECK-NEXT:    br %r14
2288  %cmp0 = icmp eq <2 x i32> %val1, %val2
2289  %cmp1 = fcmp ogt <2 x double> %val3, %val4
2290  %and = or <2 x i1> %cmp0, %cmp1
2291  %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6
2292  ret <2 x float> %sel
2293}
2294
2295define <2 x i16> @fun85(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i16> %val5, <2 x i16> %val6) {
2296; CHECK-LABEL: fun85:
2297; CHECK:       # BB#0:
2298; CHECK-NEXT:    vceqg %v0, %v28, %v30
2299; CHECK-NEXT:    vceqg %v1, %v24, %v26
2300; CHECK-NEXT:    larl %r1, .LCPI85_0
2301; CHECK-NEXT:    vo %v0, %v1, %v0
2302; CHECK-NEXT:    vl %v1, 0(%r1)
2303; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
2304; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2305; CHECK-NEXT:    br %r14
2306  %cmp0 = icmp eq <2 x i64> %val1, %val2
2307  %cmp1 = icmp eq <2 x i64> %val3, %val4
2308  %and = or <2 x i1> %cmp0, %cmp1
2309  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
2310  ret <2 x i16> %sel
2311}
2312
2313define <2 x i64> @fun86(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) {
2314; CHECK-LABEL: fun86:
2315; CHECK:       # BB#0:
2316; CHECK-NEXT:    vceqg %v0, %v28, %v30
2317; CHECK-NEXT:    vceqg %v1, %v24, %v26
2318; CHECK-NEXT:    vo %v0, %v1, %v0
2319; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2320; CHECK-NEXT:    br %r14
2321  %cmp0 = icmp eq <2 x i64> %val1, %val2
2322  %cmp1 = icmp eq <2 x i64> %val3, %val4
2323  %and = or <2 x i1> %cmp0, %cmp1
2324  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
2325  ret <2 x i64> %sel
2326}
2327
2328define <2 x i64> @fun87(<2 x i64> %val1, <2 x i64> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i64> %val5, <2 x i64> %val6) {
2329; CHECK-LABEL: fun87:
2330; CHECK:       # BB#0:
2331; CHECK-NEXT:    vmrlf %v0, %v30, %v30
2332; CHECK-NEXT:    vmrlf %v1, %v28, %v28
2333; CHECK-NEXT:    vldeb %v0, %v0
2334; CHECK-NEXT:    vldeb %v1, %v1
2335; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2336; CHECK-NEXT:    vmrhf %v1, %v30, %v30
2337; CHECK-NEXT:    vmrhf %v2, %v28, %v28
2338; CHECK-NEXT:    vldeb %v1, %v1
2339; CHECK-NEXT:    vldeb %v2, %v2
2340; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2341; CHECK-NEXT:    vpkg %v0, %v1, %v0
2342; CHECK-NEXT:    vuphf %v0, %v0
2343; CHECK-NEXT:    vceqg %v1, %v24, %v26
2344; CHECK-NEXT:    vo %v0, %v1, %v0
2345; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2346; CHECK-NEXT:    br %r14
2347  %cmp0 = icmp eq <2 x i64> %val1, %val2
2348  %cmp1 = fcmp ogt <2 x float> %val3, %val4
2349  %and = or <2 x i1> %cmp0, %cmp1
2350  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
2351  ret <2 x i64> %sel
2352}
2353
2354define <2 x i16> @fun88(<2 x i64> %val1, <2 x i64> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i16> %val5, <2 x i16> %val6) {
2355; CHECK-LABEL: fun88:
2356; CHECK:       # BB#0:
2357; CHECK-NEXT:    vfchdb %v0, %v28, %v30
2358; CHECK-NEXT:    vceqg %v1, %v24, %v26
2359; CHECK-NEXT:    larl %r1, .LCPI88_0
2360; CHECK-NEXT:    vo %v0, %v1, %v0
2361; CHECK-NEXT:    vl %v1, 0(%r1)
2362; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
2363; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2364; CHECK-NEXT:    br %r14
2365  %cmp0 = icmp eq <2 x i64> %val1, %val2
2366  %cmp1 = fcmp ogt <2 x double> %val3, %val4
2367  %and = or <2 x i1> %cmp0, %cmp1
2368  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
2369  ret <2 x i16> %sel
2370}
2371
2372define <2 x float> @fun89(<2 x float> %val1, <2 x float> %val2, <2 x float> %val3, <2 x float> %val4, <2 x float> %val5, <2 x float> %val6) {
2373; CHECK-LABEL: fun89:
2374; CHECK:       # BB#0:
2375; CHECK-NEXT:    vmrlf %v0, %v30, %v30
2376; CHECK-NEXT:    vmrlf %v1, %v28, %v28
2377; CHECK-NEXT:    vldeb %v0, %v0
2378; CHECK-NEXT:    vldeb %v1, %v1
2379; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2380; CHECK-NEXT:    vmrhf %v1, %v30, %v30
2381; CHECK-NEXT:    vmrhf %v2, %v28, %v28
2382; CHECK-NEXT:    vldeb %v1, %v1
2383; CHECK-NEXT:    vmrhf %v3, %v24, %v24
2384; CHECK-NEXT:    vldeb %v2, %v2
2385; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2386; CHECK-NEXT:    vpkg %v0, %v1, %v0
2387; CHECK-NEXT:    vmrlf %v1, %v26, %v26
2388; CHECK-NEXT:    vmrlf %v2, %v24, %v24
2389; CHECK-NEXT:    vldeb %v1, %v1
2390; CHECK-NEXT:    vldeb %v2, %v2
2391; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2392; CHECK-NEXT:    vmrhf %v2, %v26, %v26
2393; CHECK-NEXT:    vldeb %v2, %v2
2394; CHECK-NEXT:    vldeb %v3, %v3
2395; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2396; CHECK-NEXT:    vpkg %v1, %v2, %v1
2397; CHECK-NEXT:    vo %v0, %v1, %v0
2398; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2399; CHECK-NEXT:    br %r14
2400  %cmp0 = fcmp ogt <2 x float> %val1, %val2
2401  %cmp1 = fcmp ogt <2 x float> %val3, %val4
2402  %and = or <2 x i1> %cmp0, %cmp1
2403  %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6
2404  ret <2 x float> %sel
2405}
2406
2407define <2 x i32> @fun90(<2 x float> %val1, <2 x float> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i32> %val5, <2 x i32> %val6) {
2408; CHECK-LABEL: fun90:
2409; CHECK:       # BB#0:
2410; CHECK-NEXT:    vmrlf %v0, %v26, %v26
2411; CHECK-NEXT:    vmrlf %v1, %v24, %v24
2412; CHECK-NEXT:    vldeb %v0, %v0
2413; CHECK-NEXT:    vldeb %v1, %v1
2414; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2415; CHECK-NEXT:    vmrhf %v1, %v26, %v26
2416; CHECK-NEXT:    vmrhf %v2, %v24, %v24
2417; CHECK-NEXT:    vldeb %v1, %v1
2418; CHECK-NEXT:    vldeb %v2, %v2
2419; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2420; CHECK-NEXT:    vpkg %v0, %v1, %v0
2421; CHECK-NEXT:    vfchdb %v1, %v28, %v30
2422; CHECK-NEXT:    vpkg %v1, %v1, %v1
2423; CHECK-NEXT:    vo %v0, %v0, %v1
2424; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2425; CHECK-NEXT:    br %r14
2426  %cmp0 = fcmp ogt <2 x float> %val1, %val2
2427  %cmp1 = fcmp ogt <2 x double> %val3, %val4
2428  %and = or <2 x i1> %cmp0, %cmp1
2429  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
2430  ret <2 x i32> %sel
2431}
2432
2433define <4 x i16> @fun91(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i16> %val5, <4 x i16> %val6) {
2434; CHECK-LABEL: fun91:
2435; CHECK:       # BB#0:
2436; CHECK-NEXT:    vceqf %v0, %v28, %v30
2437; CHECK-NEXT:    vceqf %v1, %v24, %v26
2438; CHECK-NEXT:    vo %v0, %v1, %v0
2439; CHECK-NEXT:    vpkf %v0, %v0, %v0
2440; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2441; CHECK-NEXT:    br %r14
2442  %cmp0 = icmp eq <4 x i32> %val1, %val2
2443  %cmp1 = icmp eq <4 x i32> %val3, %val4
2444  %and = or <4 x i1> %cmp0, %cmp1
2445  %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6
2446  ret <4 x i16> %sel
2447}
2448
2449define <4 x i32> @fun92(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i32> %val5, <4 x i32> %val6) {
2450; CHECK-LABEL: fun92:
2451; CHECK:       # BB#0:
2452; CHECK-NEXT:    vceqf %v0, %v28, %v30
2453; CHECK-NEXT:    vceqf %v1, %v24, %v26
2454; CHECK-NEXT:    vo %v0, %v1, %v0
2455; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2456; CHECK-NEXT:    br %r14
2457  %cmp0 = icmp eq <4 x i32> %val1, %val2
2458  %cmp1 = icmp eq <4 x i32> %val3, %val4
2459  %and = or <4 x i1> %cmp0, %cmp1
2460  %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6
2461  ret <4 x i32> %sel
2462}
2463
2464define <4 x i64> @fun93(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i64> %val5, <4 x i64> %val6) {
2465; CHECK-LABEL: fun93:
2466; CHECK:       # BB#0:
2467; CHECK-NEXT:    vceqf %v0, %v28, %v30
2468; CHECK-NEXT:    vceqf %v1, %v24, %v26
2469; CHECK-NEXT:    vo %v0, %v1, %v0
2470; CHECK-NEXT:    vuphf %v1, %v0
2471; CHECK-NEXT:    vmrlg %v0, %v0, %v0
2472; CHECK-NEXT:    vuphf %v0, %v0
2473; CHECK-NEXT:    vsel %v24, %v25, %v29, %v1
2474; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
2475; CHECK-NEXT:    br %r14
2476  %cmp0 = icmp eq <4 x i32> %val1, %val2
2477  %cmp1 = icmp eq <4 x i32> %val3, %val4
2478  %and = or <4 x i1> %cmp0, %cmp1
2479  %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6
2480  ret <4 x i64> %sel
2481}
2482
2483define <4 x i32> @fun94(<4 x i32> %val1, <4 x i32> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i32> %val5, <4 x i32> %val6) {
2484; CHECK-LABEL: fun94:
2485; CHECK:       # BB#0:
2486; CHECK-NEXT:    vceqg %v0, %v30, %v27
2487; CHECK-NEXT:    vceqg %v1, %v28, %v25
2488; CHECK-NEXT:    vpkg %v0, %v1, %v0
2489; CHECK-NEXT:    vceqf %v1, %v24, %v26
2490; CHECK-NEXT:    vo %v0, %v1, %v0
2491; CHECK-NEXT:    vsel %v24, %v29, %v31, %v0
2492; CHECK-NEXT:    br %r14
2493  %cmp0 = icmp eq <4 x i32> %val1, %val2
2494  %cmp1 = icmp eq <4 x i64> %val3, %val4
2495  %and = or <4 x i1> %cmp0, %cmp1
2496  %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6
2497  ret <4 x i32> %sel
2498}
2499
2500define <4 x i16> @fun95(<4 x i32> %val1, <4 x i32> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i16> %val5, <4 x i16> %val6) {
2501; CHECK-LABEL: fun95:
2502; CHECK:       # BB#0:
2503; CHECK-NEXT:    vmrlf %v0, %v30, %v30
2504; CHECK-NEXT:    vmrlf %v1, %v28, %v28
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:    vmrhf %v2, %v28, %v28
2510; CHECK-NEXT:    vldeb %v1, %v1
2511; CHECK-NEXT:    vldeb %v2, %v2
2512; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2513; CHECK-NEXT:    vpkg %v0, %v1, %v0
2514; CHECK-NEXT:    vceqf %v1, %v24, %v26
2515; CHECK-NEXT:    vo %v0, %v1, %v0
2516; CHECK-NEXT:    vpkf %v0, %v0, %v0
2517; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2518; CHECK-NEXT:    br %r14
2519  %cmp0 = icmp eq <4 x i32> %val1, %val2
2520  %cmp1 = fcmp ogt <4 x float> %val3, %val4
2521  %and = or <4 x i1> %cmp0, %cmp1
2522  %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6
2523  ret <4 x i16> %sel
2524}
2525
2526define <4 x i8> @fun96(<4 x i32> %val1, <4 x i32> %val2, <4 x double> %val3, <4 x double> %val4, <4 x i8> %val5, <4 x i8> %val6) {
2527; CHECK-LABEL: fun96:
2528; CHECK:       # BB#0:
2529; CHECK-NEXT:    vfchdb %v0, %v30, %v27
2530; CHECK-NEXT:    vfchdb %v1, %v28, %v25
2531; CHECK-NEXT:    vpkg %v0, %v1, %v0
2532; CHECK-NEXT:    vceqf %v1, %v24, %v26
2533; CHECK-NEXT:    larl %r1, .LCPI96_0
2534; CHECK-NEXT:    vo %v0, %v1, %v0
2535; CHECK-NEXT:    vl %v1, 0(%r1)
2536; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
2537; CHECK-NEXT:    vsel %v24, %v29, %v31, %v0
2538; CHECK-NEXT:    br %r14
2539  %cmp0 = icmp eq <4 x i32> %val1, %val2
2540  %cmp1 = fcmp ogt <4 x double> %val3, %val4
2541  %and = or <4 x i1> %cmp0, %cmp1
2542  %sel = select <4 x i1> %and, <4 x i8> %val5, <4 x i8> %val6
2543  ret <4 x i8> %sel
2544}
2545
2546define <4 x i32> @fun97(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i32> %val5, <4 x i32> %val6) {
2547; CHECK-LABEL: fun97:
2548; CHECK:       # BB#0:
2549; CHECK-NEXT:    vceqg %v0, %v27, %v31
2550; CHECK-NEXT:    vceqg %v1, %v26, %v30
2551; CHECK-NEXT:    vo %v0, %v1, %v0
2552; CHECK-NEXT:    vceqg %v1, %v25, %v29
2553; CHECK-NEXT:    vceqg %v2, %v24, %v28
2554; CHECK-NEXT:    vo %v1, %v2, %v1
2555; CHECK-NEXT:    vpkg %v0, %v1, %v0
2556; CHECK-NEXT:    vl %v1, 176(%r15)
2557; CHECK-NEXT:    vl %v2, 160(%r15)
2558; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2559; CHECK-NEXT:    br %r14
2560  %cmp0 = icmp eq <4 x i64> %val1, %val2
2561  %cmp1 = icmp eq <4 x i64> %val3, %val4
2562  %and = or <4 x i1> %cmp0, %cmp1
2563  %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6
2564  ret <4 x i32> %sel
2565}
2566
2567define <4 x i64> @fun98(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i64> %val5, <4 x i64> %val6) {
2568; CHECK-LABEL: fun98:
2569; CHECK:       # BB#0:
2570; CHECK-NEXT:    vceqg %v0, %v25, %v29
2571; CHECK-NEXT:    vceqg %v1, %v24, %v28
2572; CHECK-NEXT:    vo %v0, %v1, %v0
2573; CHECK-NEXT:    vl %v1, 192(%r15)
2574; CHECK-NEXT:    vl %v2, 160(%r15)
2575; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2576; CHECK-NEXT:    vceqg %v0, %v27, %v31
2577; CHECK-NEXT:    vceqg %v1, %v26, %v30
2578; CHECK-NEXT:    vo %v0, %v1, %v0
2579; CHECK-NEXT:    vl %v1, 208(%r15)
2580; CHECK-NEXT:    vl %v2, 176(%r15)
2581; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
2582; CHECK-NEXT:    br %r14
2583  %cmp0 = icmp eq <4 x i64> %val1, %val2
2584  %cmp1 = icmp eq <4 x i64> %val3, %val4
2585  %and = or <4 x i1> %cmp0, %cmp1
2586  %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6
2587  ret <4 x i64> %sel
2588}
2589
2590define <4 x i64> @fun99(<4 x i64> %val1, <4 x i64> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i64> %val5, <4 x i64> %val6) {
2591; CHECK-LABEL: fun99:
2592; CHECK:       # BB#0:
2593; CHECK-NEXT:    vmrlf %v0, %v27, %v27
2594; CHECK-NEXT:    vmrlf %v1, %v25, %v25
2595; CHECK-NEXT:    vldeb %v0, %v0
2596; CHECK-NEXT:    vldeb %v1, %v1
2597; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2598; CHECK-NEXT:    vmrhf %v1, %v27, %v27
2599; CHECK-NEXT:    vmrhf %v2, %v25, %v25
2600; CHECK-NEXT:    vldeb %v1, %v1
2601; CHECK-NEXT:    vldeb %v2, %v2
2602; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2603; CHECK-NEXT:    vpkg %v0, %v1, %v0
2604; CHECK-NEXT:    vuphf %v1, %v0
2605; CHECK-NEXT:    vceqg %v2, %v24, %v28
2606; CHECK-NEXT:    vo %v1, %v2, %v1
2607; CHECK-NEXT:    vl %v2, 160(%r15)
2608; CHECK-NEXT:    vmrlg %v0, %v0, %v0
2609; CHECK-NEXT:    vsel %v24, %v29, %v2, %v1
2610; CHECK-NEXT:    vuphf %v0, %v0
2611; CHECK-NEXT:    vceqg %v1, %v26, %v30
2612; CHECK-NEXT:    vo %v0, %v1, %v0
2613; CHECK-NEXT:    vl %v1, 176(%r15)
2614; CHECK-NEXT:    vsel %v26, %v31, %v1, %v0
2615; CHECK-NEXT:    br %r14
2616  %cmp0 = icmp eq <4 x i64> %val1, %val2
2617  %cmp1 = fcmp ogt <4 x float> %val3, %val4
2618  %and = or <4 x i1> %cmp0, %cmp1
2619  %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6
2620  ret <4 x i64> %sel
2621}
2622
2623define <4 x float> @fun100(<4 x i64> %val1, <4 x i64> %val2, <4 x double> %val3, <4 x double> %val4, <4 x float> %val5, <4 x float> %val6) {
2624; CHECK-LABEL: fun100:
2625; CHECK:       # BB#0:
2626; CHECK-NEXT:    vfchdb %v0, %v27, %v31
2627; CHECK-NEXT:    vceqg %v1, %v26, %v30
2628; CHECK-NEXT:    vo %v0, %v1, %v0
2629; CHECK-NEXT:    vfchdb %v1, %v25, %v29
2630; CHECK-NEXT:    vceqg %v2, %v24, %v28
2631; CHECK-NEXT:    vo %v1, %v2, %v1
2632; CHECK-NEXT:    vpkg %v0, %v1, %v0
2633; CHECK-NEXT:    vl %v1, 176(%r15)
2634; CHECK-NEXT:    vl %v2, 160(%r15)
2635; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2636; CHECK-NEXT:    br %r14
2637  %cmp0 = icmp eq <4 x i64> %val1, %val2
2638  %cmp1 = fcmp ogt <4 x double> %val3, %val4
2639  %and = or <4 x i1> %cmp0, %cmp1
2640  %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6
2641  ret <4 x float> %sel
2642}
2643
2644define <4 x i16> @fun101(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i16> %val5, <4 x i16> %val6) {
2645; CHECK-LABEL: fun101:
2646; CHECK:       # BB#0:
2647; CHECK-NEXT:    vmrlf %v0, %v30, %v30
2648; CHECK-NEXT:    vmrlf %v1, %v28, %v28
2649; CHECK-NEXT:    vldeb %v0, %v0
2650; CHECK-NEXT:    vldeb %v1, %v1
2651; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2652; CHECK-NEXT:    vmrhf %v1, %v30, %v30
2653; CHECK-NEXT:    vmrhf %v2, %v28, %v28
2654; CHECK-NEXT:    vldeb %v1, %v1
2655; CHECK-NEXT:    vmrhf %v3, %v24, %v24
2656; CHECK-NEXT:    vldeb %v2, %v2
2657; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2658; CHECK-NEXT:    vpkg %v0, %v1, %v0
2659; CHECK-NEXT:    vmrlf %v1, %v26, %v26
2660; CHECK-NEXT:    vmrlf %v2, %v24, %v24
2661; CHECK-NEXT:    vldeb %v1, %v1
2662; CHECK-NEXT:    vldeb %v2, %v2
2663; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2664; CHECK-NEXT:    vmrhf %v2, %v26, %v26
2665; CHECK-NEXT:    vldeb %v2, %v2
2666; CHECK-NEXT:    vldeb %v3, %v3
2667; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2668; CHECK-NEXT:    vpkg %v1, %v2, %v1
2669; CHECK-NEXT:    vo %v0, %v1, %v0
2670; CHECK-NEXT:    vpkf %v0, %v0, %v0
2671; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2672; CHECK-NEXT:    br %r14
2673  %cmp0 = fcmp ogt <4 x float> %val1, %val2
2674  %cmp1 = fcmp ogt <4 x float> %val3, %val4
2675  %and = or <4 x i1> %cmp0, %cmp1
2676  %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6
2677  ret <4 x i16> %sel
2678}
2679
2680define <4 x float> @fun102(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x float> %val5, <4 x float> %val6) {
2681; CHECK-LABEL: fun102:
2682; CHECK:       # BB#0:
2683; CHECK-NEXT:    vmrlf %v0, %v30, %v30
2684; CHECK-NEXT:    vmrlf %v1, %v28, %v28
2685; CHECK-NEXT:    vldeb %v0, %v0
2686; CHECK-NEXT:    vldeb %v1, %v1
2687; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2688; CHECK-NEXT:    vmrhf %v1, %v30, %v30
2689; CHECK-NEXT:    vmrhf %v2, %v28, %v28
2690; CHECK-NEXT:    vldeb %v1, %v1
2691; CHECK-NEXT:    vmrhf %v3, %v24, %v24
2692; CHECK-NEXT:    vldeb %v2, %v2
2693; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2694; CHECK-NEXT:    vpkg %v0, %v1, %v0
2695; CHECK-NEXT:    vmrlf %v1, %v26, %v26
2696; CHECK-NEXT:    vmrlf %v2, %v24, %v24
2697; CHECK-NEXT:    vldeb %v1, %v1
2698; CHECK-NEXT:    vldeb %v2, %v2
2699; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2700; CHECK-NEXT:    vmrhf %v2, %v26, %v26
2701; CHECK-NEXT:    vldeb %v2, %v2
2702; CHECK-NEXT:    vldeb %v3, %v3
2703; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2704; CHECK-NEXT:    vpkg %v1, %v2, %v1
2705; CHECK-NEXT:    vo %v0, %v1, %v0
2706; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2707; CHECK-NEXT:    br %r14
2708  %cmp0 = fcmp ogt <4 x float> %val1, %val2
2709  %cmp1 = fcmp ogt <4 x float> %val3, %val4
2710  %and = or <4 x i1> %cmp0, %cmp1
2711  %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6
2712  ret <4 x float> %sel
2713}
2714
2715define <4 x double> @fun103(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x double> %val5, <4 x double> %val6) {
2716; CHECK-LABEL: fun103:
2717; CHECK:       # BB#0:
2718; CHECK-NEXT:    vmrlf %v0, %v30, %v30
2719; CHECK-NEXT:    vmrlf %v1, %v28, %v28
2720; CHECK-NEXT:    vldeb %v0, %v0
2721; CHECK-NEXT:    vldeb %v1, %v1
2722; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2723; CHECK-NEXT:    vmrhf %v1, %v30, %v30
2724; CHECK-NEXT:    vmrhf %v2, %v28, %v28
2725; CHECK-NEXT:    vldeb %v1, %v1
2726; CHECK-NEXT:    vmrhf %v3, %v24, %v24
2727; CHECK-NEXT:    vldeb %v2, %v2
2728; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2729; CHECK-NEXT:    vpkg %v0, %v1, %v0
2730; CHECK-NEXT:    vmrlf %v1, %v26, %v26
2731; CHECK-NEXT:    vmrlf %v2, %v24, %v24
2732; CHECK-NEXT:    vldeb %v1, %v1
2733; CHECK-NEXT:    vldeb %v2, %v2
2734; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2735; CHECK-NEXT:    vmrhf %v2, %v26, %v26
2736; CHECK-NEXT:    vldeb %v2, %v2
2737; CHECK-NEXT:    vldeb %v3, %v3
2738; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2739; CHECK-NEXT:    vpkg %v1, %v2, %v1
2740; CHECK-NEXT:    vo %v0, %v1, %v0
2741; CHECK-NEXT:    vuphf %v1, %v0
2742; CHECK-NEXT:    vmrlg %v0, %v0, %v0
2743; CHECK-NEXT:    vuphf %v0, %v0
2744; CHECK-NEXT:    vsel %v24, %v25, %v29, %v1
2745; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
2746; CHECK-NEXT:    br %r14
2747  %cmp0 = fcmp ogt <4 x float> %val1, %val2
2748  %cmp1 = fcmp ogt <4 x float> %val3, %val4
2749  %and = or <4 x i1> %cmp0, %cmp1
2750  %sel = select <4 x i1> %and, <4 x double> %val5, <4 x double> %val6
2751  ret <4 x double> %sel
2752}
2753
2754define <4 x i8> @fun104(<4 x float> %val1, <4 x float> %val2, <4 x double> %val3, <4 x double> %val4, <4 x i8> %val5, <4 x i8> %val6) {
2755; CHECK-LABEL: fun104:
2756; CHECK:       # BB#0:
2757; CHECK-NEXT:    vfchdb %v0, %v30, %v27
2758; CHECK-NEXT:    vfchdb %v1, %v28, %v25
2759; CHECK-NEXT:    vpkg %v0, %v1, %v0
2760; CHECK-NEXT:    vmrlf %v1, %v26, %v26
2761; CHECK-NEXT:    vmrlf %v2, %v24, %v24
2762; CHECK-NEXT:    vldeb %v1, %v1
2763; CHECK-NEXT:    vldeb %v2, %v2
2764; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2765; CHECK-NEXT:    vmrhf %v2, %v26, %v26
2766; CHECK-NEXT:    vmrhf %v3, %v24, %v24
2767; CHECK-NEXT:    larl %r1, .LCPI104_0
2768; CHECK-NEXT:    vldeb %v2, %v2
2769; CHECK-NEXT:    vldeb %v3, %v3
2770; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2771; CHECK-NEXT:    vpkg %v1, %v2, %v1
2772; CHECK-NEXT:    vo %v0, %v1, %v0
2773; CHECK-NEXT:    vl %v1, 0(%r1)
2774; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
2775; CHECK-NEXT:    vsel %v24, %v29, %v31, %v0
2776; CHECK-NEXT:    br %r14
2777  %cmp0 = fcmp ogt <4 x float> %val1, %val2
2778  %cmp1 = fcmp ogt <4 x double> %val3, %val4
2779  %and = or <4 x i1> %cmp0, %cmp1
2780  %sel = select <4 x i1> %and, <4 x i8> %val5, <4 x i8> %val6
2781  ret <4 x i8> %sel
2782}
2783
2784define <8 x i8> @fun105(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i8> %val5, <8 x i8> %val6) {
2785; CHECK-LABEL: fun105:
2786; CHECK:       # BB#0:
2787; CHECK-NEXT:    vceqh %v0, %v28, %v30
2788; CHECK-NEXT:    vceqh %v1, %v24, %v26
2789; CHECK-NEXT:    vo %v0, %v1, %v0
2790; CHECK-NEXT:    vpkh %v0, %v0, %v0
2791; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2792; CHECK-NEXT:    br %r14
2793  %cmp0 = icmp eq <8 x i16> %val1, %val2
2794  %cmp1 = icmp eq <8 x i16> %val3, %val4
2795  %and = or <8 x i1> %cmp0, %cmp1
2796  %sel = select <8 x i1> %and, <8 x i8> %val5, <8 x i8> %val6
2797  ret <8 x i8> %sel
2798}
2799
2800define <8 x i16> @fun106(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i16> %val5, <8 x i16> %val6) {
2801; CHECK-LABEL: fun106:
2802; CHECK:       # BB#0:
2803; CHECK-NEXT:    vceqh %v0, %v28, %v30
2804; CHECK-NEXT:    vceqh %v1, %v24, %v26
2805; CHECK-NEXT:    vo %v0, %v1, %v0
2806; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
2807; CHECK-NEXT:    br %r14
2808  %cmp0 = icmp eq <8 x i16> %val1, %val2
2809  %cmp1 = icmp eq <8 x i16> %val3, %val4
2810  %and = or <8 x i1> %cmp0, %cmp1
2811  %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6
2812  ret <8 x i16> %sel
2813}
2814
2815define <8 x i32> @fun107(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i32> %val5, <8 x i32> %val6) {
2816; CHECK-LABEL: fun107:
2817; CHECK:       # BB#0:
2818; CHECK-NEXT:    vceqh %v0, %v28, %v30
2819; CHECK-NEXT:    vceqh %v1, %v24, %v26
2820; CHECK-NEXT:    vo %v0, %v1, %v0
2821; CHECK-NEXT:    vuphh %v1, %v0
2822; CHECK-NEXT:    vmrlg %v0, %v0, %v0
2823; CHECK-NEXT:    vuphh %v0, %v0
2824; CHECK-NEXT:    vsel %v24, %v25, %v29, %v1
2825; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
2826; CHECK-NEXT:    br %r14
2827  %cmp0 = icmp eq <8 x i16> %val1, %val2
2828  %cmp1 = icmp eq <8 x i16> %val3, %val4
2829  %and = or <8 x i1> %cmp0, %cmp1
2830  %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6
2831  ret <8 x i32> %sel
2832}
2833
2834define <8 x i64> @fun108(<8 x i16> %val1, <8 x i16> %val2, <8 x i32> %val3, <8 x i32> %val4, <8 x i64> %val5, <8 x i64> %val6) {
2835; CHECK-LABEL: fun108:
2836; CHECK:       # BB#0:
2837; CHECK-NEXT:    vceqh %v1, %v24, %v26
2838; CHECK-NEXT:    vceqf %v0, %v28, %v25
2839; CHECK-NEXT:    vuphh %v2, %v1
2840; CHECK-NEXT:    vo %v0, %v2, %v0
2841; CHECK-NEXT:    vl %v3, 192(%r15)
2842; CHECK-NEXT:    vuphf %v2, %v0
2843; CHECK-NEXT:    vmrlg %v0, %v0, %v0
2844; CHECK-NEXT:    vsel %v24, %v29, %v3, %v2
2845; CHECK-NEXT:    vl %v2, 208(%r15)
2846; CHECK-NEXT:    vuphf %v0, %v0
2847; CHECK-NEXT:    vmrlg %v1, %v1, %v1
2848; CHECK-NEXT:    vsel %v26, %v31, %v2, %v0
2849; CHECK-NEXT:    vceqf %v0, %v30, %v27
2850; CHECK-NEXT:    vuphh %v1, %v1
2851; CHECK-NEXT:    vo %v0, %v1, %v0
2852; CHECK-NEXT:    vl %v2, 224(%r15)
2853; CHECK-NEXT:    vl %v3, 160(%r15)
2854; CHECK-NEXT:    vuphf %v1, %v0
2855; CHECK-NEXT:    vmrlg %v0, %v0, %v0
2856; CHECK-NEXT:    vsel %v28, %v3, %v2, %v1
2857; CHECK-NEXT:    vl %v1, 240(%r15)
2858; CHECK-NEXT:    vl %v2, 176(%r15)
2859; CHECK-NEXT:    vuphf %v0, %v0
2860; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
2861; CHECK-NEXT:    br %r14
2862  %cmp0 = icmp eq <8 x i16> %val1, %val2
2863  %cmp1 = icmp eq <8 x i32> %val3, %val4
2864  %and = or <8 x i1> %cmp0, %cmp1
2865  %sel = select <8 x i1> %and, <8 x i64> %val5, <8 x i64> %val6
2866  ret <8 x i64> %sel
2867}
2868
2869define <8 x i8> @fun109(<8 x i16> %val1, <8 x i16> %val2, <8 x i64> %val3, <8 x i64> %val4, <8 x i8> %val5, <8 x i8> %val6) {
2870; CHECK-LABEL: fun109:
2871; CHECK:       # BB#0:
2872; CHECK-NEXT:    vl %v0, 176(%r15)
2873; CHECK-NEXT:    vl %v1, 160(%r15)
2874; CHECK-NEXT:    vceqg %v0, %v27, %v0
2875; CHECK-NEXT:    vceqg %v1, %v25, %v1
2876; CHECK-NEXT:    vpkg %v0, %v1, %v0
2877; CHECK-NEXT:    vceqg %v1, %v30, %v31
2878; CHECK-NEXT:    vceqg %v2, %v28, %v29
2879; CHECK-NEXT:    vpkg %v1, %v2, %v1
2880; CHECK-NEXT:    vpkf %v0, %v1, %v0
2881; CHECK-NEXT:    vceqh %v1, %v24, %v26
2882; CHECK-NEXT:    vo %v0, %v1, %v0
2883; CHECK-NEXT:    vlrepg %v1, 200(%r15)
2884; CHECK-NEXT:    vlrepg %v2, 192(%r15)
2885; CHECK-NEXT:    vpkh %v0, %v0, %v0
2886; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2887; CHECK-NEXT:    br %r14
2888  %cmp0 = icmp eq <8 x i16> %val1, %val2
2889  %cmp1 = icmp eq <8 x i64> %val3, %val4
2890  %and = or <8 x i1> %cmp0, %cmp1
2891  %sel = select <8 x i1> %and, <8 x i8> %val5, <8 x i8> %val6
2892  ret <8 x i8> %sel
2893}
2894
2895define <8 x i16> @fun110(<8 x i16> %val1, <8 x i16> %val2, <8 x float> %val3, <8 x float> %val4, <8 x i16> %val5, <8 x i16> %val6) {
2896; CHECK-LABEL: fun110:
2897; CHECK:       # BB#0:
2898; CHECK-NEXT:    vmrlf %v0, %v27, %v27
2899; CHECK-NEXT:    vmrlf %v1, %v30, %v30
2900; CHECK-NEXT:    vldeb %v0, %v0
2901; CHECK-NEXT:    vldeb %v1, %v1
2902; CHECK-NEXT:    vfchdb %v0, %v1, %v0
2903; CHECK-NEXT:    vmrhf %v1, %v27, %v27
2904; CHECK-NEXT:    vmrhf %v2, %v30, %v30
2905; CHECK-NEXT:    vldeb %v1, %v1
2906; CHECK-NEXT:    vmrhf %v3, %v28, %v28
2907; CHECK-NEXT:    vldeb %v2, %v2
2908; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2909; CHECK-NEXT:    vpkg %v0, %v1, %v0
2910; CHECK-NEXT:    vmrlf %v1, %v25, %v25
2911; CHECK-NEXT:    vmrlf %v2, %v28, %v28
2912; CHECK-NEXT:    vldeb %v1, %v1
2913; CHECK-NEXT:    vldeb %v2, %v2
2914; CHECK-NEXT:    vfchdb %v1, %v2, %v1
2915; CHECK-NEXT:    vmrhf %v2, %v25, %v25
2916; CHECK-NEXT:    vldeb %v2, %v2
2917; CHECK-NEXT:    vldeb %v3, %v3
2918; CHECK-NEXT:    vfchdb %v2, %v3, %v2
2919; CHECK-NEXT:    vpkg %v1, %v2, %v1
2920; CHECK-NEXT:    vpkf %v0, %v1, %v0
2921; CHECK-NEXT:    vceqh %v1, %v24, %v26
2922; CHECK-NEXT:    vo %v0, %v1, %v0
2923; CHECK-NEXT:    vsel %v24, %v29, %v31, %v0
2924; CHECK-NEXT:    br %r14
2925  %cmp0 = icmp eq <8 x i16> %val1, %val2
2926  %cmp1 = fcmp ogt <8 x float> %val3, %val4
2927  %and = or <8 x i1> %cmp0, %cmp1
2928  %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6
2929  ret <8 x i16> %sel
2930}
2931
2932define <8 x i32> @fun111(<8 x i16> %val1, <8 x i16> %val2, <8 x double> %val3, <8 x double> %val4, <8 x i32> %val5, <8 x i32> %val6) {
2933; CHECK-LABEL: fun111:
2934; CHECK:       # BB#0:
2935; CHECK-NEXT:    vfchdb %v0, %v30, %v31
2936; CHECK-NEXT:    vfchdb %v1, %v28, %v29
2937; CHECK-NEXT:    vpkg %v0, %v1, %v0
2938; CHECK-NEXT:    vceqh %v1, %v24, %v26
2939; CHECK-NEXT:    vuphh %v2, %v1
2940; CHECK-NEXT:    vo %v0, %v2, %v0
2941; CHECK-NEXT:    vl %v2, 224(%r15)
2942; CHECK-NEXT:    vl %v3, 192(%r15)
2943; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
2944; CHECK-NEXT:    vl %v0, 176(%r15)
2945; CHECK-NEXT:    vl %v2, 160(%r15)
2946; CHECK-NEXT:    vfchdb %v0, %v27, %v0
2947; CHECK-NEXT:    vfchdb %v2, %v25, %v2
2948; CHECK-NEXT:    vmrlg %v1, %v1, %v1
2949; CHECK-NEXT:    vpkg %v0, %v2, %v0
2950; CHECK-NEXT:    vuphh %v1, %v1
2951; CHECK-NEXT:    vo %v0, %v1, %v0
2952; CHECK-NEXT:    vl %v1, 240(%r15)
2953; CHECK-NEXT:    vl %v2, 208(%r15)
2954; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
2955; CHECK-NEXT:    br %r14
2956  %cmp0 = icmp eq <8 x i16> %val1, %val2
2957  %cmp1 = fcmp ogt <8 x double> %val3, %val4
2958  %and = or <8 x i1> %cmp0, %cmp1
2959  %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6
2960  ret <8 x i32> %sel
2961}
2962
2963define <8 x i32> @fun112(<8 x i32> %val1, <8 x i32> %val2, <8 x i64> %val3, <8 x i64> %val4, <8 x i32> %val5, <8 x i32> %val6) {
2964; CHECK-LABEL: fun112:
2965; CHECK:       # BB#0:
2966; CHECK-NEXT:    vl %v0, 176(%r15)
2967; CHECK-NEXT:    vl %v1, 160(%r15)
2968; CHECK-NEXT:    vceqg %v0, %v27, %v0
2969; CHECK-NEXT:    vceqg %v1, %v25, %v1
2970; CHECK-NEXT:    vpkg %v0, %v1, %v0
2971; CHECK-NEXT:    vceqf %v1, %v24, %v28
2972; CHECK-NEXT:    vo %v0, %v1, %v0
2973; CHECK-NEXT:    vl %v1, 256(%r15)
2974; CHECK-NEXT:    vl %v2, 224(%r15)
2975; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
2976; CHECK-NEXT:    vl %v0, 208(%r15)
2977; CHECK-NEXT:    vl %v1, 192(%r15)
2978; CHECK-NEXT:    vceqg %v0, %v31, %v0
2979; CHECK-NEXT:    vceqg %v1, %v29, %v1
2980; CHECK-NEXT:    vpkg %v0, %v1, %v0
2981; CHECK-NEXT:    vceqf %v1, %v26, %v30
2982; CHECK-NEXT:    vo %v0, %v1, %v0
2983; CHECK-NEXT:    vl %v1, 272(%r15)
2984; CHECK-NEXT:    vl %v2, 240(%r15)
2985; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
2986; CHECK-NEXT:    br %r14
2987  %cmp0 = icmp eq <8 x i32> %val1, %val2
2988  %cmp1 = icmp eq <8 x i64> %val3, %val4
2989  %and = or <8 x i1> %cmp0, %cmp1
2990  %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6
2991  ret <8 x i32> %sel
2992}
2993
2994define <8 x double> @fun113(<8 x i32> %val1, <8 x i32> %val2, <8 x float> %val3, <8 x float> %val4, <8 x double> %val5, <8 x double> %val6) {
2995; CHECK-LABEL: fun113:
2996; CHECK:       # BB#0:
2997; CHECK-NEXT:    vmrlf %v0, %v29, %v29
2998; CHECK-NEXT:    vmrlf %v1, %v25, %v25
2999; CHECK-NEXT:    vldeb %v0, %v0
3000; CHECK-NEXT:    vldeb %v1, %v1
3001; CHECK-NEXT:    vfchdb %v0, %v1, %v0
3002; CHECK-NEXT:    vmrhf %v1, %v29, %v29
3003; CHECK-NEXT:    vmrhf %v2, %v25, %v25
3004; CHECK-NEXT:    vldeb %v1, %v1
3005; CHECK-NEXT:    vl %v3, 160(%r15)
3006; CHECK-NEXT:    vldeb %v2, %v2
3007; CHECK-NEXT:    vl %v4, 192(%r15)
3008; CHECK-NEXT:    vfchdb %v1, %v2, %v1
3009; CHECK-NEXT:    vl %v2, 224(%r15)
3010; CHECK-NEXT:    vpkg %v0, %v1, %v0
3011; CHECK-NEXT:    vceqf %v1, %v24, %v28
3012; CHECK-NEXT:    vo %v0, %v1, %v0
3013; CHECK-NEXT:    vuphf %v1, %v0
3014; CHECK-NEXT:    vsel %v24, %v3, %v2, %v1
3015; CHECK-NEXT:    vmrlf %v1, %v31, %v31
3016; CHECK-NEXT:    vmrlf %v2, %v27, %v27
3017; CHECK-NEXT:    vmrhf %v3, %v27, %v27
3018; CHECK-NEXT:    vmrlg %v0, %v0, %v0
3019; CHECK-NEXT:    vuphf %v0, %v0
3020; CHECK-NEXT:    vldeb %v1, %v1
3021; CHECK-NEXT:    vldeb %v2, %v2
3022; CHECK-NEXT:    vfchdb %v1, %v2, %v1
3023; CHECK-NEXT:    vmrhf %v2, %v31, %v31
3024; CHECK-NEXT:    vldeb %v2, %v2
3025; CHECK-NEXT:    vldeb %v3, %v3
3026; CHECK-NEXT:    vfchdb %v2, %v3, %v2
3027; CHECK-NEXT:    vl %v3, 256(%r15)
3028; CHECK-NEXT:    vpkg %v1, %v2, %v1
3029; CHECK-NEXT:    vceqf %v2, %v26, %v30
3030; CHECK-NEXT:    vo %v1, %v2, %v1
3031; CHECK-NEXT:    vuphf %v2, %v1
3032; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
3033; CHECK-NEXT:    vl %v2, 240(%r15)
3034; CHECK-NEXT:    vl %v3, 176(%r15)
3035; CHECK-NEXT:    vsel %v26, %v3, %v2, %v0
3036; CHECK-NEXT:    vl %v2, 208(%r15)
3037; CHECK-NEXT:    vmrlg %v0, %v1, %v1
3038; CHECK-NEXT:    vl %v1, 272(%r15)
3039; CHECK-NEXT:    vuphf %v0, %v0
3040; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
3041; CHECK-NEXT:    br %r14
3042  %cmp0 = icmp eq <8 x i32> %val1, %val2
3043  %cmp1 = fcmp ogt <8 x float> %val3, %val4
3044  %and = or <8 x i1> %cmp0, %cmp1
3045  %sel = select <8 x i1> %and, <8 x double> %val5, <8 x double> %val6
3046  ret <8 x double> %sel
3047}
3048
3049define <8 x double> @fun114(<8 x i32> %val1, <8 x i32> %val2, <8 x double> %val3, <8 x double> %val4, <8 x double> %val5, <8 x double> %val6) {
3050; CHECK-LABEL: fun114:
3051; CHECK:       # BB#0:
3052; CHECK-NEXT:    vl %v0, 160(%r15)
3053; CHECK-NEXT:    vceqf %v1, %v24, %v28
3054; CHECK-NEXT:    vfchdb %v0, %v25, %v0
3055; CHECK-NEXT:    vuphf %v2, %v1
3056; CHECK-NEXT:    vo %v0, %v2, %v0
3057; CHECK-NEXT:    vl %v2, 288(%r15)
3058; CHECK-NEXT:    vl %v3, 224(%r15)
3059; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
3060; CHECK-NEXT:    vl %v0, 192(%r15)
3061; CHECK-NEXT:    vceqf %v2, %v26, %v30
3062; CHECK-NEXT:    vfchdb %v0, %v29, %v0
3063; CHECK-NEXT:    vuphf %v3, %v2
3064; CHECK-NEXT:    vo %v0, %v3, %v0
3065; CHECK-NEXT:    vl %v3, 320(%r15)
3066; CHECK-NEXT:    vl %v4, 256(%r15)
3067; CHECK-NEXT:    vsel %v28, %v4, %v3, %v0
3068; CHECK-NEXT:    vl %v0, 176(%r15)
3069; CHECK-NEXT:    vmrlg %v1, %v1, %v1
3070; CHECK-NEXT:    vfchdb %v0, %v27, %v0
3071; CHECK-NEXT:    vuphf %v1, %v1
3072; CHECK-NEXT:    vo %v0, %v1, %v0
3073; CHECK-NEXT:    vl %v1, 304(%r15)
3074; CHECK-NEXT:    vl %v3, 240(%r15)
3075; CHECK-NEXT:    vsel %v26, %v3, %v1, %v0
3076; CHECK-NEXT:    vl %v0, 208(%r15)
3077; CHECK-NEXT:    vmrlg %v1, %v2, %v2
3078; CHECK-NEXT:    vfchdb %v0, %v31, %v0
3079; CHECK-NEXT:    vuphf %v1, %v1
3080; CHECK-NEXT:    vl %v2, 272(%r15)
3081; CHECK-NEXT:    vo %v0, %v1, %v0
3082; CHECK-NEXT:    vl %v1, 336(%r15)
3083; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
3084; CHECK-NEXT:    br %r14
3085  %cmp0 = icmp eq <8 x i32> %val1, %val2
3086  %cmp1 = fcmp ogt <8 x double> %val3, %val4
3087  %and = or <8 x i1> %cmp0, %cmp1
3088  %sel = select <8 x i1> %and, <8 x double> %val5, <8 x double> %val6
3089  ret <8 x double> %sel
3090}
3091
3092define <8 x i64> @fun115(<8 x float> %val1, <8 x float> %val2, <8 x double> %val3, <8 x double> %val4, <8 x i64> %val5, <8 x i64> %val6) {
3093; CHECK-LABEL: fun115:
3094; CHECK:       # BB#0:
3095; CHECK-NEXT:    vmrlf %v0, %v28, %v28
3096; CHECK-NEXT:    vmrlf %v1, %v24, %v24
3097; CHECK-NEXT:    vldeb %v0, %v0
3098; CHECK-NEXT:    vldeb %v1, %v1
3099; CHECK-NEXT:    vfchdb %v0, %v1, %v0
3100; CHECK-NEXT:    vmrhf %v1, %v28, %v28
3101; CHECK-NEXT:    vmrhf %v2, %v24, %v24
3102; CHECK-NEXT:    vldeb %v1, %v1
3103; CHECK-NEXT:    vl %v3, 224(%r15)
3104; CHECK-NEXT:    vldeb %v2, %v2
3105; CHECK-NEXT:    vl %v4, 256(%r15)
3106; CHECK-NEXT:    vfchdb %v1, %v2, %v1
3107; CHECK-NEXT:    vl %v2, 160(%r15)
3108; CHECK-NEXT:    vpkg %v0, %v1, %v0
3109; CHECK-NEXT:    vuphf %v1, %v0
3110; CHECK-NEXT:    vfchdb %v2, %v25, %v2
3111; CHECK-NEXT:    vo %v1, %v1, %v2
3112; CHECK-NEXT:    vl %v2, 288(%r15)
3113; CHECK-NEXT:    vsel %v24, %v3, %v2, %v1
3114; CHECK-NEXT:    vmrlf %v1, %v30, %v30
3115; CHECK-NEXT:    vmrlf %v2, %v26, %v26
3116; CHECK-NEXT:    vmrhf %v3, %v26, %v26
3117; CHECK-NEXT:    vmrlg %v0, %v0, %v0
3118; CHECK-NEXT:    vuphf %v0, %v0
3119; CHECK-NEXT:    vldeb %v1, %v1
3120; CHECK-NEXT:    vldeb %v2, %v2
3121; CHECK-NEXT:    vfchdb %v1, %v2, %v1
3122; CHECK-NEXT:    vmrhf %v2, %v30, %v30
3123; CHECK-NEXT:    vldeb %v2, %v2
3124; CHECK-NEXT:    vldeb %v3, %v3
3125; CHECK-NEXT:    vfchdb %v2, %v3, %v2
3126; CHECK-NEXT:    vl %v3, 192(%r15)
3127; CHECK-NEXT:    vpkg %v1, %v2, %v1
3128; CHECK-NEXT:    vuphf %v2, %v1
3129; CHECK-NEXT:    vfchdb %v3, %v29, %v3
3130; CHECK-NEXT:    vo %v2, %v2, %v3
3131; CHECK-NEXT:    vl %v3, 320(%r15)
3132; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
3133; CHECK-NEXT:    vl %v2, 176(%r15)
3134; CHECK-NEXT:    vl %v3, 240(%r15)
3135; CHECK-NEXT:    vfchdb %v2, %v27, %v2
3136; CHECK-NEXT:    vo %v0, %v0, %v2
3137; CHECK-NEXT:    vl %v2, 304(%r15)
3138; CHECK-NEXT:    vsel %v26, %v3, %v2, %v0
3139; CHECK-NEXT:    vl %v2, 272(%r15)
3140; CHECK-NEXT:    vmrlg %v0, %v1, %v1
3141; CHECK-NEXT:    vl %v1, 208(%r15)
3142; CHECK-NEXT:    vuphf %v0, %v0
3143; CHECK-NEXT:    vfchdb %v1, %v31, %v1
3144; CHECK-NEXT:    vo %v0, %v0, %v1
3145; CHECK-NEXT:    vl %v1, 336(%r15)
3146; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
3147; CHECK-NEXT:    br %r14
3148  %cmp0 = fcmp ogt <8 x float> %val1, %val2
3149  %cmp1 = fcmp ogt <8 x double> %val3, %val4
3150  %and = or <8 x i1> %cmp0, %cmp1
3151  %sel = select <8 x i1> %and, <8 x i64> %val5, <8 x i64> %val6
3152  ret <8 x i64> %sel
3153}
3154
3155define <16 x i8> @fun116(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4, <16 x i8> %val5, <16 x i8> %val6) {
3156; CHECK-LABEL: fun116:
3157; CHECK:       # BB#0:
3158; CHECK-NEXT:    vceqb %v0, %v28, %v30
3159; CHECK-NEXT:    vceqb %v1, %v24, %v26
3160; CHECK-NEXT:    vo %v0, %v1, %v0
3161; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
3162; CHECK-NEXT:    br %r14
3163  %cmp0 = icmp eq <16 x i8> %val1, %val2
3164  %cmp1 = icmp eq <16 x i8> %val3, %val4
3165  %and = or <16 x i1> %cmp0, %cmp1
3166  %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6
3167  ret <16 x i8> %sel
3168}
3169
3170define <16 x i16> @fun117(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4, <16 x i16> %val5, <16 x i16> %val6) {
3171; CHECK-LABEL: fun117:
3172; CHECK:       # BB#0:
3173; CHECK-NEXT:    vceqb %v0, %v28, %v30
3174; CHECK-NEXT:    vceqb %v1, %v24, %v26
3175; CHECK-NEXT:    vo %v0, %v1, %v0
3176; CHECK-NEXT:    vuphb %v1, %v0
3177; CHECK-NEXT:    vmrlg %v0, %v0, %v0
3178; CHECK-NEXT:    vuphb %v0, %v0
3179; CHECK-NEXT:    vsel %v24, %v25, %v29, %v1
3180; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
3181; CHECK-NEXT:    br %r14
3182  %cmp0 = icmp eq <16 x i8> %val1, %val2
3183  %cmp1 = icmp eq <16 x i8> %val3, %val4
3184  %and = or <16 x i1> %cmp0, %cmp1
3185  %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6
3186  ret <16 x i16> %sel
3187}
3188
3189define <16 x i64> @fun118(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i64> %val5, <16 x i64> %val6) {
3190; CHECK-LABEL: fun118:
3191; CHECK:       # BB#0:
3192; CHECK-NEXT:    vceqb %v1, %v24, %v26
3193; CHECK-NEXT:    vceqh %v0, %v28, %v25
3194; CHECK-NEXT:    vuphb %v2, %v1
3195; CHECK-NEXT:    vo %v0, %v2, %v0
3196; CHECK-NEXT:    vuphh %v2, %v0
3197; CHECK-NEXT:    vl %v3, 256(%r15)
3198; CHECK-NEXT:    vuphf %v2, %v2
3199; CHECK-NEXT:    vsel %v24, %v29, %v3, %v2
3200; CHECK-NEXT:    vpkg %v2, %v0, %v0
3201; CHECK-NEXT:    vuphh %v2, %v2
3202; CHECK-NEXT:    vl %v3, 272(%r15)
3203; CHECK-NEXT:    vuphf %v2, %v2
3204; CHECK-NEXT:    vsel %v26, %v31, %v3, %v2
3205; CHECK-NEXT:    vmrlg %v2, %v0, %v0
3206; CHECK-NEXT:    vuphh %v2, %v2
3207; CHECK-NEXT:    vsldb %v0, %v0, %v0, 12
3208; CHECK-NEXT:    vl %v3, 288(%r15)
3209; CHECK-NEXT:    vl %v4, 160(%r15)
3210; CHECK-NEXT:    vuphf %v2, %v2
3211; CHECK-NEXT:    vuphh %v0, %v0
3212; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
3213; CHECK-NEXT:    vl %v2, 304(%r15)
3214; CHECK-NEXT:    vl %v3, 176(%r15)
3215; CHECK-NEXT:    vl %v4, 192(%r15)
3216; CHECK-NEXT:    vuphf %v0, %v0
3217; CHECK-NEXT:    vmrlg %v1, %v1, %v1
3218; CHECK-NEXT:    vsel %v0, %v3, %v2, %v0
3219; CHECK-NEXT:    vl %v3, 320(%r15)
3220; CHECK-NEXT:    vceqh %v2, %v30, %v27
3221; CHECK-NEXT:    vlr %v30, %v0
3222; CHECK-NEXT:    vuphb %v1, %v1
3223; CHECK-NEXT:    vo %v1, %v1, %v2
3224; CHECK-NEXT:    vuphh %v2, %v1
3225; CHECK-NEXT:    vuphf %v2, %v2
3226; CHECK-NEXT:    vsel %v25, %v4, %v3, %v2
3227; CHECK-NEXT:    vl %v3, 336(%r15)
3228; CHECK-NEXT:    vl %v4, 208(%r15)
3229; CHECK-NEXT:    vpkg %v2, %v1, %v1
3230; CHECK-NEXT:    vuphh %v2, %v2
3231; CHECK-NEXT:    vuphf %v2, %v2
3232; CHECK-NEXT:    vsel %v27, %v4, %v3, %v2
3233; CHECK-NEXT:    vl %v3, 352(%r15)
3234; CHECK-NEXT:    vl %v4, 224(%r15)
3235; CHECK-NEXT:    vmrlg %v2, %v1, %v1
3236; CHECK-NEXT:    vuphh %v2, %v2
3237; CHECK-NEXT:    vsldb %v1, %v1, %v1, 12
3238; CHECK-NEXT:    vuphf %v2, %v2
3239; CHECK-NEXT:    vuphh %v1, %v1
3240; CHECK-NEXT:    vsel %v29, %v4, %v3, %v2
3241; CHECK-NEXT:    vl %v2, 368(%r15)
3242; CHECK-NEXT:    vl %v3, 240(%r15)
3243; CHECK-NEXT:    vuphf %v1, %v1
3244; CHECK-NEXT:    vsel %v31, %v3, %v2, %v1
3245; CHECK-NEXT:    br %r14
3246  %cmp0 = icmp eq <16 x i8> %val1, %val2
3247  %cmp1 = icmp eq <16 x i16> %val3, %val4
3248  %and = or <16 x i1> %cmp0, %cmp1
3249  %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6
3250  ret <16 x i64> %sel
3251}
3252
3253define <16 x i64> @fun119(<16 x i8> %val1, <16 x i8> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i64> %val5, <16 x i64> %val6) {
3254; CHECK-LABEL: fun119:
3255; CHECK:       # BB#0:
3256; CHECK-NEXT:    vceqb %v1, %v24, %v26
3257; CHECK-NEXT:    vuphb %v2, %v1
3258; CHECK-NEXT:    vceqf %v0, %v28, %v29
3259; CHECK-NEXT:    vuphh %v2, %v2
3260; CHECK-NEXT:    vo %v0, %v2, %v0
3261; CHECK-NEXT:    vl %v3, 320(%r15)
3262; CHECK-NEXT:    vl %v4, 192(%r15)
3263; CHECK-NEXT:    vuphf %v2, %v0
3264; CHECK-NEXT:    vmrlg %v0, %v0, %v0
3265; CHECK-NEXT:    vsel %v24, %v4, %v3, %v2
3266; CHECK-NEXT:    vl %v2, 336(%r15)
3267; CHECK-NEXT:    vl %v3, 208(%r15)
3268; CHECK-NEXT:    vuphf %v0, %v0
3269; CHECK-NEXT:    vsel %v26, %v3, %v2, %v0
3270; CHECK-NEXT:    vpkg %v2, %v1, %v1
3271; CHECK-NEXT:    vuphb %v2, %v2
3272; CHECK-NEXT:    vceqf %v0, %v30, %v31
3273; CHECK-NEXT:    vuphh %v2, %v2
3274; CHECK-NEXT:    vo %v0, %v2, %v0
3275; CHECK-NEXT:    vl %v3, 352(%r15)
3276; CHECK-NEXT:    vl %v4, 224(%r15)
3277; CHECK-NEXT:    vuphf %v2, %v0
3278; CHECK-NEXT:    vl %v5, 256(%r15)
3279; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
3280; CHECK-NEXT:    vl %v2, 160(%r15)
3281; CHECK-NEXT:    vl %v4, 384(%r15)
3282; CHECK-NEXT:    vmrlg %v3, %v1, %v1
3283; CHECK-NEXT:    vuphb %v3, %v3
3284; CHECK-NEXT:    vceqf %v2, %v25, %v2
3285; CHECK-NEXT:    vuphh %v3, %v3
3286; CHECK-NEXT:    vo %v2, %v3, %v2
3287; CHECK-NEXT:    vuphf %v3, %v2
3288; CHECK-NEXT:    vsldb %v1, %v1, %v1, 12
3289; CHECK-NEXT:    vsel %v25, %v5, %v4, %v3
3290; CHECK-NEXT:    vl %v3, 176(%r15)
3291; CHECK-NEXT:    vl %v4, 416(%r15)
3292; CHECK-NEXT:    vl %v5, 288(%r15)
3293; CHECK-NEXT:    vuphb %v1, %v1
3294; CHECK-NEXT:    vceqf %v3, %v27, %v3
3295; CHECK-NEXT:    vuphh %v1, %v1
3296; CHECK-NEXT:    vo %v1, %v1, %v3
3297; CHECK-NEXT:    vuphf %v3, %v1
3298; CHECK-NEXT:    vmrlg %v0, %v0, %v0
3299; CHECK-NEXT:    vsel %v29, %v5, %v4, %v3
3300; CHECK-NEXT:    vl %v3, 368(%r15)
3301; CHECK-NEXT:    vl %v4, 240(%r15)
3302; CHECK-NEXT:    vuphf %v0, %v0
3303; CHECK-NEXT:    vsel %v30, %v4, %v3, %v0
3304; CHECK-NEXT:    vl %v3, 272(%r15)
3305; CHECK-NEXT:    vmrlg %v0, %v2, %v2
3306; CHECK-NEXT:    vl %v2, 400(%r15)
3307; CHECK-NEXT:    vuphf %v0, %v0
3308; CHECK-NEXT:    vsel %v27, %v3, %v2, %v0
3309; CHECK-NEXT:    vl %v2, 304(%r15)
3310; CHECK-NEXT:    vmrlg %v0, %v1, %v1
3311; CHECK-NEXT:    vl %v1, 432(%r15)
3312; CHECK-NEXT:    vuphf %v0, %v0
3313; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
3314; CHECK-NEXT:    br %r14
3315  %cmp0 = icmp eq <16 x i8> %val1, %val2
3316  %cmp1 = icmp eq <16 x i32> %val3, %val4
3317  %and = or <16 x i1> %cmp0, %cmp1
3318  %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6
3319  ret <16 x i64> %sel
3320}
3321
3322define <16 x i64> @fun120(<16 x i8> %val1, <16 x i8> %val2, <16 x i64> %val3, <16 x i64> %val4, <16 x i64> %val5, <16 x i64> %val6) {
3323; CHECK-LABEL: fun120:
3324; CHECK:       # BB#0:
3325; CHECK-NEXT:    vl %v0, 192(%r15)
3326; CHECK-NEXT:    vceqg %v1, %v28, %v0
3327; CHECK-NEXT:    vceqb %v0, %v24, %v26
3328; CHECK-NEXT:    vuphb %v2, %v0
3329; CHECK-NEXT:    vuphh %v2, %v2
3330; CHECK-NEXT:    vuphf %v2, %v2
3331; CHECK-NEXT:    vo %v1, %v2, %v1
3332; CHECK-NEXT:    vl %v2, 448(%r15)
3333; CHECK-NEXT:    vl %v3, 320(%r15)
3334; CHECK-NEXT:    vsel %v24, %v3, %v2, %v1
3335; CHECK-NEXT:    vpkf %v2, %v0, %v0
3336; CHECK-NEXT:    vuphb %v2, %v2
3337; CHECK-NEXT:    vl %v1, 208(%r15)
3338; CHECK-NEXT:    vuphh %v2, %v2
3339; CHECK-NEXT:    vceqg %v1, %v30, %v1
3340; CHECK-NEXT:    vuphf %v2, %v2
3341; CHECK-NEXT:    vo %v1, %v2, %v1
3342; CHECK-NEXT:    vl %v2, 464(%r15)
3343; CHECK-NEXT:    vl %v3, 336(%r15)
3344; CHECK-NEXT:    vsel %v26, %v3, %v2, %v1
3345; CHECK-NEXT:    vpkg %v2, %v0, %v0
3346; CHECK-NEXT:    vuphb %v2, %v2
3347; CHECK-NEXT:    vl %v1, 224(%r15)
3348; CHECK-NEXT:    vl %v3, 352(%r15)
3349; CHECK-NEXT:    vuphh %v2, %v2
3350; CHECK-NEXT:    vceqg %v1, %v25, %v1
3351; CHECK-NEXT:    vuphf %v2, %v2
3352; CHECK-NEXT:    vo %v1, %v2, %v1
3353; CHECK-NEXT:    vl %v2, 480(%r15)
3354; CHECK-NEXT:    vsel %v28, %v3, %v2, %v1
3355; CHECK-NEXT:    vl %v1, 240(%r15)
3356; CHECK-NEXT:    vl %v3, 368(%r15)
3357; CHECK-NEXT:    vsldb %v2, %v0, %v0, 6
3358; CHECK-NEXT:    vuphb %v2, %v2
3359; CHECK-NEXT:    vuphh %v2, %v2
3360; CHECK-NEXT:    vceqg %v1, %v27, %v1
3361; CHECK-NEXT:    vuphf %v2, %v2
3362; CHECK-NEXT:    vo %v1, %v2, %v1
3363; CHECK-NEXT:    vl %v2, 496(%r15)
3364; CHECK-NEXT:    vsel %v30, %v3, %v2, %v1
3365; CHECK-NEXT:    vl %v1, 256(%r15)
3366; CHECK-NEXT:    vl %v3, 384(%r15)
3367; CHECK-NEXT:    vmrlg %v2, %v0, %v0
3368; CHECK-NEXT:    vuphb %v2, %v2
3369; CHECK-NEXT:    vuphh %v2, %v2
3370; CHECK-NEXT:    vceqg %v1, %v29, %v1
3371; CHECK-NEXT:    vuphf %v2, %v2
3372; CHECK-NEXT:    vo %v1, %v2, %v1
3373; CHECK-NEXT:    vl %v2, 512(%r15)
3374; CHECK-NEXT:    vsel %v25, %v3, %v2, %v1
3375; CHECK-NEXT:    vl %v1, 272(%r15)
3376; CHECK-NEXT:    vl %v3, 400(%r15)
3377; CHECK-NEXT:    vsldb %v2, %v0, %v0, 10
3378; CHECK-NEXT:    vuphb %v2, %v2
3379; CHECK-NEXT:    vuphh %v2, %v2
3380; CHECK-NEXT:    vceqg %v1, %v31, %v1
3381; CHECK-NEXT:    vuphf %v2, %v2
3382; CHECK-NEXT:    vo %v1, %v2, %v1
3383; CHECK-NEXT:    vl %v2, 528(%r15)
3384; CHECK-NEXT:    vsel %v27, %v3, %v2, %v1
3385; CHECK-NEXT:    vl %v1, 288(%r15)
3386; CHECK-NEXT:    vl %v2, 160(%r15)
3387; CHECK-NEXT:    vl %v3, 416(%r15)
3388; CHECK-NEXT:    vceqg %v1, %v2, %v1
3389; CHECK-NEXT:    vsldb %v2, %v0, %v0, 12
3390; CHECK-NEXT:    vuphb %v2, %v2
3391; CHECK-NEXT:    vuphh %v2, %v2
3392; CHECK-NEXT:    vuphf %v2, %v2
3393; CHECK-NEXT:    vsldb %v0, %v0, %v0, 14
3394; CHECK-NEXT:    vo %v1, %v2, %v1
3395; CHECK-NEXT:    vl %v2, 544(%r15)
3396; CHECK-NEXT:    vuphb %v0, %v0
3397; CHECK-NEXT:    vsel %v29, %v3, %v2, %v1
3398; CHECK-NEXT:    vl %v1, 304(%r15)
3399; CHECK-NEXT:    vl %v2, 176(%r15)
3400; CHECK-NEXT:    vuphh %v0, %v0
3401; CHECK-NEXT:    vceqg %v1, %v2, %v1
3402; CHECK-NEXT:    vl %v2, 432(%r15)
3403; CHECK-NEXT:    vuphf %v0, %v0
3404; CHECK-NEXT:    vo %v0, %v0, %v1
3405; CHECK-NEXT:    vl %v1, 560(%r15)
3406; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
3407; CHECK-NEXT:    br %r14
3408  %cmp0 = icmp eq <16 x i8> %val1, %val2
3409  %cmp1 = icmp eq <16 x i64> %val3, %val4
3410  %and = or <16 x i1> %cmp0, %cmp1
3411  %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6
3412  ret <16 x i64> %sel
3413}
3414
3415define <16 x i16> @fun121(<16 x i8> %val1, <16 x i8> %val2, <16 x float> %val3, <16 x float> %val4, <16 x i16> %val5, <16 x i16> %val6) {
3416; CHECK-LABEL: fun121:
3417; CHECK:       # BB#0:
3418; CHECK-NEXT:    vmrlf %v0, %v31, %v31
3419; CHECK-NEXT:    vmrlf %v1, %v30, %v30
3420; CHECK-NEXT:    vldeb %v0, %v0
3421; CHECK-NEXT:    vldeb %v1, %v1
3422; CHECK-NEXT:    vfchdb %v0, %v1, %v0
3423; CHECK-NEXT:    vmrhf %v1, %v31, %v31
3424; CHECK-NEXT:    vmrhf %v2, %v30, %v30
3425; CHECK-NEXT:    vldeb %v1, %v1
3426; CHECK-NEXT:    vmrhf %v3, %v28, %v28
3427; CHECK-NEXT:    vmrlf %v4, %v25, %v25
3428; CHECK-NEXT:    vldeb %v2, %v2
3429; CHECK-NEXT:    vfchdb %v1, %v2, %v1
3430; CHECK-NEXT:    vpkg %v0, %v1, %v0
3431; CHECK-NEXT:    vmrlf %v1, %v29, %v29
3432; CHECK-NEXT:    vmrlf %v2, %v28, %v28
3433; CHECK-NEXT:    vldeb %v1, %v1
3434; CHECK-NEXT:    vldeb %v2, %v2
3435; CHECK-NEXT:    vfchdb %v1, %v2, %v1
3436; CHECK-NEXT:    vmrhf %v2, %v29, %v29
3437; CHECK-NEXT:    vldeb %v2, %v2
3438; CHECK-NEXT:    vldeb %v3, %v3
3439; CHECK-NEXT:    vfchdb %v2, %v3, %v2
3440; CHECK-NEXT:    vl %v3, 192(%r15)
3441; CHECK-NEXT:    vpkg %v1, %v2, %v1
3442; CHECK-NEXT:    vpkf %v0, %v1, %v0
3443; CHECK-NEXT:    vceqb %v1, %v24, %v26
3444; CHECK-NEXT:    vuphb %v2, %v1
3445; CHECK-NEXT:    vo %v0, %v2, %v0
3446; CHECK-NEXT:    vl %v2, 224(%r15)
3447; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
3448; CHECK-NEXT:    vl %v0, 176(%r15)
3449; CHECK-NEXT:    vmrlf %v2, %v0, %v0
3450; CHECK-NEXT:    vmrlf %v3, %v27, %v27
3451; CHECK-NEXT:    vmrhf %v0, %v0, %v0
3452; CHECK-NEXT:    vmrlg %v1, %v1, %v1
3453; CHECK-NEXT:    vuphb %v1, %v1
3454; CHECK-NEXT:    vldeb %v2, %v2
3455; CHECK-NEXT:    vldeb %v3, %v3
3456; CHECK-NEXT:    vfchdb %v2, %v3, %v2
3457; CHECK-NEXT:    vmrhf %v3, %v27, %v27
3458; CHECK-NEXT:    vldeb %v0, %v0
3459; CHECK-NEXT:    vldeb %v3, %v3
3460; CHECK-NEXT:    vfchdb %v0, %v3, %v0
3461; CHECK-NEXT:    vpkg %v0, %v0, %v2
3462; CHECK-NEXT:    vl %v2, 160(%r15)
3463; CHECK-NEXT:    vmrlf %v3, %v2, %v2
3464; CHECK-NEXT:    vmrhf %v2, %v2, %v2
3465; CHECK-NEXT:    vldeb %v3, %v3
3466; CHECK-NEXT:    vldeb %v4, %v4
3467; CHECK-NEXT:    vfchdb %v3, %v4, %v3
3468; CHECK-NEXT:    vmrhf %v4, %v25, %v25
3469; CHECK-NEXT:    vldeb %v2, %v2
3470; CHECK-NEXT:    vldeb %v4, %v4
3471; CHECK-NEXT:    vfchdb %v2, %v4, %v2
3472; CHECK-NEXT:    vpkg %v2, %v2, %v3
3473; CHECK-NEXT:    vpkf %v0, %v2, %v0
3474; CHECK-NEXT:    vl %v2, 208(%r15)
3475; CHECK-NEXT:    vo %v0, %v1, %v0
3476; CHECK-NEXT:    vl %v1, 240(%r15)
3477; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
3478; CHECK-NEXT:    br %r14
3479  %cmp0 = icmp eq <16 x i8> %val1, %val2
3480  %cmp1 = fcmp ogt <16 x float> %val3, %val4
3481  %and = or <16 x i1> %cmp0, %cmp1
3482  %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6
3483  ret <16 x i16> %sel
3484}
3485
3486define <16 x i8> @fun122(<16 x i8> %val1, <16 x i8> %val2, <16 x double> %val3, <16 x double> %val4, <16 x i8> %val5, <16 x i8> %val6) {
3487; CHECK-LABEL: fun122:
3488; CHECK:       # BB#0:
3489; CHECK-NEXT:    vl %v0, 304(%r15)
3490; CHECK-NEXT:    vl %v1, 176(%r15)
3491; CHECK-NEXT:    vfchdb %v0, %v1, %v0
3492; CHECK-NEXT:    vl %v1, 288(%r15)
3493; CHECK-NEXT:    vl %v2, 160(%r15)
3494; CHECK-NEXT:    vfchdb %v1, %v2, %v1
3495; CHECK-NEXT:    vpkg %v0, %v1, %v0
3496; CHECK-NEXT:    vl %v1, 272(%r15)
3497; CHECK-NEXT:    vl %v2, 256(%r15)
3498; CHECK-NEXT:    vfchdb %v1, %v31, %v1
3499; CHECK-NEXT:    vfchdb %v2, %v29, %v2
3500; CHECK-NEXT:    vpkg %v1, %v2, %v1
3501; CHECK-NEXT:    vpkf %v0, %v1, %v0
3502; CHECK-NEXT:    vl %v1, 240(%r15)
3503; CHECK-NEXT:    vl %v2, 224(%r15)
3504; CHECK-NEXT:    vfchdb %v1, %v27, %v1
3505; CHECK-NEXT:    vfchdb %v2, %v25, %v2
3506; CHECK-NEXT:    vpkg %v1, %v2, %v1
3507; CHECK-NEXT:    vl %v2, 208(%r15)
3508; CHECK-NEXT:    vl %v3, 192(%r15)
3509; CHECK-NEXT:    vfchdb %v2, %v30, %v2
3510; CHECK-NEXT:    vfchdb %v3, %v28, %v3
3511; CHECK-NEXT:    vpkg %v2, %v3, %v2
3512; CHECK-NEXT:    vpkf %v1, %v2, %v1
3513; CHECK-NEXT:    vpkh %v0, %v1, %v0
3514; CHECK-NEXT:    vceqb %v1, %v24, %v26
3515; CHECK-NEXT:    vo %v0, %v1, %v0
3516; CHECK-NEXT:    vl %v1, 336(%r15)
3517; CHECK-NEXT:    vl %v2, 320(%r15)
3518; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
3519; CHECK-NEXT:    br %r14
3520  %cmp0 = icmp eq <16 x i8> %val1, %val2
3521  %cmp1 = fcmp ogt <16 x double> %val3, %val4
3522  %and = or <16 x i1> %cmp0, %cmp1
3523  %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6
3524  ret <16 x i8> %sel
3525}
3526
3527define <16 x i8> @fun123(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i8> %val5, <16 x i8> %val6) {
3528; CHECK-LABEL: fun123:
3529; CHECK:       # BB#0:
3530; CHECK-NEXT:    vceqh %v0, %v27, %v31
3531; CHECK-NEXT:    vceqh %v1, %v26, %v30
3532; CHECK-NEXT:    vo %v0, %v1, %v0
3533; CHECK-NEXT:    vceqh %v1, %v25, %v29
3534; CHECK-NEXT:    vceqh %v2, %v24, %v28
3535; CHECK-NEXT:    vo %v1, %v2, %v1
3536; CHECK-NEXT:    vpkh %v0, %v1, %v0
3537; CHECK-NEXT:    vl %v1, 176(%r15)
3538; CHECK-NEXT:    vl %v2, 160(%r15)
3539; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
3540; CHECK-NEXT:    br %r14
3541  %cmp0 = icmp eq <16 x i16> %val1, %val2
3542  %cmp1 = icmp eq <16 x i16> %val3, %val4
3543  %and = or <16 x i1> %cmp0, %cmp1
3544  %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6
3545  ret <16 x i8> %sel
3546}
3547
3548define <16 x i16> @fun124(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i16> %val5, <16 x i16> %val6) {
3549; CHECK-LABEL: fun124:
3550; CHECK:       # BB#0:
3551; CHECK-NEXT:    vceqh %v0, %v25, %v29
3552; CHECK-NEXT:    vceqh %v1, %v24, %v28
3553; CHECK-NEXT:    vo %v0, %v1, %v0
3554; CHECK-NEXT:    vl %v1, 192(%r15)
3555; CHECK-NEXT:    vl %v2, 160(%r15)
3556; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
3557; CHECK-NEXT:    vceqh %v0, %v27, %v31
3558; CHECK-NEXT:    vceqh %v1, %v26, %v30
3559; CHECK-NEXT:    vo %v0, %v1, %v0
3560; CHECK-NEXT:    vl %v1, 208(%r15)
3561; CHECK-NEXT:    vl %v2, 176(%r15)
3562; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
3563; CHECK-NEXT:    br %r14
3564  %cmp0 = icmp eq <16 x i16> %val1, %val2
3565  %cmp1 = icmp eq <16 x i16> %val3, %val4
3566  %and = or <16 x i1> %cmp0, %cmp1
3567  %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6
3568  ret <16 x i16> %sel
3569}
3570
3571define <16 x i32> @fun125(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i32> %val5, <16 x i32> %val6) {
3572; CHECK-LABEL: fun125:
3573; CHECK:       # BB#0:
3574; CHECK-NEXT:    vceqh %v0, %v25, %v29
3575; CHECK-NEXT:    vceqh %v1, %v24, %v28
3576; CHECK-NEXT:    vo %v0, %v1, %v0
3577; CHECK-NEXT:    vl %v2, 224(%r15)
3578; CHECK-NEXT:    vl %v3, 160(%r15)
3579; CHECK-NEXT:    vuphh %v1, %v0
3580; CHECK-NEXT:    vsel %v24, %v3, %v2, %v1
3581; CHECK-NEXT:    vceqh %v1, %v27, %v31
3582; CHECK-NEXT:    vceqh %v2, %v26, %v30
3583; CHECK-NEXT:    vo %v1, %v2, %v1
3584; CHECK-NEXT:    vl %v3, 256(%r15)
3585; CHECK-NEXT:    vl %v4, 192(%r15)
3586; CHECK-NEXT:    vuphh %v2, %v1
3587; CHECK-NEXT:    vmrlg %v0, %v0, %v0
3588; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
3589; CHECK-NEXT:    vl %v2, 240(%r15)
3590; CHECK-NEXT:    vl %v3, 176(%r15)
3591; CHECK-NEXT:    vuphh %v0, %v0
3592; CHECK-NEXT:    vsel %v26, %v3, %v2, %v0
3593; CHECK-NEXT:    vmrlg %v0, %v1, %v1
3594; CHECK-NEXT:    vl %v1, 272(%r15)
3595; CHECK-NEXT:    vl %v2, 208(%r15)
3596; CHECK-NEXT:    vuphh %v0, %v0
3597; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
3598; CHECK-NEXT:    br %r14
3599  %cmp0 = icmp eq <16 x i16> %val1, %val2
3600  %cmp1 = icmp eq <16 x i16> %val3, %val4
3601  %and = or <16 x i1> %cmp0, %cmp1
3602  %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6
3603  ret <16 x i32> %sel
3604}
3605
3606define <16 x i8> @fun126(<16 x i16> %val1, <16 x i16> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i8> %val5, <16 x i8> %val6) {
3607; CHECK-LABEL: fun126:
3608; CHECK:       # BB#0:
3609; CHECK-NEXT:    vl %v0, 208(%r15)
3610; CHECK-NEXT:    vl %v1, 192(%r15)
3611; CHECK-NEXT:    vceqf %v0, %v31, %v0
3612; CHECK-NEXT:    vceqf %v1, %v29, %v1
3613; CHECK-NEXT:    vpkf %v0, %v1, %v0
3614; CHECK-NEXT:    vceqh %v1, %v26, %v30
3615; CHECK-NEXT:    vo %v0, %v1, %v0
3616; CHECK-NEXT:    vl %v1, 176(%r15)
3617; CHECK-NEXT:    vl %v2, 160(%r15)
3618; CHECK-NEXT:    vceqf %v1, %v27, %v1
3619; CHECK-NEXT:    vceqf %v2, %v25, %v2
3620; CHECK-NEXT:    vpkf %v1, %v2, %v1
3621; CHECK-NEXT:    vceqh %v2, %v24, %v28
3622; CHECK-NEXT:    vo %v1, %v2, %v1
3623; CHECK-NEXT:    vpkh %v0, %v1, %v0
3624; CHECK-NEXT:    vl %v1, 240(%r15)
3625; CHECK-NEXT:    vl %v2, 224(%r15)
3626; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
3627; CHECK-NEXT:    br %r14
3628  %cmp0 = icmp eq <16 x i16> %val1, %val2
3629  %cmp1 = icmp eq <16 x i32> %val3, %val4
3630  %and = or <16 x i1> %cmp0, %cmp1
3631  %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6
3632  ret <16 x i8> %sel
3633}
3634
3635define <16 x i32> @fun127(<16 x i16> %val1, <16 x i16> %val2, <16 x i64> %val3, <16 x i64> %val4, <16 x i32> %val5, <16 x i32> %val6) {
3636; CHECK-LABEL: fun127:
3637; CHECK:       # BB#0:
3638; CHECK-NEXT:    vl %v0, 240(%r15)
3639; CHECK-NEXT:    vl %v1, 224(%r15)
3640; CHECK-NEXT:    vceqg %v0, %v27, %v0
3641; CHECK-NEXT:    vceqg %v1, %v25, %v1
3642; CHECK-NEXT:    vpkg %v0, %v1, %v0
3643; CHECK-NEXT:    vceqh %v1, %v24, %v28
3644; CHECK-NEXT:    vuphh %v2, %v1
3645; CHECK-NEXT:    vo %v0, %v2, %v0
3646; CHECK-NEXT:    vl %v2, 416(%r15)
3647; CHECK-NEXT:    vl %v3, 352(%r15)
3648; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
3649; CHECK-NEXT:    vl %v0, 304(%r15)
3650; CHECK-NEXT:    vl %v2, 176(%r15)
3651; CHECK-NEXT:    vceqg %v0, %v2, %v0
3652; CHECK-NEXT:    vl %v2, 288(%r15)
3653; CHECK-NEXT:    vl %v3, 160(%r15)
3654; CHECK-NEXT:    vceqg %v2, %v3, %v2
3655; CHECK-NEXT:    vpkg %v0, %v2, %v0
3656; CHECK-NEXT:    vceqh %v2, %v26, %v30
3657; CHECK-NEXT:    vuphh %v3, %v2
3658; CHECK-NEXT:    vo %v0, %v3, %v0
3659; CHECK-NEXT:    vl %v3, 448(%r15)
3660; CHECK-NEXT:    vl %v4, 384(%r15)
3661; CHECK-NEXT:    vsel %v28, %v4, %v3, %v0
3662; CHECK-NEXT:    vl %v0, 272(%r15)
3663; CHECK-NEXT:    vl %v3, 256(%r15)
3664; CHECK-NEXT:    vceqg %v0, %v31, %v0
3665; CHECK-NEXT:    vceqg %v3, %v29, %v3
3666; CHECK-NEXT:    vmrlg %v1, %v1, %v1
3667; CHECK-NEXT:    vpkg %v0, %v3, %v0
3668; CHECK-NEXT:    vuphh %v1, %v1
3669; CHECK-NEXT:    vl %v3, 368(%r15)
3670; CHECK-NEXT:    vo %v0, %v1, %v0
3671; CHECK-NEXT:    vl %v1, 432(%r15)
3672; CHECK-NEXT:    vsel %v26, %v3, %v1, %v0
3673; CHECK-NEXT:    vl %v0, 336(%r15)
3674; CHECK-NEXT:    vl %v1, 208(%r15)
3675; CHECK-NEXT:    vl %v3, 192(%r15)
3676; CHECK-NEXT:    vceqg %v0, %v1, %v0
3677; CHECK-NEXT:    vl %v1, 320(%r15)
3678; CHECK-NEXT:    vceqg %v1, %v3, %v1
3679; CHECK-NEXT:    vpkg %v0, %v1, %v0
3680; CHECK-NEXT:    vmrlg %v1, %v2, %v2
3681; CHECK-NEXT:    vl %v2, 400(%r15)
3682; CHECK-NEXT:    vuphh %v1, %v1
3683; CHECK-NEXT:    vo %v0, %v1, %v0
3684; CHECK-NEXT:    vl %v1, 464(%r15)
3685; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
3686; CHECK-NEXT:    br %r14
3687  %cmp0 = icmp eq <16 x i16> %val1, %val2
3688  %cmp1 = icmp eq <16 x i64> %val3, %val4
3689  %and = or <16 x i1> %cmp0, %cmp1
3690  %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6
3691  ret <16 x i32> %sel
3692}
3693
3694define <16 x double> @fun128(<16 x i16> %val1, <16 x i16> %val2, <16 x float> %val3, <16 x float> %val4, <16 x double> %val5, <16 x double> %val6) {
3695; CHECK-LABEL: fun128:
3696; CHECK:       # BB#0:
3697; CHECK-NEXT:    vl %v0, 160(%r15)
3698; CHECK-NEXT:    vmrlf %v1, %v0, %v0
3699; CHECK-NEXT:    vmrlf %v2, %v25, %v25
3700; CHECK-NEXT:    vldeb %v1, %v1
3701; CHECK-NEXT:    vldeb %v2, %v2
3702; CHECK-NEXT:    vfchdb %v1, %v2, %v1
3703; CHECK-NEXT:    vmrhf %v0, %v0, %v0
3704; CHECK-NEXT:    vmrhf %v2, %v25, %v25
3705; CHECK-NEXT:    vldeb %v0, %v0
3706; CHECK-NEXT:    vldeb %v2, %v2
3707; CHECK-NEXT:    vl %v3, 352(%r15)
3708; CHECK-NEXT:    vl %v4, 224(%r15)
3709; CHECK-NEXT:    vl %v5, 416(%r15)
3710; CHECK-NEXT:    vl %v6, 288(%r15)
3711; CHECK-NEXT:    vfchdb %v0, %v2, %v0
3712; CHECK-NEXT:    vpkg %v0, %v0, %v1
3713; CHECK-NEXT:    vceqh %v1, %v24, %v28
3714; CHECK-NEXT:    vuphh %v2, %v1
3715; CHECK-NEXT:    vo %v0, %v2, %v0
3716; CHECK-NEXT:    vuphf %v2, %v0
3717; CHECK-NEXT:    vsel %v24, %v4, %v3, %v2
3718; CHECK-NEXT:    vl %v2, 176(%r15)
3719; CHECK-NEXT:    vmrlf %v3, %v2, %v2
3720; CHECK-NEXT:    vmrlf %v4, %v27, %v27
3721; CHECK-NEXT:    vmrhf %v2, %v2, %v2
3722; CHECK-NEXT:    vmrlg %v1, %v1, %v1
3723; CHECK-NEXT:    vuphh %v1, %v1
3724; CHECK-NEXT:    vmrlg %v0, %v0, %v0
3725; CHECK-NEXT:    vuphf %v0, %v0
3726; CHECK-NEXT:    vldeb %v3, %v3
3727; CHECK-NEXT:    vldeb %v4, %v4
3728; CHECK-NEXT:    vfchdb %v3, %v4, %v3
3729; CHECK-NEXT:    vmrhf %v4, %v27, %v27
3730; CHECK-NEXT:    vldeb %v2, %v2
3731; CHECK-NEXT:    vldeb %v4, %v4
3732; CHECK-NEXT:    vfchdb %v2, %v4, %v2
3733; CHECK-NEXT:    vl %v4, 256(%r15)
3734; CHECK-NEXT:    vpkg %v2, %v2, %v3
3735; CHECK-NEXT:    vl %v3, 384(%r15)
3736; CHECK-NEXT:    vo %v1, %v1, %v2
3737; CHECK-NEXT:    vuphf %v2, %v1
3738; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
3739; CHECK-NEXT:    vl %v2, 192(%r15)
3740; CHECK-NEXT:    vmrlf %v3, %v2, %v2
3741; CHECK-NEXT:    vmrlf %v4, %v29, %v29
3742; CHECK-NEXT:    vmrhf %v2, %v2, %v2
3743; CHECK-NEXT:    vldeb %v3, %v3
3744; CHECK-NEXT:    vldeb %v4, %v4
3745; CHECK-NEXT:    vfchdb %v3, %v4, %v3
3746; CHECK-NEXT:    vmrhf %v4, %v29, %v29
3747; CHECK-NEXT:    vldeb %v2, %v2
3748; CHECK-NEXT:    vldeb %v4, %v4
3749; CHECK-NEXT:    vfchdb %v2, %v4, %v2
3750; CHECK-NEXT:    vpkg %v2, %v2, %v3
3751; CHECK-NEXT:    vceqh %v3, %v26, %v30
3752; CHECK-NEXT:    vuphh %v4, %v3
3753; CHECK-NEXT:    vo %v2, %v4, %v2
3754; CHECK-NEXT:    vuphf %v4, %v2
3755; CHECK-NEXT:    vsel %v25, %v6, %v5, %v4
3756; CHECK-NEXT:    vl %v4, 208(%r15)
3757; CHECK-NEXT:    vmrlf %v5, %v4, %v4
3758; CHECK-NEXT:    vmrlf %v6, %v31, %v31
3759; CHECK-NEXT:    vmrhf %v4, %v4, %v4
3760; CHECK-NEXT:    vmrlg %v3, %v3, %v3
3761; CHECK-NEXT:    vuphh %v3, %v3
3762; CHECK-NEXT:    vldeb %v5, %v5
3763; CHECK-NEXT:    vldeb %v6, %v6
3764; CHECK-NEXT:    vfchdb %v5, %v6, %v5
3765; CHECK-NEXT:    vmrhf %v6, %v31, %v31
3766; CHECK-NEXT:    vldeb %v4, %v4
3767; CHECK-NEXT:    vldeb %v6, %v6
3768; CHECK-NEXT:    vfchdb %v4, %v6, %v4
3769; CHECK-NEXT:    vl %v6, 320(%r15)
3770; CHECK-NEXT:    vpkg %v4, %v4, %v5
3771; CHECK-NEXT:    vl %v5, 448(%r15)
3772; CHECK-NEXT:    vo %v3, %v3, %v4
3773; CHECK-NEXT:    vuphf %v4, %v3
3774; CHECK-NEXT:    vsel %v29, %v6, %v5, %v4
3775; CHECK-NEXT:    vl %v4, 368(%r15)
3776; CHECK-NEXT:    vl %v5, 240(%r15)
3777; CHECK-NEXT:    vsel %v26, %v5, %v4, %v0
3778; CHECK-NEXT:    vl %v4, 272(%r15)
3779; CHECK-NEXT:    vmrlg %v0, %v1, %v1
3780; CHECK-NEXT:    vl %v1, 400(%r15)
3781; CHECK-NEXT:    vuphf %v0, %v0
3782; CHECK-NEXT:    vsel %v30, %v4, %v1, %v0
3783; CHECK-NEXT:    vl %v1, 432(%r15)
3784; CHECK-NEXT:    vmrlg %v0, %v2, %v2
3785; CHECK-NEXT:    vl %v2, 304(%r15)
3786; CHECK-NEXT:    vuphf %v0, %v0
3787; CHECK-NEXT:    vsel %v27, %v2, %v1, %v0
3788; CHECK-NEXT:    vl %v1, 464(%r15)
3789; CHECK-NEXT:    vl %v2, 336(%r15)
3790; CHECK-NEXT:    vmrlg %v0, %v3, %v3
3791; CHECK-NEXT:    vuphf %v0, %v0
3792; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
3793; CHECK-NEXT:    br %r14
3794  %cmp0 = icmp eq <16 x i16> %val1, %val2
3795  %cmp1 = fcmp ogt <16 x float> %val3, %val4
3796  %and = or <16 x i1> %cmp0, %cmp1
3797  %sel = select <16 x i1> %and, <16 x double> %val5, <16 x double> %val6
3798  ret <16 x double> %sel
3799}
3800
3801define <16 x i32> @fun129(<16 x i16> %val1, <16 x i16> %val2, <16 x double> %val3, <16 x double> %val4, <16 x i32> %val5, <16 x i32> %val6) {
3802; CHECK-LABEL: fun129:
3803; CHECK:       # BB#0:
3804; CHECK-NEXT:    vl %v0, 240(%r15)
3805; CHECK-NEXT:    vl %v1, 224(%r15)
3806; CHECK-NEXT:    vfchdb %v0, %v27, %v0
3807; CHECK-NEXT:    vfchdb %v1, %v25, %v1
3808; CHECK-NEXT:    vpkg %v0, %v1, %v0
3809; CHECK-NEXT:    vceqh %v1, %v24, %v28
3810; CHECK-NEXT:    vuphh %v2, %v1
3811; CHECK-NEXT:    vo %v0, %v2, %v0
3812; CHECK-NEXT:    vl %v2, 416(%r15)
3813; CHECK-NEXT:    vl %v3, 352(%r15)
3814; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
3815; CHECK-NEXT:    vl %v0, 304(%r15)
3816; CHECK-NEXT:    vl %v2, 176(%r15)
3817; CHECK-NEXT:    vfchdb %v0, %v2, %v0
3818; CHECK-NEXT:    vl %v2, 288(%r15)
3819; CHECK-NEXT:    vl %v3, 160(%r15)
3820; CHECK-NEXT:    vfchdb %v2, %v3, %v2
3821; CHECK-NEXT:    vpkg %v0, %v2, %v0
3822; CHECK-NEXT:    vceqh %v2, %v26, %v30
3823; CHECK-NEXT:    vuphh %v3, %v2
3824; CHECK-NEXT:    vo %v0, %v3, %v0
3825; CHECK-NEXT:    vl %v3, 448(%r15)
3826; CHECK-NEXT:    vl %v4, 384(%r15)
3827; CHECK-NEXT:    vsel %v28, %v4, %v3, %v0
3828; CHECK-NEXT:    vl %v0, 272(%r15)
3829; CHECK-NEXT:    vl %v3, 256(%r15)
3830; CHECK-NEXT:    vfchdb %v0, %v31, %v0
3831; CHECK-NEXT:    vfchdb %v3, %v29, %v3
3832; CHECK-NEXT:    vmrlg %v1, %v1, %v1
3833; CHECK-NEXT:    vpkg %v0, %v3, %v0
3834; CHECK-NEXT:    vuphh %v1, %v1
3835; CHECK-NEXT:    vl %v3, 368(%r15)
3836; CHECK-NEXT:    vo %v0, %v1, %v0
3837; CHECK-NEXT:    vl %v1, 432(%r15)
3838; CHECK-NEXT:    vsel %v26, %v3, %v1, %v0
3839; CHECK-NEXT:    vl %v0, 336(%r15)
3840; CHECK-NEXT:    vl %v1, 208(%r15)
3841; CHECK-NEXT:    vl %v3, 192(%r15)
3842; CHECK-NEXT:    vfchdb %v0, %v1, %v0
3843; CHECK-NEXT:    vl %v1, 320(%r15)
3844; CHECK-NEXT:    vfchdb %v1, %v3, %v1
3845; CHECK-NEXT:    vpkg %v0, %v1, %v0
3846; CHECK-NEXT:    vmrlg %v1, %v2, %v2
3847; CHECK-NEXT:    vl %v2, 400(%r15)
3848; CHECK-NEXT:    vuphh %v1, %v1
3849; CHECK-NEXT:    vo %v0, %v1, %v0
3850; CHECK-NEXT:    vl %v1, 464(%r15)
3851; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
3852; CHECK-NEXT:    br %r14
3853  %cmp0 = icmp eq <16 x i16> %val1, %val2
3854  %cmp1 = fcmp ogt <16 x double> %val3, %val4
3855  %and = or <16 x i1> %cmp0, %cmp1
3856  %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6
3857  ret <16 x i32> %sel
3858}
3859
3860define <2 x i8> @fun130(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i8> %val5, <2 x i8> %val6) {
3861; CHECK-LABEL: fun130:
3862; CHECK:       # BB#0:
3863; CHECK-NEXT:    vceqb %v0, %v28, %v30
3864; CHECK-NEXT:    vceqb %v1, %v24, %v26
3865; CHECK-NEXT:    vx %v0, %v1, %v0
3866; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
3867; CHECK-NEXT:    br %r14
3868  %cmp0 = icmp eq <2 x i8> %val1, %val2
3869  %cmp1 = icmp eq <2 x i8> %val3, %val4
3870  %and = xor <2 x i1> %cmp0, %cmp1
3871  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
3872  ret <2 x i8> %sel
3873}
3874
3875define <2 x i16> @fun131(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i16> %val5, <2 x i16> %val6) {
3876; CHECK-LABEL: fun131:
3877; CHECK:       # BB#0:
3878; CHECK-NEXT:    vceqb %v0, %v28, %v30
3879; CHECK-NEXT:    vceqb %v1, %v24, %v26
3880; CHECK-NEXT:    vx %v0, %v1, %v0
3881; CHECK-NEXT:    vuphb %v0, %v0
3882; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
3883; CHECK-NEXT:    br %r14
3884  %cmp0 = icmp eq <2 x i8> %val1, %val2
3885  %cmp1 = icmp eq <2 x i8> %val3, %val4
3886  %and = xor <2 x i1> %cmp0, %cmp1
3887  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
3888  ret <2 x i16> %sel
3889}
3890
3891define <2 x i8> @fun132(<2 x i8> %val1, <2 x i8> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i8> %val5, <2 x i8> %val6) {
3892; CHECK-LABEL: fun132:
3893; CHECK:       # BB#0:
3894; CHECK-NEXT:    vceqh %v1, %v28, %v30
3895; CHECK-NEXT:    vceqb %v0, %v24, %v26
3896; CHECK-NEXT:    vpkh %v1, %v1, %v1
3897; CHECK-NEXT:    vx %v0, %v0, %v1
3898; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
3899; CHECK-NEXT:    br %r14
3900  %cmp0 = icmp eq <2 x i8> %val1, %val2
3901  %cmp1 = icmp eq <2 x i16> %val3, %val4
3902  %and = xor <2 x i1> %cmp0, %cmp1
3903  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
3904  ret <2 x i8> %sel
3905}
3906
3907define <2 x i32> @fun133(<2 x i8> %val1, <2 x i8> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i32> %val5, <2 x i32> %val6) {
3908; CHECK-LABEL: fun133:
3909; CHECK:       # BB#0:
3910; CHECK-NEXT:    vceqb %v1, %v24, %v26
3911; CHECK-NEXT:    vuphb %v1, %v1
3912; CHECK-NEXT:    vceqf %v0, %v28, %v30
3913; CHECK-NEXT:    vuphh %v1, %v1
3914; CHECK-NEXT:    vx %v0, %v1, %v0
3915; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
3916; CHECK-NEXT:    br %r14
3917  %cmp0 = icmp eq <2 x i8> %val1, %val2
3918  %cmp1 = icmp eq <2 x i32> %val3, %val4
3919  %and = xor <2 x i1> %cmp0, %cmp1
3920  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
3921  ret <2 x i32> %sel
3922}
3923
3924define <2 x i32> @fun134(<2 x i8> %val1, <2 x i8> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i32> %val5, <2 x i32> %val6) {
3925; CHECK-LABEL: fun134:
3926; CHECK:       # BB#0:
3927; CHECK-NEXT:    vceqb %v1, %v24, %v26
3928; CHECK-NEXT:    vceqg %v0, %v28, %v30
3929; CHECK-NEXT:    vuphb %v1, %v1
3930; CHECK-NEXT:    vpkg %v0, %v0, %v0
3931; CHECK-NEXT:    vuphh %v1, %v1
3932; CHECK-NEXT:    vx %v0, %v1, %v0
3933; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
3934; CHECK-NEXT:    br %r14
3935  %cmp0 = icmp eq <2 x i8> %val1, %val2
3936  %cmp1 = icmp eq <2 x i64> %val3, %val4
3937  %and = xor <2 x i1> %cmp0, %cmp1
3938  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
3939  ret <2 x i32> %sel
3940}
3941
3942define <2 x i16> @fun135(<2 x i8> %val1, <2 x i8> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i16> %val5, <2 x i16> %val6) {
3943; CHECK-LABEL: fun135:
3944; CHECK:       # BB#0:
3945; CHECK-NEXT:    vmrlf %v0, %v30, %v30
3946; CHECK-NEXT:    vmrlf %v1, %v28, %v28
3947; CHECK-NEXT:    vldeb %v0, %v0
3948; CHECK-NEXT:    vldeb %v1, %v1
3949; CHECK-NEXT:    vfchdb %v0, %v1, %v0
3950; CHECK-NEXT:    vmrhf %v1, %v30, %v30
3951; CHECK-NEXT:    vmrhf %v2, %v28, %v28
3952; CHECK-NEXT:    vldeb %v1, %v1
3953; CHECK-NEXT:    vldeb %v2, %v2
3954; CHECK-NEXT:    vfchdb %v1, %v2, %v1
3955; CHECK-NEXT:    vpkg %v0, %v1, %v0
3956; CHECK-NEXT:    vceqb %v1, %v24, %v26
3957; CHECK-NEXT:    vpkf %v0, %v0, %v0
3958; CHECK-NEXT:    vuphb %v1, %v1
3959; CHECK-NEXT:    vx %v0, %v1, %v0
3960; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
3961; CHECK-NEXT:    br %r14
3962  %cmp0 = icmp eq <2 x i8> %val1, %val2
3963  %cmp1 = fcmp ogt <2 x float> %val3, %val4
3964  %and = xor <2 x i1> %cmp0, %cmp1
3965  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
3966  ret <2 x i16> %sel
3967}
3968
3969define <2 x i64> @fun136(<2 x i8> %val1, <2 x i8> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i64> %val5, <2 x i64> %val6) {
3970; CHECK-LABEL: fun136:
3971; CHECK:       # BB#0:
3972; CHECK-NEXT:    vceqb %v1, %v24, %v26
3973; CHECK-NEXT:    vuphb %v1, %v1
3974; CHECK-NEXT:    vuphh %v1, %v1
3975; CHECK-NEXT:    vfchdb %v0, %v28, %v30
3976; CHECK-NEXT:    vuphf %v1, %v1
3977; CHECK-NEXT:    vx %v0, %v1, %v0
3978; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
3979; CHECK-NEXT:    br %r14
3980  %cmp0 = icmp eq <2 x i8> %val1, %val2
3981  %cmp1 = fcmp ogt <2 x double> %val3, %val4
3982  %and = xor <2 x i1> %cmp0, %cmp1
3983  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
3984  ret <2 x i64> %sel
3985}
3986
3987define <2 x i8> @fun137(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i8> %val5, <2 x i8> %val6) {
3988; CHECK-LABEL: fun137:
3989; CHECK:       # BB#0:
3990; CHECK-NEXT:    vceqh %v0, %v28, %v30
3991; CHECK-NEXT:    vceqh %v1, %v24, %v26
3992; CHECK-NEXT:    vx %v0, %v1, %v0
3993; CHECK-NEXT:    vpkh %v0, %v0, %v0
3994; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
3995; CHECK-NEXT:    br %r14
3996  %cmp0 = icmp eq <2 x i16> %val1, %val2
3997  %cmp1 = icmp eq <2 x i16> %val3, %val4
3998  %and = xor <2 x i1> %cmp0, %cmp1
3999  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
4000  ret <2 x i8> %sel
4001}
4002
4003define <2 x i16> @fun138(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i16> %val5, <2 x i16> %val6) {
4004; CHECK-LABEL: fun138:
4005; CHECK:       # BB#0:
4006; CHECK-NEXT:    vceqh %v0, %v28, %v30
4007; CHECK-NEXT:    vceqh %v1, %v24, %v26
4008; CHECK-NEXT:    vx %v0, %v1, %v0
4009; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4010; CHECK-NEXT:    br %r14
4011  %cmp0 = icmp eq <2 x i16> %val1, %val2
4012  %cmp1 = icmp eq <2 x i16> %val3, %val4
4013  %and = xor <2 x i1> %cmp0, %cmp1
4014  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
4015  ret <2 x i16> %sel
4016}
4017
4018define <2 x i32> @fun139(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i32> %val5, <2 x i32> %val6) {
4019; CHECK-LABEL: fun139:
4020; CHECK:       # BB#0:
4021; CHECK-NEXT:    vceqh %v0, %v28, %v30
4022; CHECK-NEXT:    vceqh %v1, %v24, %v26
4023; CHECK-NEXT:    vx %v0, %v1, %v0
4024; CHECK-NEXT:    vuphh %v0, %v0
4025; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4026; CHECK-NEXT:    br %r14
4027  %cmp0 = icmp eq <2 x i16> %val1, %val2
4028  %cmp1 = icmp eq <2 x i16> %val3, %val4
4029  %and = xor <2 x i1> %cmp0, %cmp1
4030  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
4031  ret <2 x i32> %sel
4032}
4033
4034define <2 x i8> @fun140(<2 x i16> %val1, <2 x i16> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i8> %val5, <2 x i8> %val6) {
4035; CHECK-LABEL: fun140:
4036; CHECK:       # BB#0:
4037; CHECK-NEXT:    vceqf %v1, %v28, %v30
4038; CHECK-NEXT:    vceqh %v0, %v24, %v26
4039; CHECK-NEXT:    vpkf %v1, %v1, %v1
4040; CHECK-NEXT:    vx %v0, %v0, %v1
4041; CHECK-NEXT:    vpkh %v0, %v0, %v0
4042; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4043; CHECK-NEXT:    br %r14
4044  %cmp0 = icmp eq <2 x i16> %val1, %val2
4045  %cmp1 = icmp eq <2 x i32> %val3, %val4
4046  %and = xor <2 x i1> %cmp0, %cmp1
4047  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
4048  ret <2 x i8> %sel
4049}
4050
4051define <2 x i8> @fun141(<2 x i16> %val1, <2 x i16> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i8> %val5, <2 x i8> %val6) {
4052; CHECK-LABEL: fun141:
4053; CHECK:       # BB#0:
4054; CHECK-NEXT:    larl %r1, .LCPI141_0
4055; CHECK-NEXT:    vl %v1, 0(%r1)
4056; CHECK-NEXT:    vceqg %v0, %v28, %v30
4057; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
4058; CHECK-NEXT:    vceqh %v1, %v24, %v26
4059; CHECK-NEXT:    vx %v0, %v1, %v0
4060; CHECK-NEXT:    vpkh %v0, %v0, %v0
4061; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4062; CHECK-NEXT:    br %r14
4063  %cmp0 = icmp eq <2 x i16> %val1, %val2
4064  %cmp1 = icmp eq <2 x i64> %val3, %val4
4065  %and = xor <2 x i1> %cmp0, %cmp1
4066  %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
4067  ret <2 x i8> %sel
4068}
4069
4070define <2 x double> @fun142(<2 x i16> %val1, <2 x i16> %val2, <2 x float> %val3, <2 x float> %val4, <2 x double> %val5, <2 x double> %val6) {
4071; CHECK-LABEL: fun142:
4072; CHECK:       # BB#0:
4073; CHECK-NEXT:    vmrlf %v0, %v30, %v30
4074; CHECK-NEXT:    vmrlf %v1, %v28, %v28
4075; CHECK-NEXT:    vldeb %v0, %v0
4076; CHECK-NEXT:    vldeb %v1, %v1
4077; CHECK-NEXT:    vfchdb %v0, %v1, %v0
4078; CHECK-NEXT:    vmrhf %v1, %v30, %v30
4079; CHECK-NEXT:    vmrhf %v2, %v28, %v28
4080; CHECK-NEXT:    vldeb %v1, %v1
4081; CHECK-NEXT:    vldeb %v2, %v2
4082; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4083; CHECK-NEXT:    vpkg %v0, %v1, %v0
4084; CHECK-NEXT:    vceqh %v1, %v24, %v26
4085; CHECK-NEXT:    vuphh %v1, %v1
4086; CHECK-NEXT:    vx %v0, %v1, %v0
4087; CHECK-NEXT:    vuphf %v0, %v0
4088; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4089; CHECK-NEXT:    br %r14
4090  %cmp0 = icmp eq <2 x i16> %val1, %val2
4091  %cmp1 = fcmp ogt <2 x float> %val3, %val4
4092  %and = xor <2 x i1> %cmp0, %cmp1
4093  %sel = select <2 x i1> %and, <2 x double> %val5, <2 x double> %val6
4094  ret <2 x double> %sel
4095}
4096
4097define <2 x i16> @fun143(<2 x i16> %val1, <2 x i16> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i16> %val5, <2 x i16> %val6) {
4098; CHECK-LABEL: fun143:
4099; CHECK:       # BB#0:
4100; CHECK-NEXT:    larl %r1, .LCPI143_0
4101; CHECK-NEXT:    vl %v1, 0(%r1)
4102; CHECK-NEXT:    vfchdb %v0, %v28, %v30
4103; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
4104; CHECK-NEXT:    vceqh %v1, %v24, %v26
4105; CHECK-NEXT:    vx %v0, %v1, %v0
4106; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4107; CHECK-NEXT:    br %r14
4108  %cmp0 = icmp eq <2 x i16> %val1, %val2
4109  %cmp1 = fcmp ogt <2 x double> %val3, %val4
4110  %and = xor <2 x i1> %cmp0, %cmp1
4111  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
4112  ret <2 x i16> %sel
4113}
4114
4115define <2 x i16> @fun144(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i16> %val5, <2 x i16> %val6) {
4116; CHECK-LABEL: fun144:
4117; CHECK:       # BB#0:
4118; CHECK-NEXT:    vceqf %v0, %v28, %v30
4119; CHECK-NEXT:    vceqf %v1, %v24, %v26
4120; CHECK-NEXT:    vx %v0, %v1, %v0
4121; CHECK-NEXT:    vpkf %v0, %v0, %v0
4122; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4123; CHECK-NEXT:    br %r14
4124  %cmp0 = icmp eq <2 x i32> %val1, %val2
4125  %cmp1 = icmp eq <2 x i32> %val3, %val4
4126  %and = xor <2 x i1> %cmp0, %cmp1
4127  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
4128  ret <2 x i16> %sel
4129}
4130
4131define <2 x i32> @fun145(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i32> %val5, <2 x i32> %val6) {
4132; CHECK-LABEL: fun145:
4133; CHECK:       # BB#0:
4134; CHECK-NEXT:    vceqf %v0, %v28, %v30
4135; CHECK-NEXT:    vceqf %v1, %v24, %v26
4136; CHECK-NEXT:    vx %v0, %v1, %v0
4137; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4138; CHECK-NEXT:    br %r14
4139  %cmp0 = icmp eq <2 x i32> %val1, %val2
4140  %cmp1 = icmp eq <2 x i32> %val3, %val4
4141  %and = xor <2 x i1> %cmp0, %cmp1
4142  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
4143  ret <2 x i32> %sel
4144}
4145
4146define <2 x i64> @fun146(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i64> %val5, <2 x i64> %val6) {
4147; CHECK-LABEL: fun146:
4148; CHECK:       # BB#0:
4149; CHECK-NEXT:    vceqf %v0, %v28, %v30
4150; CHECK-NEXT:    vceqf %v1, %v24, %v26
4151; CHECK-NEXT:    vx %v0, %v1, %v0
4152; CHECK-NEXT:    vuphf %v0, %v0
4153; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4154; CHECK-NEXT:    br %r14
4155  %cmp0 = icmp eq <2 x i32> %val1, %val2
4156  %cmp1 = icmp eq <2 x i32> %val3, %val4
4157  %and = xor <2 x i1> %cmp0, %cmp1
4158  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
4159  ret <2 x i64> %sel
4160}
4161
4162define <2 x i64> @fun147(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) {
4163; CHECK-LABEL: fun147:
4164; CHECK:       # BB#0:
4165; CHECK-NEXT:    vceqf %v1, %v24, %v26
4166; CHECK-NEXT:    vceqg %v0, %v28, %v30
4167; CHECK-NEXT:    vuphf %v1, %v1
4168; CHECK-NEXT:    vx %v0, %v1, %v0
4169; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4170; CHECK-NEXT:    br %r14
4171  %cmp0 = icmp eq <2 x i32> %val1, %val2
4172  %cmp1 = icmp eq <2 x i64> %val3, %val4
4173  %and = xor <2 x i1> %cmp0, %cmp1
4174  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
4175  ret <2 x i64> %sel
4176}
4177
4178define <2 x i16> @fun148(<2 x i32> %val1, <2 x i32> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i16> %val5, <2 x i16> %val6) {
4179; CHECK-LABEL: fun148:
4180; CHECK:       # BB#0:
4181; CHECK-NEXT:    vmrlf %v0, %v30, %v30
4182; CHECK-NEXT:    vmrlf %v1, %v28, %v28
4183; CHECK-NEXT:    vldeb %v0, %v0
4184; CHECK-NEXT:    vldeb %v1, %v1
4185; CHECK-NEXT:    vfchdb %v0, %v1, %v0
4186; CHECK-NEXT:    vmrhf %v1, %v30, %v30
4187; CHECK-NEXT:    vmrhf %v2, %v28, %v28
4188; CHECK-NEXT:    vldeb %v1, %v1
4189; CHECK-NEXT:    vldeb %v2, %v2
4190; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4191; CHECK-NEXT:    vpkg %v0, %v1, %v0
4192; CHECK-NEXT:    vceqf %v1, %v24, %v26
4193; CHECK-NEXT:    vx %v0, %v1, %v0
4194; CHECK-NEXT:    vpkf %v0, %v0, %v0
4195; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4196; CHECK-NEXT:    br %r14
4197  %cmp0 = icmp eq <2 x i32> %val1, %val2
4198  %cmp1 = fcmp ogt <2 x float> %val3, %val4
4199  %and = xor <2 x i1> %cmp0, %cmp1
4200  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
4201  ret <2 x i16> %sel
4202}
4203
4204define <2 x float> @fun149(<2 x i32> %val1, <2 x i32> %val2, <2 x double> %val3, <2 x double> %val4, <2 x float> %val5, <2 x float> %val6) {
4205; CHECK-LABEL: fun149:
4206; CHECK:       # BB#0:
4207; CHECK-NEXT:    vfchdb %v1, %v28, %v30
4208; CHECK-NEXT:    vceqf %v0, %v24, %v26
4209; CHECK-NEXT:    vpkg %v1, %v1, %v1
4210; CHECK-NEXT:    vx %v0, %v0, %v1
4211; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4212; CHECK-NEXT:    br %r14
4213  %cmp0 = icmp eq <2 x i32> %val1, %val2
4214  %cmp1 = fcmp ogt <2 x double> %val3, %val4
4215  %and = xor <2 x i1> %cmp0, %cmp1
4216  %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6
4217  ret <2 x float> %sel
4218}
4219
4220define <2 x i16> @fun150(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i16> %val5, <2 x i16> %val6) {
4221; CHECK-LABEL: fun150:
4222; CHECK:       # BB#0:
4223; CHECK-NEXT:    vceqg %v0, %v28, %v30
4224; CHECK-NEXT:    vceqg %v1, %v24, %v26
4225; CHECK-NEXT:    larl %r1, .LCPI150_0
4226; CHECK-NEXT:    vx %v0, %v1, %v0
4227; CHECK-NEXT:    vl %v1, 0(%r1)
4228; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
4229; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4230; CHECK-NEXT:    br %r14
4231  %cmp0 = icmp eq <2 x i64> %val1, %val2
4232  %cmp1 = icmp eq <2 x i64> %val3, %val4
4233  %and = xor <2 x i1> %cmp0, %cmp1
4234  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
4235  ret <2 x i16> %sel
4236}
4237
4238define <2 x i64> @fun151(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) {
4239; CHECK-LABEL: fun151:
4240; CHECK:       # BB#0:
4241; CHECK-NEXT:    vceqg %v0, %v28, %v30
4242; CHECK-NEXT:    vceqg %v1, %v24, %v26
4243; CHECK-NEXT:    vx %v0, %v1, %v0
4244; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4245; CHECK-NEXT:    br %r14
4246  %cmp0 = icmp eq <2 x i64> %val1, %val2
4247  %cmp1 = icmp eq <2 x i64> %val3, %val4
4248  %and = xor <2 x i1> %cmp0, %cmp1
4249  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
4250  ret <2 x i64> %sel
4251}
4252
4253define <2 x i64> @fun152(<2 x i64> %val1, <2 x i64> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i64> %val5, <2 x i64> %val6) {
4254; CHECK-LABEL: fun152:
4255; CHECK:       # BB#0:
4256; CHECK-NEXT:    vmrlf %v0, %v30, %v30
4257; CHECK-NEXT:    vmrlf %v1, %v28, %v28
4258; CHECK-NEXT:    vldeb %v0, %v0
4259; CHECK-NEXT:    vldeb %v1, %v1
4260; CHECK-NEXT:    vfchdb %v0, %v1, %v0
4261; CHECK-NEXT:    vmrhf %v1, %v30, %v30
4262; CHECK-NEXT:    vmrhf %v2, %v28, %v28
4263; CHECK-NEXT:    vldeb %v1, %v1
4264; CHECK-NEXT:    vldeb %v2, %v2
4265; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4266; CHECK-NEXT:    vpkg %v0, %v1, %v0
4267; CHECK-NEXT:    vuphf %v0, %v0
4268; CHECK-NEXT:    vceqg %v1, %v24, %v26
4269; CHECK-NEXT:    vx %v0, %v1, %v0
4270; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4271; CHECK-NEXT:    br %r14
4272  %cmp0 = icmp eq <2 x i64> %val1, %val2
4273  %cmp1 = fcmp ogt <2 x float> %val3, %val4
4274  %and = xor <2 x i1> %cmp0, %cmp1
4275  %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
4276  ret <2 x i64> %sel
4277}
4278
4279define <2 x i16> @fun153(<2 x i64> %val1, <2 x i64> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i16> %val5, <2 x i16> %val6) {
4280; CHECK-LABEL: fun153:
4281; CHECK:       # BB#0:
4282; CHECK-NEXT:    vfchdb %v0, %v28, %v30
4283; CHECK-NEXT:    vceqg %v1, %v24, %v26
4284; CHECK-NEXT:    larl %r1, .LCPI153_0
4285; CHECK-NEXT:    vx %v0, %v1, %v0
4286; CHECK-NEXT:    vl %v1, 0(%r1)
4287; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
4288; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4289; CHECK-NEXT:    br %r14
4290  %cmp0 = icmp eq <2 x i64> %val1, %val2
4291  %cmp1 = fcmp ogt <2 x double> %val3, %val4
4292  %and = xor <2 x i1> %cmp0, %cmp1
4293  %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
4294  ret <2 x i16> %sel
4295}
4296
4297define <2 x float> @fun154(<2 x float> %val1, <2 x float> %val2, <2 x float> %val3, <2 x float> %val4, <2 x float> %val5, <2 x float> %val6) {
4298; CHECK-LABEL: fun154:
4299; CHECK:       # BB#0:
4300; CHECK-NEXT:    vmrlf %v0, %v30, %v30
4301; CHECK-NEXT:    vmrlf %v1, %v28, %v28
4302; CHECK-NEXT:    vldeb %v0, %v0
4303; CHECK-NEXT:    vldeb %v1, %v1
4304; CHECK-NEXT:    vfchdb %v0, %v1, %v0
4305; CHECK-NEXT:    vmrhf %v1, %v30, %v30
4306; CHECK-NEXT:    vmrhf %v2, %v28, %v28
4307; CHECK-NEXT:    vldeb %v1, %v1
4308; CHECK-NEXT:    vmrhf %v3, %v24, %v24
4309; CHECK-NEXT:    vldeb %v2, %v2
4310; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4311; CHECK-NEXT:    vpkg %v0, %v1, %v0
4312; CHECK-NEXT:    vmrlf %v1, %v26, %v26
4313; CHECK-NEXT:    vmrlf %v2, %v24, %v24
4314; CHECK-NEXT:    vldeb %v1, %v1
4315; CHECK-NEXT:    vldeb %v2, %v2
4316; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4317; CHECK-NEXT:    vmrhf %v2, %v26, %v26
4318; CHECK-NEXT:    vldeb %v2, %v2
4319; CHECK-NEXT:    vldeb %v3, %v3
4320; CHECK-NEXT:    vfchdb %v2, %v3, %v2
4321; CHECK-NEXT:    vpkg %v1, %v2, %v1
4322; CHECK-NEXT:    vx %v0, %v1, %v0
4323; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4324; CHECK-NEXT:    br %r14
4325  %cmp0 = fcmp ogt <2 x float> %val1, %val2
4326  %cmp1 = fcmp ogt <2 x float> %val3, %val4
4327  %and = xor <2 x i1> %cmp0, %cmp1
4328  %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6
4329  ret <2 x float> %sel
4330}
4331
4332define <2 x i32> @fun155(<2 x float> %val1, <2 x float> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i32> %val5, <2 x i32> %val6) {
4333; CHECK-LABEL: fun155:
4334; CHECK:       # BB#0:
4335; CHECK-NEXT:    vmrlf %v0, %v26, %v26
4336; CHECK-NEXT:    vmrlf %v1, %v24, %v24
4337; CHECK-NEXT:    vldeb %v0, %v0
4338; CHECK-NEXT:    vldeb %v1, %v1
4339; CHECK-NEXT:    vfchdb %v0, %v1, %v0
4340; CHECK-NEXT:    vmrhf %v1, %v26, %v26
4341; CHECK-NEXT:    vmrhf %v2, %v24, %v24
4342; CHECK-NEXT:    vldeb %v1, %v1
4343; CHECK-NEXT:    vldeb %v2, %v2
4344; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4345; CHECK-NEXT:    vpkg %v0, %v1, %v0
4346; CHECK-NEXT:    vfchdb %v1, %v28, %v30
4347; CHECK-NEXT:    vpkg %v1, %v1, %v1
4348; CHECK-NEXT:    vx %v0, %v0, %v1
4349; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4350; CHECK-NEXT:    br %r14
4351  %cmp0 = fcmp ogt <2 x float> %val1, %val2
4352  %cmp1 = fcmp ogt <2 x double> %val3, %val4
4353  %and = xor <2 x i1> %cmp0, %cmp1
4354  %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
4355  ret <2 x i32> %sel
4356}
4357
4358define <4 x i16> @fun156(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i16> %val5, <4 x i16> %val6) {
4359; CHECK-LABEL: fun156:
4360; CHECK:       # BB#0:
4361; CHECK-NEXT:    vceqf %v0, %v28, %v30
4362; CHECK-NEXT:    vceqf %v1, %v24, %v26
4363; CHECK-NEXT:    vx %v0, %v1, %v0
4364; CHECK-NEXT:    vpkf %v0, %v0, %v0
4365; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4366; CHECK-NEXT:    br %r14
4367  %cmp0 = icmp eq <4 x i32> %val1, %val2
4368  %cmp1 = icmp eq <4 x i32> %val3, %val4
4369  %and = xor <4 x i1> %cmp0, %cmp1
4370  %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6
4371  ret <4 x i16> %sel
4372}
4373
4374define <4 x i32> @fun157(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i32> %val5, <4 x i32> %val6) {
4375; CHECK-LABEL: fun157:
4376; CHECK:       # BB#0:
4377; CHECK-NEXT:    vceqf %v0, %v28, %v30
4378; CHECK-NEXT:    vceqf %v1, %v24, %v26
4379; CHECK-NEXT:    vx %v0, %v1, %v0
4380; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4381; CHECK-NEXT:    br %r14
4382  %cmp0 = icmp eq <4 x i32> %val1, %val2
4383  %cmp1 = icmp eq <4 x i32> %val3, %val4
4384  %and = xor <4 x i1> %cmp0, %cmp1
4385  %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6
4386  ret <4 x i32> %sel
4387}
4388
4389define <4 x i64> @fun158(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i64> %val5, <4 x i64> %val6) {
4390; CHECK-LABEL: fun158:
4391; CHECK:       # BB#0:
4392; CHECK-NEXT:    vceqf %v0, %v28, %v30
4393; CHECK-NEXT:    vceqf %v1, %v24, %v26
4394; CHECK-NEXT:    vx %v0, %v1, %v0
4395; CHECK-NEXT:    vuphf %v1, %v0
4396; CHECK-NEXT:    vmrlg %v0, %v0, %v0
4397; CHECK-NEXT:    vuphf %v0, %v0
4398; CHECK-NEXT:    vsel %v24, %v25, %v29, %v1
4399; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
4400; CHECK-NEXT:    br %r14
4401  %cmp0 = icmp eq <4 x i32> %val1, %val2
4402  %cmp1 = icmp eq <4 x i32> %val3, %val4
4403  %and = xor <4 x i1> %cmp0, %cmp1
4404  %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6
4405  ret <4 x i64> %sel
4406}
4407
4408define <4 x i32> @fun159(<4 x i32> %val1, <4 x i32> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i32> %val5, <4 x i32> %val6) {
4409; CHECK-LABEL: fun159:
4410; CHECK:       # BB#0:
4411; CHECK-NEXT:    vceqg %v0, %v30, %v27
4412; CHECK-NEXT:    vceqg %v1, %v28, %v25
4413; CHECK-NEXT:    vpkg %v0, %v1, %v0
4414; CHECK-NEXT:    vceqf %v1, %v24, %v26
4415; CHECK-NEXT:    vx %v0, %v1, %v0
4416; CHECK-NEXT:    vsel %v24, %v29, %v31, %v0
4417; CHECK-NEXT:    br %r14
4418  %cmp0 = icmp eq <4 x i32> %val1, %val2
4419  %cmp1 = icmp eq <4 x i64> %val3, %val4
4420  %and = xor <4 x i1> %cmp0, %cmp1
4421  %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6
4422  ret <4 x i32> %sel
4423}
4424
4425define <4 x i16> @fun160(<4 x i32> %val1, <4 x i32> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i16> %val5, <4 x i16> %val6) {
4426; CHECK-LABEL: fun160:
4427; CHECK:       # BB#0:
4428; CHECK-NEXT:    vmrlf %v0, %v30, %v30
4429; CHECK-NEXT:    vmrlf %v1, %v28, %v28
4430; CHECK-NEXT:    vldeb %v0, %v0
4431; CHECK-NEXT:    vldeb %v1, %v1
4432; CHECK-NEXT:    vfchdb %v0, %v1, %v0
4433; CHECK-NEXT:    vmrhf %v1, %v30, %v30
4434; CHECK-NEXT:    vmrhf %v2, %v28, %v28
4435; CHECK-NEXT:    vldeb %v1, %v1
4436; CHECK-NEXT:    vldeb %v2, %v2
4437; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4438; CHECK-NEXT:    vpkg %v0, %v1, %v0
4439; CHECK-NEXT:    vceqf %v1, %v24, %v26
4440; CHECK-NEXT:    vx %v0, %v1, %v0
4441; CHECK-NEXT:    vpkf %v0, %v0, %v0
4442; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4443; CHECK-NEXT:    br %r14
4444  %cmp0 = icmp eq <4 x i32> %val1, %val2
4445  %cmp1 = fcmp ogt <4 x float> %val3, %val4
4446  %and = xor <4 x i1> %cmp0, %cmp1
4447  %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6
4448  ret <4 x i16> %sel
4449}
4450
4451define <4 x i8> @fun161(<4 x i32> %val1, <4 x i32> %val2, <4 x double> %val3, <4 x double> %val4, <4 x i8> %val5, <4 x i8> %val6) {
4452; CHECK-LABEL: fun161:
4453; CHECK:       # BB#0:
4454; CHECK-NEXT:    vfchdb %v0, %v30, %v27
4455; CHECK-NEXT:    vfchdb %v1, %v28, %v25
4456; CHECK-NEXT:    vpkg %v0, %v1, %v0
4457; CHECK-NEXT:    vceqf %v1, %v24, %v26
4458; CHECK-NEXT:    larl %r1, .LCPI161_0
4459; CHECK-NEXT:    vx %v0, %v1, %v0
4460; CHECK-NEXT:    vl %v1, 0(%r1)
4461; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
4462; CHECK-NEXT:    vsel %v24, %v29, %v31, %v0
4463; CHECK-NEXT:    br %r14
4464  %cmp0 = icmp eq <4 x i32> %val1, %val2
4465  %cmp1 = fcmp ogt <4 x double> %val3, %val4
4466  %and = xor <4 x i1> %cmp0, %cmp1
4467  %sel = select <4 x i1> %and, <4 x i8> %val5, <4 x i8> %val6
4468  ret <4 x i8> %sel
4469}
4470
4471define <4 x i32> @fun162(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i32> %val5, <4 x i32> %val6) {
4472; CHECK-LABEL: fun162:
4473; CHECK:       # BB#0:
4474; CHECK-NEXT:    vceqg %v0, %v27, %v31
4475; CHECK-NEXT:    vceqg %v1, %v26, %v30
4476; CHECK-NEXT:    vx %v0, %v1, %v0
4477; CHECK-NEXT:    vceqg %v1, %v25, %v29
4478; CHECK-NEXT:    vceqg %v2, %v24, %v28
4479; CHECK-NEXT:    vx %v1, %v2, %v1
4480; CHECK-NEXT:    vpkg %v0, %v1, %v0
4481; CHECK-NEXT:    vl %v1, 176(%r15)
4482; CHECK-NEXT:    vl %v2, 160(%r15)
4483; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
4484; CHECK-NEXT:    br %r14
4485  %cmp0 = icmp eq <4 x i64> %val1, %val2
4486  %cmp1 = icmp eq <4 x i64> %val3, %val4
4487  %and = xor <4 x i1> %cmp0, %cmp1
4488  %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6
4489  ret <4 x i32> %sel
4490}
4491
4492define <4 x i64> @fun163(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i64> %val5, <4 x i64> %val6) {
4493; CHECK-LABEL: fun163:
4494; CHECK:       # BB#0:
4495; CHECK-NEXT:    vceqg %v0, %v25, %v29
4496; CHECK-NEXT:    vceqg %v1, %v24, %v28
4497; CHECK-NEXT:    vx %v0, %v1, %v0
4498; CHECK-NEXT:    vl %v1, 192(%r15)
4499; CHECK-NEXT:    vl %v2, 160(%r15)
4500; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
4501; CHECK-NEXT:    vceqg %v0, %v27, %v31
4502; CHECK-NEXT:    vceqg %v1, %v26, %v30
4503; CHECK-NEXT:    vx %v0, %v1, %v0
4504; CHECK-NEXT:    vl %v1, 208(%r15)
4505; CHECK-NEXT:    vl %v2, 176(%r15)
4506; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
4507; CHECK-NEXT:    br %r14
4508  %cmp0 = icmp eq <4 x i64> %val1, %val2
4509  %cmp1 = icmp eq <4 x i64> %val3, %val4
4510  %and = xor <4 x i1> %cmp0, %cmp1
4511  %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6
4512  ret <4 x i64> %sel
4513}
4514
4515define <4 x i64> @fun164(<4 x i64> %val1, <4 x i64> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i64> %val5, <4 x i64> %val6) {
4516; CHECK-LABEL: fun164:
4517; CHECK:       # BB#0:
4518; CHECK-NEXT:    vmrlf %v0, %v27, %v27
4519; CHECK-NEXT:    vmrlf %v1, %v25, %v25
4520; CHECK-NEXT:    vldeb %v0, %v0
4521; CHECK-NEXT:    vldeb %v1, %v1
4522; CHECK-NEXT:    vfchdb %v0, %v1, %v0
4523; CHECK-NEXT:    vmrhf %v1, %v27, %v27
4524; CHECK-NEXT:    vmrhf %v2, %v25, %v25
4525; CHECK-NEXT:    vldeb %v1, %v1
4526; CHECK-NEXT:    vldeb %v2, %v2
4527; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4528; CHECK-NEXT:    vpkg %v0, %v1, %v0
4529; CHECK-NEXT:    vuphf %v1, %v0
4530; CHECK-NEXT:    vceqg %v2, %v24, %v28
4531; CHECK-NEXT:    vx %v1, %v2, %v1
4532; CHECK-NEXT:    vl %v2, 160(%r15)
4533; CHECK-NEXT:    vmrlg %v0, %v0, %v0
4534; CHECK-NEXT:    vsel %v24, %v29, %v2, %v1
4535; CHECK-NEXT:    vuphf %v0, %v0
4536; CHECK-NEXT:    vceqg %v1, %v26, %v30
4537; CHECK-NEXT:    vx %v0, %v1, %v0
4538; CHECK-NEXT:    vl %v1, 176(%r15)
4539; CHECK-NEXT:    vsel %v26, %v31, %v1, %v0
4540; CHECK-NEXT:    br %r14
4541  %cmp0 = icmp eq <4 x i64> %val1, %val2
4542  %cmp1 = fcmp ogt <4 x float> %val3, %val4
4543  %and = xor <4 x i1> %cmp0, %cmp1
4544  %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6
4545  ret <4 x i64> %sel
4546}
4547
4548define <4 x float> @fun165(<4 x i64> %val1, <4 x i64> %val2, <4 x double> %val3, <4 x double> %val4, <4 x float> %val5, <4 x float> %val6) {
4549; CHECK-LABEL: fun165:
4550; CHECK:       # BB#0:
4551; CHECK-NEXT:    vfchdb %v0, %v27, %v31
4552; CHECK-NEXT:    vceqg %v1, %v26, %v30
4553; CHECK-NEXT:    vx %v0, %v1, %v0
4554; CHECK-NEXT:    vfchdb %v1, %v25, %v29
4555; CHECK-NEXT:    vceqg %v2, %v24, %v28
4556; CHECK-NEXT:    vx %v1, %v2, %v1
4557; CHECK-NEXT:    vpkg %v0, %v1, %v0
4558; CHECK-NEXT:    vl %v1, 176(%r15)
4559; CHECK-NEXT:    vl %v2, 160(%r15)
4560; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
4561; CHECK-NEXT:    br %r14
4562  %cmp0 = icmp eq <4 x i64> %val1, %val2
4563  %cmp1 = fcmp ogt <4 x double> %val3, %val4
4564  %and = xor <4 x i1> %cmp0, %cmp1
4565  %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6
4566  ret <4 x float> %sel
4567}
4568
4569define <4 x i16> @fun166(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i16> %val5, <4 x i16> %val6) {
4570; CHECK-LABEL: fun166:
4571; CHECK:       # BB#0:
4572; CHECK-NEXT:    vmrlf %v0, %v30, %v30
4573; CHECK-NEXT:    vmrlf %v1, %v28, %v28
4574; CHECK-NEXT:    vldeb %v0, %v0
4575; CHECK-NEXT:    vldeb %v1, %v1
4576; CHECK-NEXT:    vfchdb %v0, %v1, %v0
4577; CHECK-NEXT:    vmrhf %v1, %v30, %v30
4578; CHECK-NEXT:    vmrhf %v2, %v28, %v28
4579; CHECK-NEXT:    vldeb %v1, %v1
4580; CHECK-NEXT:    vmrhf %v3, %v24, %v24
4581; CHECK-NEXT:    vldeb %v2, %v2
4582; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4583; CHECK-NEXT:    vpkg %v0, %v1, %v0
4584; CHECK-NEXT:    vmrlf %v1, %v26, %v26
4585; CHECK-NEXT:    vmrlf %v2, %v24, %v24
4586; CHECK-NEXT:    vldeb %v1, %v1
4587; CHECK-NEXT:    vldeb %v2, %v2
4588; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4589; CHECK-NEXT:    vmrhf %v2, %v26, %v26
4590; CHECK-NEXT:    vldeb %v2, %v2
4591; CHECK-NEXT:    vldeb %v3, %v3
4592; CHECK-NEXT:    vfchdb %v2, %v3, %v2
4593; CHECK-NEXT:    vpkg %v1, %v2, %v1
4594; CHECK-NEXT:    vx %v0, %v1, %v0
4595; CHECK-NEXT:    vpkf %v0, %v0, %v0
4596; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4597; CHECK-NEXT:    br %r14
4598  %cmp0 = fcmp ogt <4 x float> %val1, %val2
4599  %cmp1 = fcmp ogt <4 x float> %val3, %val4
4600  %and = xor <4 x i1> %cmp0, %cmp1
4601  %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6
4602  ret <4 x i16> %sel
4603}
4604
4605define <4 x float> @fun167(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x float> %val5, <4 x float> %val6) {
4606; CHECK-LABEL: fun167:
4607; CHECK:       # BB#0:
4608; CHECK-NEXT:    vmrlf %v0, %v30, %v30
4609; CHECK-NEXT:    vmrlf %v1, %v28, %v28
4610; CHECK-NEXT:    vldeb %v0, %v0
4611; CHECK-NEXT:    vldeb %v1, %v1
4612; CHECK-NEXT:    vfchdb %v0, %v1, %v0
4613; CHECK-NEXT:    vmrhf %v1, %v30, %v30
4614; CHECK-NEXT:    vmrhf %v2, %v28, %v28
4615; CHECK-NEXT:    vldeb %v1, %v1
4616; CHECK-NEXT:    vmrhf %v3, %v24, %v24
4617; CHECK-NEXT:    vldeb %v2, %v2
4618; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4619; CHECK-NEXT:    vpkg %v0, %v1, %v0
4620; CHECK-NEXT:    vmrlf %v1, %v26, %v26
4621; CHECK-NEXT:    vmrlf %v2, %v24, %v24
4622; CHECK-NEXT:    vldeb %v1, %v1
4623; CHECK-NEXT:    vldeb %v2, %v2
4624; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4625; CHECK-NEXT:    vmrhf %v2, %v26, %v26
4626; CHECK-NEXT:    vldeb %v2, %v2
4627; CHECK-NEXT:    vldeb %v3, %v3
4628; CHECK-NEXT:    vfchdb %v2, %v3, %v2
4629; CHECK-NEXT:    vpkg %v1, %v2, %v1
4630; CHECK-NEXT:    vx %v0, %v1, %v0
4631; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4632; CHECK-NEXT:    br %r14
4633  %cmp0 = fcmp ogt <4 x float> %val1, %val2
4634  %cmp1 = fcmp ogt <4 x float> %val3, %val4
4635  %and = xor <4 x i1> %cmp0, %cmp1
4636  %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6
4637  ret <4 x float> %sel
4638}
4639
4640define <4 x double> @fun168(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x double> %val5, <4 x double> %val6) {
4641; CHECK-LABEL: fun168:
4642; CHECK:       # BB#0:
4643; CHECK-NEXT:    vmrlf %v0, %v30, %v30
4644; CHECK-NEXT:    vmrlf %v1, %v28, %v28
4645; CHECK-NEXT:    vldeb %v0, %v0
4646; CHECK-NEXT:    vldeb %v1, %v1
4647; CHECK-NEXT:    vfchdb %v0, %v1, %v0
4648; CHECK-NEXT:    vmrhf %v1, %v30, %v30
4649; CHECK-NEXT:    vmrhf %v2, %v28, %v28
4650; CHECK-NEXT:    vldeb %v1, %v1
4651; CHECK-NEXT:    vmrhf %v3, %v24, %v24
4652; CHECK-NEXT:    vldeb %v2, %v2
4653; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4654; CHECK-NEXT:    vpkg %v0, %v1, %v0
4655; CHECK-NEXT:    vmrlf %v1, %v26, %v26
4656; CHECK-NEXT:    vmrlf %v2, %v24, %v24
4657; CHECK-NEXT:    vldeb %v1, %v1
4658; CHECK-NEXT:    vldeb %v2, %v2
4659; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4660; CHECK-NEXT:    vmrhf %v2, %v26, %v26
4661; CHECK-NEXT:    vldeb %v2, %v2
4662; CHECK-NEXT:    vldeb %v3, %v3
4663; CHECK-NEXT:    vfchdb %v2, %v3, %v2
4664; CHECK-NEXT:    vpkg %v1, %v2, %v1
4665; CHECK-NEXT:    vx %v0, %v1, %v0
4666; CHECK-NEXT:    vuphf %v1, %v0
4667; CHECK-NEXT:    vmrlg %v0, %v0, %v0
4668; CHECK-NEXT:    vuphf %v0, %v0
4669; CHECK-NEXT:    vsel %v24, %v25, %v29, %v1
4670; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
4671; CHECK-NEXT:    br %r14
4672  %cmp0 = fcmp ogt <4 x float> %val1, %val2
4673  %cmp1 = fcmp ogt <4 x float> %val3, %val4
4674  %and = xor <4 x i1> %cmp0, %cmp1
4675  %sel = select <4 x i1> %and, <4 x double> %val5, <4 x double> %val6
4676  ret <4 x double> %sel
4677}
4678
4679define <4 x i8> @fun169(<4 x float> %val1, <4 x float> %val2, <4 x double> %val3, <4 x double> %val4, <4 x i8> %val5, <4 x i8> %val6) {
4680; CHECK-LABEL: fun169:
4681; CHECK:       # BB#0:
4682; CHECK-NEXT:    vfchdb %v0, %v30, %v27
4683; CHECK-NEXT:    vfchdb %v1, %v28, %v25
4684; CHECK-NEXT:    vpkg %v0, %v1, %v0
4685; CHECK-NEXT:    vmrlf %v1, %v26, %v26
4686; CHECK-NEXT:    vmrlf %v2, %v24, %v24
4687; CHECK-NEXT:    vldeb %v1, %v1
4688; CHECK-NEXT:    vldeb %v2, %v2
4689; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4690; CHECK-NEXT:    vmrhf %v2, %v26, %v26
4691; CHECK-NEXT:    vmrhf %v3, %v24, %v24
4692; CHECK-NEXT:    larl %r1, .LCPI169_0
4693; CHECK-NEXT:    vldeb %v2, %v2
4694; CHECK-NEXT:    vldeb %v3, %v3
4695; CHECK-NEXT:    vfchdb %v2, %v3, %v2
4696; CHECK-NEXT:    vpkg %v1, %v2, %v1
4697; CHECK-NEXT:    vx %v0, %v1, %v0
4698; CHECK-NEXT:    vl %v1, 0(%r1)
4699; CHECK-NEXT:    vperm %v0, %v0, %v0, %v1
4700; CHECK-NEXT:    vsel %v24, %v29, %v31, %v0
4701; CHECK-NEXT:    br %r14
4702  %cmp0 = fcmp ogt <4 x float> %val1, %val2
4703  %cmp1 = fcmp ogt <4 x double> %val3, %val4
4704  %and = xor <4 x i1> %cmp0, %cmp1
4705  %sel = select <4 x i1> %and, <4 x i8> %val5, <4 x i8> %val6
4706  ret <4 x i8> %sel
4707}
4708
4709define <8 x i8> @fun170(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i8> %val5, <8 x i8> %val6) {
4710; CHECK-LABEL: fun170:
4711; CHECK:       # BB#0:
4712; CHECK-NEXT:    vceqh %v0, %v28, %v30
4713; CHECK-NEXT:    vceqh %v1, %v24, %v26
4714; CHECK-NEXT:    vx %v0, %v1, %v0
4715; CHECK-NEXT:    vpkh %v0, %v0, %v0
4716; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4717; CHECK-NEXT:    br %r14
4718  %cmp0 = icmp eq <8 x i16> %val1, %val2
4719  %cmp1 = icmp eq <8 x i16> %val3, %val4
4720  %and = xor <8 x i1> %cmp0, %cmp1
4721  %sel = select <8 x i1> %and, <8 x i8> %val5, <8 x i8> %val6
4722  ret <8 x i8> %sel
4723}
4724
4725define <8 x i16> @fun171(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i16> %val5, <8 x i16> %val6) {
4726; CHECK-LABEL: fun171:
4727; CHECK:       # BB#0:
4728; CHECK-NEXT:    vceqh %v0, %v28, %v30
4729; CHECK-NEXT:    vceqh %v1, %v24, %v26
4730; CHECK-NEXT:    vx %v0, %v1, %v0
4731; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
4732; CHECK-NEXT:    br %r14
4733  %cmp0 = icmp eq <8 x i16> %val1, %val2
4734  %cmp1 = icmp eq <8 x i16> %val3, %val4
4735  %and = xor <8 x i1> %cmp0, %cmp1
4736  %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6
4737  ret <8 x i16> %sel
4738}
4739
4740define <8 x i32> @fun172(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i32> %val5, <8 x i32> %val6) {
4741; CHECK-LABEL: fun172:
4742; CHECK:       # BB#0:
4743; CHECK-NEXT:    vceqh %v0, %v28, %v30
4744; CHECK-NEXT:    vceqh %v1, %v24, %v26
4745; CHECK-NEXT:    vx %v0, %v1, %v0
4746; CHECK-NEXT:    vuphh %v1, %v0
4747; CHECK-NEXT:    vmrlg %v0, %v0, %v0
4748; CHECK-NEXT:    vuphh %v0, %v0
4749; CHECK-NEXT:    vsel %v24, %v25, %v29, %v1
4750; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
4751; CHECK-NEXT:    br %r14
4752  %cmp0 = icmp eq <8 x i16> %val1, %val2
4753  %cmp1 = icmp eq <8 x i16> %val3, %val4
4754  %and = xor <8 x i1> %cmp0, %cmp1
4755  %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6
4756  ret <8 x i32> %sel
4757}
4758
4759define <8 x i64> @fun173(<8 x i16> %val1, <8 x i16> %val2, <8 x i32> %val3, <8 x i32> %val4, <8 x i64> %val5, <8 x i64> %val6) {
4760; CHECK-LABEL: fun173:
4761; CHECK:       # BB#0:
4762; CHECK-NEXT:    vceqh %v1, %v24, %v26
4763; CHECK-NEXT:    vceqf %v0, %v28, %v25
4764; CHECK-NEXT:    vuphh %v2, %v1
4765; CHECK-NEXT:    vx %v0, %v2, %v0
4766; CHECK-NEXT:    vl %v3, 192(%r15)
4767; CHECK-NEXT:    vuphf %v2, %v0
4768; CHECK-NEXT:    vmrlg %v0, %v0, %v0
4769; CHECK-NEXT:    vsel %v24, %v29, %v3, %v2
4770; CHECK-NEXT:    vl %v2, 208(%r15)
4771; CHECK-NEXT:    vuphf %v0, %v0
4772; CHECK-NEXT:    vmrlg %v1, %v1, %v1
4773; CHECK-NEXT:    vsel %v26, %v31, %v2, %v0
4774; CHECK-NEXT:    vceqf %v0, %v30, %v27
4775; CHECK-NEXT:    vuphh %v1, %v1
4776; CHECK-NEXT:    vx %v0, %v1, %v0
4777; CHECK-NEXT:    vl %v2, 224(%r15)
4778; CHECK-NEXT:    vl %v3, 160(%r15)
4779; CHECK-NEXT:    vuphf %v1, %v0
4780; CHECK-NEXT:    vmrlg %v0, %v0, %v0
4781; CHECK-NEXT:    vsel %v28, %v3, %v2, %v1
4782; CHECK-NEXT:    vl %v1, 240(%r15)
4783; CHECK-NEXT:    vl %v2, 176(%r15)
4784; CHECK-NEXT:    vuphf %v0, %v0
4785; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
4786; CHECK-NEXT:    br %r14
4787  %cmp0 = icmp eq <8 x i16> %val1, %val2
4788  %cmp1 = icmp eq <8 x i32> %val3, %val4
4789  %and = xor <8 x i1> %cmp0, %cmp1
4790  %sel = select <8 x i1> %and, <8 x i64> %val5, <8 x i64> %val6
4791  ret <8 x i64> %sel
4792}
4793
4794define <8 x i8> @fun174(<8 x i16> %val1, <8 x i16> %val2, <8 x i64> %val3, <8 x i64> %val4, <8 x i8> %val5, <8 x i8> %val6) {
4795; CHECK-LABEL: fun174:
4796; CHECK:       # BB#0:
4797; CHECK-NEXT:    vl %v0, 176(%r15)
4798; CHECK-NEXT:    vl %v1, 160(%r15)
4799; CHECK-NEXT:    vceqg %v0, %v27, %v0
4800; CHECK-NEXT:    vceqg %v1, %v25, %v1
4801; CHECK-NEXT:    vpkg %v0, %v1, %v0
4802; CHECK-NEXT:    vceqg %v1, %v30, %v31
4803; CHECK-NEXT:    vceqg %v2, %v28, %v29
4804; CHECK-NEXT:    vpkg %v1, %v2, %v1
4805; CHECK-NEXT:    vpkf %v0, %v1, %v0
4806; CHECK-NEXT:    vceqh %v1, %v24, %v26
4807; CHECK-NEXT:    vx %v0, %v1, %v0
4808; CHECK-NEXT:    vlrepg %v1, 200(%r15)
4809; CHECK-NEXT:    vlrepg %v2, 192(%r15)
4810; CHECK-NEXT:    vpkh %v0, %v0, %v0
4811; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
4812; CHECK-NEXT:    br %r14
4813  %cmp0 = icmp eq <8 x i16> %val1, %val2
4814  %cmp1 = icmp eq <8 x i64> %val3, %val4
4815  %and = xor <8 x i1> %cmp0, %cmp1
4816  %sel = select <8 x i1> %and, <8 x i8> %val5, <8 x i8> %val6
4817  ret <8 x i8> %sel
4818}
4819
4820define <8 x i16> @fun175(<8 x i16> %val1, <8 x i16> %val2, <8 x float> %val3, <8 x float> %val4, <8 x i16> %val5, <8 x i16> %val6) {
4821; CHECK-LABEL: fun175:
4822; CHECK:       # BB#0:
4823; CHECK-NEXT:    vmrlf %v0, %v27, %v27
4824; CHECK-NEXT:    vmrlf %v1, %v30, %v30
4825; CHECK-NEXT:    vldeb %v0, %v0
4826; CHECK-NEXT:    vldeb %v1, %v1
4827; CHECK-NEXT:    vfchdb %v0, %v1, %v0
4828; CHECK-NEXT:    vmrhf %v1, %v27, %v27
4829; CHECK-NEXT:    vmrhf %v2, %v30, %v30
4830; CHECK-NEXT:    vldeb %v1, %v1
4831; CHECK-NEXT:    vmrhf %v3, %v28, %v28
4832; CHECK-NEXT:    vldeb %v2, %v2
4833; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4834; CHECK-NEXT:    vpkg %v0, %v1, %v0
4835; CHECK-NEXT:    vmrlf %v1, %v25, %v25
4836; CHECK-NEXT:    vmrlf %v2, %v28, %v28
4837; CHECK-NEXT:    vldeb %v1, %v1
4838; CHECK-NEXT:    vldeb %v2, %v2
4839; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4840; CHECK-NEXT:    vmrhf %v2, %v25, %v25
4841; CHECK-NEXT:    vldeb %v2, %v2
4842; CHECK-NEXT:    vldeb %v3, %v3
4843; CHECK-NEXT:    vfchdb %v2, %v3, %v2
4844; CHECK-NEXT:    vpkg %v1, %v2, %v1
4845; CHECK-NEXT:    vpkf %v0, %v1, %v0
4846; CHECK-NEXT:    vceqh %v1, %v24, %v26
4847; CHECK-NEXT:    vx %v0, %v1, %v0
4848; CHECK-NEXT:    vsel %v24, %v29, %v31, %v0
4849; CHECK-NEXT:    br %r14
4850  %cmp0 = icmp eq <8 x i16> %val1, %val2
4851  %cmp1 = fcmp ogt <8 x float> %val3, %val4
4852  %and = xor <8 x i1> %cmp0, %cmp1
4853  %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6
4854  ret <8 x i16> %sel
4855}
4856
4857define <8 x i32> @fun176(<8 x i16> %val1, <8 x i16> %val2, <8 x double> %val3, <8 x double> %val4, <8 x i32> %val5, <8 x i32> %val6) {
4858; CHECK-LABEL: fun176:
4859; CHECK:       # BB#0:
4860; CHECK-NEXT:    vfchdb %v0, %v30, %v31
4861; CHECK-NEXT:    vfchdb %v1, %v28, %v29
4862; CHECK-NEXT:    vpkg %v0, %v1, %v0
4863; CHECK-NEXT:    vceqh %v1, %v24, %v26
4864; CHECK-NEXT:    vuphh %v2, %v1
4865; CHECK-NEXT:    vx %v0, %v2, %v0
4866; CHECK-NEXT:    vl %v2, 224(%r15)
4867; CHECK-NEXT:    vl %v3, 192(%r15)
4868; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
4869; CHECK-NEXT:    vl %v0, 176(%r15)
4870; CHECK-NEXT:    vl %v2, 160(%r15)
4871; CHECK-NEXT:    vfchdb %v0, %v27, %v0
4872; CHECK-NEXT:    vfchdb %v2, %v25, %v2
4873; CHECK-NEXT:    vmrlg %v1, %v1, %v1
4874; CHECK-NEXT:    vpkg %v0, %v2, %v0
4875; CHECK-NEXT:    vuphh %v1, %v1
4876; CHECK-NEXT:    vx %v0, %v1, %v0
4877; CHECK-NEXT:    vl %v1, 240(%r15)
4878; CHECK-NEXT:    vl %v2, 208(%r15)
4879; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
4880; CHECK-NEXT:    br %r14
4881  %cmp0 = icmp eq <8 x i16> %val1, %val2
4882  %cmp1 = fcmp ogt <8 x double> %val3, %val4
4883  %and = xor <8 x i1> %cmp0, %cmp1
4884  %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6
4885  ret <8 x i32> %sel
4886}
4887
4888define <8 x i32> @fun177(<8 x i32> %val1, <8 x i32> %val2, <8 x i64> %val3, <8 x i64> %val4, <8 x i32> %val5, <8 x i32> %val6) {
4889; CHECK-LABEL: fun177:
4890; CHECK:       # BB#0:
4891; CHECK-NEXT:    vl %v0, 176(%r15)
4892; CHECK-NEXT:    vl %v1, 160(%r15)
4893; CHECK-NEXT:    vceqg %v0, %v27, %v0
4894; CHECK-NEXT:    vceqg %v1, %v25, %v1
4895; CHECK-NEXT:    vpkg %v0, %v1, %v0
4896; CHECK-NEXT:    vceqf %v1, %v24, %v28
4897; CHECK-NEXT:    vx %v0, %v1, %v0
4898; CHECK-NEXT:    vl %v1, 256(%r15)
4899; CHECK-NEXT:    vl %v2, 224(%r15)
4900; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
4901; CHECK-NEXT:    vl %v0, 208(%r15)
4902; CHECK-NEXT:    vl %v1, 192(%r15)
4903; CHECK-NEXT:    vceqg %v0, %v31, %v0
4904; CHECK-NEXT:    vceqg %v1, %v29, %v1
4905; CHECK-NEXT:    vpkg %v0, %v1, %v0
4906; CHECK-NEXT:    vceqf %v1, %v26, %v30
4907; CHECK-NEXT:    vx %v0, %v1, %v0
4908; CHECK-NEXT:    vl %v1, 272(%r15)
4909; CHECK-NEXT:    vl %v2, 240(%r15)
4910; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
4911; CHECK-NEXT:    br %r14
4912  %cmp0 = icmp eq <8 x i32> %val1, %val2
4913  %cmp1 = icmp eq <8 x i64> %val3, %val4
4914  %and = xor <8 x i1> %cmp0, %cmp1
4915  %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6
4916  ret <8 x i32> %sel
4917}
4918
4919define <8 x double> @fun178(<8 x i32> %val1, <8 x i32> %val2, <8 x float> %val3, <8 x float> %val4, <8 x double> %val5, <8 x double> %val6) {
4920; CHECK-LABEL: fun178:
4921; CHECK:       # BB#0:
4922; CHECK-NEXT:    vmrlf %v0, %v29, %v29
4923; CHECK-NEXT:    vmrlf %v1, %v25, %v25
4924; CHECK-NEXT:    vldeb %v0, %v0
4925; CHECK-NEXT:    vldeb %v1, %v1
4926; CHECK-NEXT:    vfchdb %v0, %v1, %v0
4927; CHECK-NEXT:    vmrhf %v1, %v29, %v29
4928; CHECK-NEXT:    vmrhf %v2, %v25, %v25
4929; CHECK-NEXT:    vldeb %v1, %v1
4930; CHECK-NEXT:    vl %v3, 160(%r15)
4931; CHECK-NEXT:    vldeb %v2, %v2
4932; CHECK-NEXT:    vl %v4, 192(%r15)
4933; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4934; CHECK-NEXT:    vl %v2, 224(%r15)
4935; CHECK-NEXT:    vpkg %v0, %v1, %v0
4936; CHECK-NEXT:    vceqf %v1, %v24, %v28
4937; CHECK-NEXT:    vx %v0, %v1, %v0
4938; CHECK-NEXT:    vuphf %v1, %v0
4939; CHECK-NEXT:    vsel %v24, %v3, %v2, %v1
4940; CHECK-NEXT:    vmrlf %v1, %v31, %v31
4941; CHECK-NEXT:    vmrlf %v2, %v27, %v27
4942; CHECK-NEXT:    vmrhf %v3, %v27, %v27
4943; CHECK-NEXT:    vmrlg %v0, %v0, %v0
4944; CHECK-NEXT:    vuphf %v0, %v0
4945; CHECK-NEXT:    vldeb %v1, %v1
4946; CHECK-NEXT:    vldeb %v2, %v2
4947; CHECK-NEXT:    vfchdb %v1, %v2, %v1
4948; CHECK-NEXT:    vmrhf %v2, %v31, %v31
4949; CHECK-NEXT:    vldeb %v2, %v2
4950; CHECK-NEXT:    vldeb %v3, %v3
4951; CHECK-NEXT:    vfchdb %v2, %v3, %v2
4952; CHECK-NEXT:    vl %v3, 256(%r15)
4953; CHECK-NEXT:    vpkg %v1, %v2, %v1
4954; CHECK-NEXT:    vceqf %v2, %v26, %v30
4955; CHECK-NEXT:    vx %v1, %v2, %v1
4956; CHECK-NEXT:    vuphf %v2, %v1
4957; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
4958; CHECK-NEXT:    vl %v2, 240(%r15)
4959; CHECK-NEXT:    vl %v3, 176(%r15)
4960; CHECK-NEXT:    vsel %v26, %v3, %v2, %v0
4961; CHECK-NEXT:    vl %v2, 208(%r15)
4962; CHECK-NEXT:    vmrlg %v0, %v1, %v1
4963; CHECK-NEXT:    vl %v1, 272(%r15)
4964; CHECK-NEXT:    vuphf %v0, %v0
4965; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
4966; CHECK-NEXT:    br %r14
4967  %cmp0 = icmp eq <8 x i32> %val1, %val2
4968  %cmp1 = fcmp ogt <8 x float> %val3, %val4
4969  %and = xor <8 x i1> %cmp0, %cmp1
4970  %sel = select <8 x i1> %and, <8 x double> %val5, <8 x double> %val6
4971  ret <8 x double> %sel
4972}
4973
4974define <8 x double> @fun179(<8 x i32> %val1, <8 x i32> %val2, <8 x double> %val3, <8 x double> %val4, <8 x double> %val5, <8 x double> %val6) {
4975; CHECK-LABEL: fun179:
4976; CHECK:       # BB#0:
4977; CHECK-NEXT:    vl %v0, 160(%r15)
4978; CHECK-NEXT:    vceqf %v1, %v24, %v28
4979; CHECK-NEXT:    vfchdb %v0, %v25, %v0
4980; CHECK-NEXT:    vuphf %v2, %v1
4981; CHECK-NEXT:    vx %v0, %v2, %v0
4982; CHECK-NEXT:    vl %v2, 288(%r15)
4983; CHECK-NEXT:    vl %v3, 224(%r15)
4984; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
4985; CHECK-NEXT:    vl %v0, 192(%r15)
4986; CHECK-NEXT:    vceqf %v2, %v26, %v30
4987; CHECK-NEXT:    vfchdb %v0, %v29, %v0
4988; CHECK-NEXT:    vuphf %v3, %v2
4989; CHECK-NEXT:    vx %v0, %v3, %v0
4990; CHECK-NEXT:    vl %v3, 320(%r15)
4991; CHECK-NEXT:    vl %v4, 256(%r15)
4992; CHECK-NEXT:    vsel %v28, %v4, %v3, %v0
4993; CHECK-NEXT:    vl %v0, 176(%r15)
4994; CHECK-NEXT:    vmrlg %v1, %v1, %v1
4995; CHECK-NEXT:    vfchdb %v0, %v27, %v0
4996; CHECK-NEXT:    vuphf %v1, %v1
4997; CHECK-NEXT:    vx %v0, %v1, %v0
4998; CHECK-NEXT:    vl %v1, 304(%r15)
4999; CHECK-NEXT:    vl %v3, 240(%r15)
5000; CHECK-NEXT:    vsel %v26, %v3, %v1, %v0
5001; CHECK-NEXT:    vl %v0, 208(%r15)
5002; CHECK-NEXT:    vmrlg %v1, %v2, %v2
5003; CHECK-NEXT:    vfchdb %v0, %v31, %v0
5004; CHECK-NEXT:    vuphf %v1, %v1
5005; CHECK-NEXT:    vl %v2, 272(%r15)
5006; CHECK-NEXT:    vx %v0, %v1, %v0
5007; CHECK-NEXT:    vl %v1, 336(%r15)
5008; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
5009; CHECK-NEXT:    br %r14
5010  %cmp0 = icmp eq <8 x i32> %val1, %val2
5011  %cmp1 = fcmp ogt <8 x double> %val3, %val4
5012  %and = xor <8 x i1> %cmp0, %cmp1
5013  %sel = select <8 x i1> %and, <8 x double> %val5, <8 x double> %val6
5014  ret <8 x double> %sel
5015}
5016
5017define <8 x i64> @fun180(<8 x float> %val1, <8 x float> %val2, <8 x double> %val3, <8 x double> %val4, <8 x i64> %val5, <8 x i64> %val6) {
5018; CHECK-LABEL: fun180:
5019; CHECK:       # BB#0:
5020; CHECK-NEXT:    vmrlf %v0, %v28, %v28
5021; CHECK-NEXT:    vmrlf %v1, %v24, %v24
5022; CHECK-NEXT:    vldeb %v0, %v0
5023; CHECK-NEXT:    vldeb %v1, %v1
5024; CHECK-NEXT:    vfchdb %v0, %v1, %v0
5025; CHECK-NEXT:    vmrhf %v1, %v28, %v28
5026; CHECK-NEXT:    vmrhf %v2, %v24, %v24
5027; CHECK-NEXT:    vldeb %v1, %v1
5028; CHECK-NEXT:    vl %v3, 224(%r15)
5029; CHECK-NEXT:    vldeb %v2, %v2
5030; CHECK-NEXT:    vl %v4, 256(%r15)
5031; CHECK-NEXT:    vfchdb %v1, %v2, %v1
5032; CHECK-NEXT:    vl %v2, 160(%r15)
5033; CHECK-NEXT:    vpkg %v0, %v1, %v0
5034; CHECK-NEXT:    vuphf %v1, %v0
5035; CHECK-NEXT:    vfchdb %v2, %v25, %v2
5036; CHECK-NEXT:    vx %v1, %v1, %v2
5037; CHECK-NEXT:    vl %v2, 288(%r15)
5038; CHECK-NEXT:    vsel %v24, %v3, %v2, %v1
5039; CHECK-NEXT:    vmrlf %v1, %v30, %v30
5040; CHECK-NEXT:    vmrlf %v2, %v26, %v26
5041; CHECK-NEXT:    vmrhf %v3, %v26, %v26
5042; CHECK-NEXT:    vmrlg %v0, %v0, %v0
5043; CHECK-NEXT:    vuphf %v0, %v0
5044; CHECK-NEXT:    vldeb %v1, %v1
5045; CHECK-NEXT:    vldeb %v2, %v2
5046; CHECK-NEXT:    vfchdb %v1, %v2, %v1
5047; CHECK-NEXT:    vmrhf %v2, %v30, %v30
5048; CHECK-NEXT:    vldeb %v2, %v2
5049; CHECK-NEXT:    vldeb %v3, %v3
5050; CHECK-NEXT:    vfchdb %v2, %v3, %v2
5051; CHECK-NEXT:    vl %v3, 192(%r15)
5052; CHECK-NEXT:    vpkg %v1, %v2, %v1
5053; CHECK-NEXT:    vuphf %v2, %v1
5054; CHECK-NEXT:    vfchdb %v3, %v29, %v3
5055; CHECK-NEXT:    vx %v2, %v2, %v3
5056; CHECK-NEXT:    vl %v3, 320(%r15)
5057; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
5058; CHECK-NEXT:    vl %v2, 176(%r15)
5059; CHECK-NEXT:    vl %v3, 240(%r15)
5060; CHECK-NEXT:    vfchdb %v2, %v27, %v2
5061; CHECK-NEXT:    vx %v0, %v0, %v2
5062; CHECK-NEXT:    vl %v2, 304(%r15)
5063; CHECK-NEXT:    vsel %v26, %v3, %v2, %v0
5064; CHECK-NEXT:    vl %v2, 272(%r15)
5065; CHECK-NEXT:    vmrlg %v0, %v1, %v1
5066; CHECK-NEXT:    vl %v1, 208(%r15)
5067; CHECK-NEXT:    vuphf %v0, %v0
5068; CHECK-NEXT:    vfchdb %v1, %v31, %v1
5069; CHECK-NEXT:    vx %v0, %v0, %v1
5070; CHECK-NEXT:    vl %v1, 336(%r15)
5071; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
5072; CHECK-NEXT:    br %r14
5073  %cmp0 = fcmp ogt <8 x float> %val1, %val2
5074  %cmp1 = fcmp ogt <8 x double> %val3, %val4
5075  %and = xor <8 x i1> %cmp0, %cmp1
5076  %sel = select <8 x i1> %and, <8 x i64> %val5, <8 x i64> %val6
5077  ret <8 x i64> %sel
5078}
5079
5080define <16 x i8> @fun181(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4, <16 x i8> %val5, <16 x i8> %val6) {
5081; CHECK-LABEL: fun181:
5082; CHECK:       # BB#0:
5083; CHECK-NEXT:    vceqb %v0, %v28, %v30
5084; CHECK-NEXT:    vceqb %v1, %v24, %v26
5085; CHECK-NEXT:    vx %v0, %v1, %v0
5086; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
5087; CHECK-NEXT:    br %r14
5088  %cmp0 = icmp eq <16 x i8> %val1, %val2
5089  %cmp1 = icmp eq <16 x i8> %val3, %val4
5090  %and = xor <16 x i1> %cmp0, %cmp1
5091  %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6
5092  ret <16 x i8> %sel
5093}
5094
5095define <16 x i16> @fun182(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4, <16 x i16> %val5, <16 x i16> %val6) {
5096; CHECK-LABEL: fun182:
5097; CHECK:       # BB#0:
5098; CHECK-NEXT:    vceqb %v0, %v28, %v30
5099; CHECK-NEXT:    vceqb %v1, %v24, %v26
5100; CHECK-NEXT:    vx %v0, %v1, %v0
5101; CHECK-NEXT:    vuphb %v1, %v0
5102; CHECK-NEXT:    vmrlg %v0, %v0, %v0
5103; CHECK-NEXT:    vuphb %v0, %v0
5104; CHECK-NEXT:    vsel %v24, %v25, %v29, %v1
5105; CHECK-NEXT:    vsel %v26, %v27, %v31, %v0
5106; CHECK-NEXT:    br %r14
5107  %cmp0 = icmp eq <16 x i8> %val1, %val2
5108  %cmp1 = icmp eq <16 x i8> %val3, %val4
5109  %and = xor <16 x i1> %cmp0, %cmp1
5110  %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6
5111  ret <16 x i16> %sel
5112}
5113
5114define <16 x i64> @fun183(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i64> %val5, <16 x i64> %val6) {
5115; CHECK-LABEL: fun183:
5116; CHECK:       # BB#0:
5117; CHECK-NEXT:    vceqb %v1, %v24, %v26
5118; CHECK-NEXT:    vceqh %v0, %v28, %v25
5119; CHECK-NEXT:    vuphb %v2, %v1
5120; CHECK-NEXT:    vx %v0, %v2, %v0
5121; CHECK-NEXT:    vuphh %v2, %v0
5122; CHECK-NEXT:    vl %v3, 256(%r15)
5123; CHECK-NEXT:    vuphf %v2, %v2
5124; CHECK-NEXT:    vsel %v24, %v29, %v3, %v2
5125; CHECK-NEXT:    vpkg %v2, %v0, %v0
5126; CHECK-NEXT:    vuphh %v2, %v2
5127; CHECK-NEXT:    vl %v3, 272(%r15)
5128; CHECK-NEXT:    vuphf %v2, %v2
5129; CHECK-NEXT:    vsel %v26, %v31, %v3, %v2
5130; CHECK-NEXT:    vmrlg %v2, %v0, %v0
5131; CHECK-NEXT:    vuphh %v2, %v2
5132; CHECK-NEXT:    vsldb %v0, %v0, %v0, 12
5133; CHECK-NEXT:    vl %v3, 288(%r15)
5134; CHECK-NEXT:    vl %v4, 160(%r15)
5135; CHECK-NEXT:    vuphf %v2, %v2
5136; CHECK-NEXT:    vuphh %v0, %v0
5137; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
5138; CHECK-NEXT:    vl %v2, 304(%r15)
5139; CHECK-NEXT:    vl %v3, 176(%r15)
5140; CHECK-NEXT:    vl %v4, 192(%r15)
5141; CHECK-NEXT:    vuphf %v0, %v0
5142; CHECK-NEXT:    vmrlg %v1, %v1, %v1
5143; CHECK-NEXT:    vsel %v0, %v3, %v2, %v0
5144; CHECK-NEXT:    vl %v3, 320(%r15)
5145; CHECK-NEXT:    vceqh %v2, %v30, %v27
5146; CHECK-NEXT:    vlr %v30, %v0
5147; CHECK-NEXT:    vuphb %v1, %v1
5148; CHECK-NEXT:    vx %v1, %v1, %v2
5149; CHECK-NEXT:    vuphh %v2, %v1
5150; CHECK-NEXT:    vuphf %v2, %v2
5151; CHECK-NEXT:    vsel %v25, %v4, %v3, %v2
5152; CHECK-NEXT:    vl %v3, 336(%r15)
5153; CHECK-NEXT:    vl %v4, 208(%r15)
5154; CHECK-NEXT:    vpkg %v2, %v1, %v1
5155; CHECK-NEXT:    vuphh %v2, %v2
5156; CHECK-NEXT:    vuphf %v2, %v2
5157; CHECK-NEXT:    vsel %v27, %v4, %v3, %v2
5158; CHECK-NEXT:    vl %v3, 352(%r15)
5159; CHECK-NEXT:    vl %v4, 224(%r15)
5160; CHECK-NEXT:    vmrlg %v2, %v1, %v1
5161; CHECK-NEXT:    vuphh %v2, %v2
5162; CHECK-NEXT:    vsldb %v1, %v1, %v1, 12
5163; CHECK-NEXT:    vuphf %v2, %v2
5164; CHECK-NEXT:    vuphh %v1, %v1
5165; CHECK-NEXT:    vsel %v29, %v4, %v3, %v2
5166; CHECK-NEXT:    vl %v2, 368(%r15)
5167; CHECK-NEXT:    vl %v3, 240(%r15)
5168; CHECK-NEXT:    vuphf %v1, %v1
5169; CHECK-NEXT:    vsel %v31, %v3, %v2, %v1
5170; CHECK-NEXT:    br %r14
5171  %cmp0 = icmp eq <16 x i8> %val1, %val2
5172  %cmp1 = icmp eq <16 x i16> %val3, %val4
5173  %and = xor <16 x i1> %cmp0, %cmp1
5174  %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6
5175  ret <16 x i64> %sel
5176}
5177
5178define <16 x i64> @fun184(<16 x i8> %val1, <16 x i8> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i64> %val5, <16 x i64> %val6) {
5179; CHECK-LABEL: fun184:
5180; CHECK:       # BB#0:
5181; CHECK-NEXT:    vceqb %v1, %v24, %v26
5182; CHECK-NEXT:    vuphb %v2, %v1
5183; CHECK-NEXT:    vceqf %v0, %v28, %v29
5184; CHECK-NEXT:    vuphh %v2, %v2
5185; CHECK-NEXT:    vx %v0, %v2, %v0
5186; CHECK-NEXT:    vl %v3, 320(%r15)
5187; CHECK-NEXT:    vl %v4, 192(%r15)
5188; CHECK-NEXT:    vuphf %v2, %v0
5189; CHECK-NEXT:    vmrlg %v0, %v0, %v0
5190; CHECK-NEXT:    vsel %v24, %v4, %v3, %v2
5191; CHECK-NEXT:    vl %v2, 336(%r15)
5192; CHECK-NEXT:    vl %v3, 208(%r15)
5193; CHECK-NEXT:    vuphf %v0, %v0
5194; CHECK-NEXT:    vsel %v26, %v3, %v2, %v0
5195; CHECK-NEXT:    vpkg %v2, %v1, %v1
5196; CHECK-NEXT:    vuphb %v2, %v2
5197; CHECK-NEXT:    vceqf %v0, %v30, %v31
5198; CHECK-NEXT:    vuphh %v2, %v2
5199; CHECK-NEXT:    vx %v0, %v2, %v0
5200; CHECK-NEXT:    vl %v3, 352(%r15)
5201; CHECK-NEXT:    vl %v4, 224(%r15)
5202; CHECK-NEXT:    vuphf %v2, %v0
5203; CHECK-NEXT:    vl %v5, 256(%r15)
5204; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
5205; CHECK-NEXT:    vl %v2, 160(%r15)
5206; CHECK-NEXT:    vl %v4, 384(%r15)
5207; CHECK-NEXT:    vmrlg %v3, %v1, %v1
5208; CHECK-NEXT:    vuphb %v3, %v3
5209; CHECK-NEXT:    vceqf %v2, %v25, %v2
5210; CHECK-NEXT:    vuphh %v3, %v3
5211; CHECK-NEXT:    vx %v2, %v3, %v2
5212; CHECK-NEXT:    vuphf %v3, %v2
5213; CHECK-NEXT:    vsldb %v1, %v1, %v1, 12
5214; CHECK-NEXT:    vsel %v25, %v5, %v4, %v3
5215; CHECK-NEXT:    vl %v3, 176(%r15)
5216; CHECK-NEXT:    vl %v4, 416(%r15)
5217; CHECK-NEXT:    vl %v5, 288(%r15)
5218; CHECK-NEXT:    vuphb %v1, %v1
5219; CHECK-NEXT:    vceqf %v3, %v27, %v3
5220; CHECK-NEXT:    vuphh %v1, %v1
5221; CHECK-NEXT:    vx %v1, %v1, %v3
5222; CHECK-NEXT:    vuphf %v3, %v1
5223; CHECK-NEXT:    vmrlg %v0, %v0, %v0
5224; CHECK-NEXT:    vsel %v29, %v5, %v4, %v3
5225; CHECK-NEXT:    vl %v3, 368(%r15)
5226; CHECK-NEXT:    vl %v4, 240(%r15)
5227; CHECK-NEXT:    vuphf %v0, %v0
5228; CHECK-NEXT:    vsel %v30, %v4, %v3, %v0
5229; CHECK-NEXT:    vl %v3, 272(%r15)
5230; CHECK-NEXT:    vmrlg %v0, %v2, %v2
5231; CHECK-NEXT:    vl %v2, 400(%r15)
5232; CHECK-NEXT:    vuphf %v0, %v0
5233; CHECK-NEXT:    vsel %v27, %v3, %v2, %v0
5234; CHECK-NEXT:    vl %v2, 304(%r15)
5235; CHECK-NEXT:    vmrlg %v0, %v1, %v1
5236; CHECK-NEXT:    vl %v1, 432(%r15)
5237; CHECK-NEXT:    vuphf %v0, %v0
5238; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
5239; CHECK-NEXT:    br %r14
5240  %cmp0 = icmp eq <16 x i8> %val1, %val2
5241  %cmp1 = icmp eq <16 x i32> %val3, %val4
5242  %and = xor <16 x i1> %cmp0, %cmp1
5243  %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6
5244  ret <16 x i64> %sel
5245}
5246
5247define <16 x i64> @fun185(<16 x i8> %val1, <16 x i8> %val2, <16 x i64> %val3, <16 x i64> %val4, <16 x i64> %val5, <16 x i64> %val6) {
5248; CHECK-LABEL: fun185:
5249; CHECK:       # BB#0:
5250; CHECK-NEXT:    vl %v0, 192(%r15)
5251; CHECK-NEXT:    vceqg %v1, %v28, %v0
5252; CHECK-NEXT:    vceqb %v0, %v24, %v26
5253; CHECK-NEXT:    vuphb %v2, %v0
5254; CHECK-NEXT:    vuphh %v2, %v2
5255; CHECK-NEXT:    vuphf %v2, %v2
5256; CHECK-NEXT:    vx %v1, %v2, %v1
5257; CHECK-NEXT:    vl %v2, 448(%r15)
5258; CHECK-NEXT:    vl %v3, 320(%r15)
5259; CHECK-NEXT:    vsel %v24, %v3, %v2, %v1
5260; CHECK-NEXT:    vpkf %v2, %v0, %v0
5261; CHECK-NEXT:    vuphb %v2, %v2
5262; CHECK-NEXT:    vl %v1, 208(%r15)
5263; CHECK-NEXT:    vuphh %v2, %v2
5264; CHECK-NEXT:    vceqg %v1, %v30, %v1
5265; CHECK-NEXT:    vuphf %v2, %v2
5266; CHECK-NEXT:    vx %v1, %v2, %v1
5267; CHECK-NEXT:    vl %v2, 464(%r15)
5268; CHECK-NEXT:    vl %v3, 336(%r15)
5269; CHECK-NEXT:    vsel %v26, %v3, %v2, %v1
5270; CHECK-NEXT:    vpkg %v2, %v0, %v0
5271; CHECK-NEXT:    vuphb %v2, %v2
5272; CHECK-NEXT:    vl %v1, 224(%r15)
5273; CHECK-NEXT:    vl %v3, 352(%r15)
5274; CHECK-NEXT:    vuphh %v2, %v2
5275; CHECK-NEXT:    vceqg %v1, %v25, %v1
5276; CHECK-NEXT:    vuphf %v2, %v2
5277; CHECK-NEXT:    vx %v1, %v2, %v1
5278; CHECK-NEXT:    vl %v2, 480(%r15)
5279; CHECK-NEXT:    vsel %v28, %v3, %v2, %v1
5280; CHECK-NEXT:    vl %v1, 240(%r15)
5281; CHECK-NEXT:    vl %v3, 368(%r15)
5282; CHECK-NEXT:    vsldb %v2, %v0, %v0, 6
5283; CHECK-NEXT:    vuphb %v2, %v2
5284; CHECK-NEXT:    vuphh %v2, %v2
5285; CHECK-NEXT:    vceqg %v1, %v27, %v1
5286; CHECK-NEXT:    vuphf %v2, %v2
5287; CHECK-NEXT:    vx %v1, %v2, %v1
5288; CHECK-NEXT:    vl %v2, 496(%r15)
5289; CHECK-NEXT:    vsel %v30, %v3, %v2, %v1
5290; CHECK-NEXT:    vl %v1, 256(%r15)
5291; CHECK-NEXT:    vl %v3, 384(%r15)
5292; CHECK-NEXT:    vmrlg %v2, %v0, %v0
5293; CHECK-NEXT:    vuphb %v2, %v2
5294; CHECK-NEXT:    vuphh %v2, %v2
5295; CHECK-NEXT:    vceqg %v1, %v29, %v1
5296; CHECK-NEXT:    vuphf %v2, %v2
5297; CHECK-NEXT:    vx %v1, %v2, %v1
5298; CHECK-NEXT:    vl %v2, 512(%r15)
5299; CHECK-NEXT:    vsel %v25, %v3, %v2, %v1
5300; CHECK-NEXT:    vl %v1, 272(%r15)
5301; CHECK-NEXT:    vl %v3, 400(%r15)
5302; CHECK-NEXT:    vsldb %v2, %v0, %v0, 10
5303; CHECK-NEXT:    vuphb %v2, %v2
5304; CHECK-NEXT:    vuphh %v2, %v2
5305; CHECK-NEXT:    vceqg %v1, %v31, %v1
5306; CHECK-NEXT:    vuphf %v2, %v2
5307; CHECK-NEXT:    vx %v1, %v2, %v1
5308; CHECK-NEXT:    vl %v2, 528(%r15)
5309; CHECK-NEXT:    vsel %v27, %v3, %v2, %v1
5310; CHECK-NEXT:    vl %v1, 288(%r15)
5311; CHECK-NEXT:    vl %v2, 160(%r15)
5312; CHECK-NEXT:    vl %v3, 416(%r15)
5313; CHECK-NEXT:    vceqg %v1, %v2, %v1
5314; CHECK-NEXT:    vsldb %v2, %v0, %v0, 12
5315; CHECK-NEXT:    vuphb %v2, %v2
5316; CHECK-NEXT:    vuphh %v2, %v2
5317; CHECK-NEXT:    vuphf %v2, %v2
5318; CHECK-NEXT:    vsldb %v0, %v0, %v0, 14
5319; CHECK-NEXT:    vx %v1, %v2, %v1
5320; CHECK-NEXT:    vl %v2, 544(%r15)
5321; CHECK-NEXT:    vuphb %v0, %v0
5322; CHECK-NEXT:    vsel %v29, %v3, %v2, %v1
5323; CHECK-NEXT:    vl %v1, 304(%r15)
5324; CHECK-NEXT:    vl %v2, 176(%r15)
5325; CHECK-NEXT:    vuphh %v0, %v0
5326; CHECK-NEXT:    vceqg %v1, %v2, %v1
5327; CHECK-NEXT:    vl %v2, 432(%r15)
5328; CHECK-NEXT:    vuphf %v0, %v0
5329; CHECK-NEXT:    vx %v0, %v0, %v1
5330; CHECK-NEXT:    vl %v1, 560(%r15)
5331; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
5332; CHECK-NEXT:    br %r14
5333  %cmp0 = icmp eq <16 x i8> %val1, %val2
5334  %cmp1 = icmp eq <16 x i64> %val3, %val4
5335  %and = xor <16 x i1> %cmp0, %cmp1
5336  %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6
5337  ret <16 x i64> %sel
5338}
5339
5340define <16 x i16> @fun186(<16 x i8> %val1, <16 x i8> %val2, <16 x float> %val3, <16 x float> %val4, <16 x i16> %val5, <16 x i16> %val6) {
5341; CHECK-LABEL: fun186:
5342; CHECK:       # BB#0:
5343; CHECK-NEXT:    vmrlf %v0, %v31, %v31
5344; CHECK-NEXT:    vmrlf %v1, %v30, %v30
5345; CHECK-NEXT:    vldeb %v0, %v0
5346; CHECK-NEXT:    vldeb %v1, %v1
5347; CHECK-NEXT:    vfchdb %v0, %v1, %v0
5348; CHECK-NEXT:    vmrhf %v1, %v31, %v31
5349; CHECK-NEXT:    vmrhf %v2, %v30, %v30
5350; CHECK-NEXT:    vldeb %v1, %v1
5351; CHECK-NEXT:    vmrhf %v3, %v28, %v28
5352; CHECK-NEXT:    vmrlf %v4, %v25, %v25
5353; CHECK-NEXT:    vldeb %v2, %v2
5354; CHECK-NEXT:    vfchdb %v1, %v2, %v1
5355; CHECK-NEXT:    vpkg %v0, %v1, %v0
5356; CHECK-NEXT:    vmrlf %v1, %v29, %v29
5357; CHECK-NEXT:    vmrlf %v2, %v28, %v28
5358; CHECK-NEXT:    vldeb %v1, %v1
5359; CHECK-NEXT:    vldeb %v2, %v2
5360; CHECK-NEXT:    vfchdb %v1, %v2, %v1
5361; CHECK-NEXT:    vmrhf %v2, %v29, %v29
5362; CHECK-NEXT:    vldeb %v2, %v2
5363; CHECK-NEXT:    vldeb %v3, %v3
5364; CHECK-NEXT:    vfchdb %v2, %v3, %v2
5365; CHECK-NEXT:    vl %v3, 192(%r15)
5366; CHECK-NEXT:    vpkg %v1, %v2, %v1
5367; CHECK-NEXT:    vpkf %v0, %v1, %v0
5368; CHECK-NEXT:    vceqb %v1, %v24, %v26
5369; CHECK-NEXT:    vuphb %v2, %v1
5370; CHECK-NEXT:    vx %v0, %v2, %v0
5371; CHECK-NEXT:    vl %v2, 224(%r15)
5372; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
5373; CHECK-NEXT:    vl %v0, 176(%r15)
5374; CHECK-NEXT:    vmrlf %v2, %v0, %v0
5375; CHECK-NEXT:    vmrlf %v3, %v27, %v27
5376; CHECK-NEXT:    vmrhf %v0, %v0, %v0
5377; CHECK-NEXT:    vmrlg %v1, %v1, %v1
5378; CHECK-NEXT:    vuphb %v1, %v1
5379; CHECK-NEXT:    vldeb %v2, %v2
5380; CHECK-NEXT:    vldeb %v3, %v3
5381; CHECK-NEXT:    vfchdb %v2, %v3, %v2
5382; CHECK-NEXT:    vmrhf %v3, %v27, %v27
5383; CHECK-NEXT:    vldeb %v0, %v0
5384; CHECK-NEXT:    vldeb %v3, %v3
5385; CHECK-NEXT:    vfchdb %v0, %v3, %v0
5386; CHECK-NEXT:    vpkg %v0, %v0, %v2
5387; CHECK-NEXT:    vl %v2, 160(%r15)
5388; CHECK-NEXT:    vmrlf %v3, %v2, %v2
5389; CHECK-NEXT:    vmrhf %v2, %v2, %v2
5390; CHECK-NEXT:    vldeb %v3, %v3
5391; CHECK-NEXT:    vldeb %v4, %v4
5392; CHECK-NEXT:    vfchdb %v3, %v4, %v3
5393; CHECK-NEXT:    vmrhf %v4, %v25, %v25
5394; CHECK-NEXT:    vldeb %v2, %v2
5395; CHECK-NEXT:    vldeb %v4, %v4
5396; CHECK-NEXT:    vfchdb %v2, %v4, %v2
5397; CHECK-NEXT:    vpkg %v2, %v2, %v3
5398; CHECK-NEXT:    vpkf %v0, %v2, %v0
5399; CHECK-NEXT:    vl %v2, 208(%r15)
5400; CHECK-NEXT:    vx %v0, %v1, %v0
5401; CHECK-NEXT:    vl %v1, 240(%r15)
5402; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
5403; CHECK-NEXT:    br %r14
5404  %cmp0 = icmp eq <16 x i8> %val1, %val2
5405  %cmp1 = fcmp ogt <16 x float> %val3, %val4
5406  %and = xor <16 x i1> %cmp0, %cmp1
5407  %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6
5408  ret <16 x i16> %sel
5409}
5410
5411define <16 x i8> @fun187(<16 x i8> %val1, <16 x i8> %val2, <16 x double> %val3, <16 x double> %val4, <16 x i8> %val5, <16 x i8> %val6) {
5412; CHECK-LABEL: fun187:
5413; CHECK:       # BB#0:
5414; CHECK-NEXT:    vl %v0, 304(%r15)
5415; CHECK-NEXT:    vl %v1, 176(%r15)
5416; CHECK-NEXT:    vfchdb %v0, %v1, %v0
5417; CHECK-NEXT:    vl %v1, 288(%r15)
5418; CHECK-NEXT:    vl %v2, 160(%r15)
5419; CHECK-NEXT:    vfchdb %v1, %v2, %v1
5420; CHECK-NEXT:    vpkg %v0, %v1, %v0
5421; CHECK-NEXT:    vl %v1, 272(%r15)
5422; CHECK-NEXT:    vl %v2, 256(%r15)
5423; CHECK-NEXT:    vfchdb %v1, %v31, %v1
5424; CHECK-NEXT:    vfchdb %v2, %v29, %v2
5425; CHECK-NEXT:    vpkg %v1, %v2, %v1
5426; CHECK-NEXT:    vpkf %v0, %v1, %v0
5427; CHECK-NEXT:    vl %v1, 240(%r15)
5428; CHECK-NEXT:    vl %v2, 224(%r15)
5429; CHECK-NEXT:    vfchdb %v1, %v27, %v1
5430; CHECK-NEXT:    vfchdb %v2, %v25, %v2
5431; CHECK-NEXT:    vpkg %v1, %v2, %v1
5432; CHECK-NEXT:    vl %v2, 208(%r15)
5433; CHECK-NEXT:    vl %v3, 192(%r15)
5434; CHECK-NEXT:    vfchdb %v2, %v30, %v2
5435; CHECK-NEXT:    vfchdb %v3, %v28, %v3
5436; CHECK-NEXT:    vpkg %v2, %v3, %v2
5437; CHECK-NEXT:    vpkf %v1, %v2, %v1
5438; CHECK-NEXT:    vpkh %v0, %v1, %v0
5439; CHECK-NEXT:    vceqb %v1, %v24, %v26
5440; CHECK-NEXT:    vx %v0, %v1, %v0
5441; CHECK-NEXT:    vl %v1, 336(%r15)
5442; CHECK-NEXT:    vl %v2, 320(%r15)
5443; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
5444; CHECK-NEXT:    br %r14
5445  %cmp0 = icmp eq <16 x i8> %val1, %val2
5446  %cmp1 = fcmp ogt <16 x double> %val3, %val4
5447  %and = xor <16 x i1> %cmp0, %cmp1
5448  %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6
5449  ret <16 x i8> %sel
5450}
5451
5452define <16 x i8> @fun188(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i8> %val5, <16 x i8> %val6) {
5453; CHECK-LABEL: fun188:
5454; CHECK:       # BB#0:
5455; CHECK-NEXT:    vceqh %v0, %v27, %v31
5456; CHECK-NEXT:    vceqh %v1, %v26, %v30
5457; CHECK-NEXT:    vx %v0, %v1, %v0
5458; CHECK-NEXT:    vceqh %v1, %v25, %v29
5459; CHECK-NEXT:    vceqh %v2, %v24, %v28
5460; CHECK-NEXT:    vx %v1, %v2, %v1
5461; CHECK-NEXT:    vpkh %v0, %v1, %v0
5462; CHECK-NEXT:    vl %v1, 176(%r15)
5463; CHECK-NEXT:    vl %v2, 160(%r15)
5464; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
5465; CHECK-NEXT:    br %r14
5466  %cmp0 = icmp eq <16 x i16> %val1, %val2
5467  %cmp1 = icmp eq <16 x i16> %val3, %val4
5468  %and = xor <16 x i1> %cmp0, %cmp1
5469  %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6
5470  ret <16 x i8> %sel
5471}
5472
5473define <16 x i16> @fun189(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i16> %val5, <16 x i16> %val6) {
5474; CHECK-LABEL: fun189:
5475; CHECK:       # BB#0:
5476; CHECK-NEXT:    vceqh %v0, %v25, %v29
5477; CHECK-NEXT:    vceqh %v1, %v24, %v28
5478; CHECK-NEXT:    vx %v0, %v1, %v0
5479; CHECK-NEXT:    vl %v1, 192(%r15)
5480; CHECK-NEXT:    vl %v2, 160(%r15)
5481; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
5482; CHECK-NEXT:    vceqh %v0, %v27, %v31
5483; CHECK-NEXT:    vceqh %v1, %v26, %v30
5484; CHECK-NEXT:    vx %v0, %v1, %v0
5485; CHECK-NEXT:    vl %v1, 208(%r15)
5486; CHECK-NEXT:    vl %v2, 176(%r15)
5487; CHECK-NEXT:    vsel %v26, %v2, %v1, %v0
5488; CHECK-NEXT:    br %r14
5489  %cmp0 = icmp eq <16 x i16> %val1, %val2
5490  %cmp1 = icmp eq <16 x i16> %val3, %val4
5491  %and = xor <16 x i1> %cmp0, %cmp1
5492  %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6
5493  ret <16 x i16> %sel
5494}
5495
5496define <16 x i32> @fun190(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i32> %val5, <16 x i32> %val6) {
5497; CHECK-LABEL: fun190:
5498; CHECK:       # BB#0:
5499; CHECK-NEXT:    vceqh %v0, %v25, %v29
5500; CHECK-NEXT:    vceqh %v1, %v24, %v28
5501; CHECK-NEXT:    vx %v0, %v1, %v0
5502; CHECK-NEXT:    vl %v2, 224(%r15)
5503; CHECK-NEXT:    vl %v3, 160(%r15)
5504; CHECK-NEXT:    vuphh %v1, %v0
5505; CHECK-NEXT:    vsel %v24, %v3, %v2, %v1
5506; CHECK-NEXT:    vceqh %v1, %v27, %v31
5507; CHECK-NEXT:    vceqh %v2, %v26, %v30
5508; CHECK-NEXT:    vx %v1, %v2, %v1
5509; CHECK-NEXT:    vl %v3, 256(%r15)
5510; CHECK-NEXT:    vl %v4, 192(%r15)
5511; CHECK-NEXT:    vuphh %v2, %v1
5512; CHECK-NEXT:    vmrlg %v0, %v0, %v0
5513; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
5514; CHECK-NEXT:    vl %v2, 240(%r15)
5515; CHECK-NEXT:    vl %v3, 176(%r15)
5516; CHECK-NEXT:    vuphh %v0, %v0
5517; CHECK-NEXT:    vsel %v26, %v3, %v2, %v0
5518; CHECK-NEXT:    vmrlg %v0, %v1, %v1
5519; CHECK-NEXT:    vl %v1, 272(%r15)
5520; CHECK-NEXT:    vl %v2, 208(%r15)
5521; CHECK-NEXT:    vuphh %v0, %v0
5522; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
5523; CHECK-NEXT:    br %r14
5524  %cmp0 = icmp eq <16 x i16> %val1, %val2
5525  %cmp1 = icmp eq <16 x i16> %val3, %val4
5526  %and = xor <16 x i1> %cmp0, %cmp1
5527  %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6
5528  ret <16 x i32> %sel
5529}
5530
5531define <16 x i8> @fun191(<16 x i16> %val1, <16 x i16> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i8> %val5, <16 x i8> %val6) {
5532; CHECK-LABEL: fun191:
5533; CHECK:       # BB#0:
5534; CHECK-NEXT:    vl %v0, 208(%r15)
5535; CHECK-NEXT:    vl %v1, 192(%r15)
5536; CHECK-NEXT:    vceqf %v0, %v31, %v0
5537; CHECK-NEXT:    vceqf %v1, %v29, %v1
5538; CHECK-NEXT:    vpkf %v0, %v1, %v0
5539; CHECK-NEXT:    vceqh %v1, %v26, %v30
5540; CHECK-NEXT:    vx %v0, %v1, %v0
5541; CHECK-NEXT:    vl %v1, 176(%r15)
5542; CHECK-NEXT:    vl %v2, 160(%r15)
5543; CHECK-NEXT:    vceqf %v1, %v27, %v1
5544; CHECK-NEXT:    vceqf %v2, %v25, %v2
5545; CHECK-NEXT:    vpkf %v1, %v2, %v1
5546; CHECK-NEXT:    vceqh %v2, %v24, %v28
5547; CHECK-NEXT:    vx %v1, %v2, %v1
5548; CHECK-NEXT:    vpkh %v0, %v1, %v0
5549; CHECK-NEXT:    vl %v1, 240(%r15)
5550; CHECK-NEXT:    vl %v2, 224(%r15)
5551; CHECK-NEXT:    vsel %v24, %v2, %v1, %v0
5552; CHECK-NEXT:    br %r14
5553  %cmp0 = icmp eq <16 x i16> %val1, %val2
5554  %cmp1 = icmp eq <16 x i32> %val3, %val4
5555  %and = xor <16 x i1> %cmp0, %cmp1
5556  %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6
5557  ret <16 x i8> %sel
5558}
5559
5560define <16 x i32> @fun192(<16 x i16> %val1, <16 x i16> %val2, <16 x i64> %val3, <16 x i64> %val4, <16 x i32> %val5, <16 x i32> %val6) {
5561; CHECK-LABEL: fun192:
5562; CHECK:       # BB#0:
5563; CHECK-NEXT:    vl %v0, 240(%r15)
5564; CHECK-NEXT:    vl %v1, 224(%r15)
5565; CHECK-NEXT:    vceqg %v0, %v27, %v0
5566; CHECK-NEXT:    vceqg %v1, %v25, %v1
5567; CHECK-NEXT:    vpkg %v0, %v1, %v0
5568; CHECK-NEXT:    vceqh %v1, %v24, %v28
5569; CHECK-NEXT:    vuphh %v2, %v1
5570; CHECK-NEXT:    vx %v0, %v2, %v0
5571; CHECK-NEXT:    vl %v2, 416(%r15)
5572; CHECK-NEXT:    vl %v3, 352(%r15)
5573; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
5574; CHECK-NEXT:    vl %v0, 304(%r15)
5575; CHECK-NEXT:    vl %v2, 176(%r15)
5576; CHECK-NEXT:    vceqg %v0, %v2, %v0
5577; CHECK-NEXT:    vl %v2, 288(%r15)
5578; CHECK-NEXT:    vl %v3, 160(%r15)
5579; CHECK-NEXT:    vceqg %v2, %v3, %v2
5580; CHECK-NEXT:    vpkg %v0, %v2, %v0
5581; CHECK-NEXT:    vceqh %v2, %v26, %v30
5582; CHECK-NEXT:    vuphh %v3, %v2
5583; CHECK-NEXT:    vx %v0, %v3, %v0
5584; CHECK-NEXT:    vl %v3, 448(%r15)
5585; CHECK-NEXT:    vl %v4, 384(%r15)
5586; CHECK-NEXT:    vsel %v28, %v4, %v3, %v0
5587; CHECK-NEXT:    vl %v0, 272(%r15)
5588; CHECK-NEXT:    vl %v3, 256(%r15)
5589; CHECK-NEXT:    vceqg %v0, %v31, %v0
5590; CHECK-NEXT:    vceqg %v3, %v29, %v3
5591; CHECK-NEXT:    vmrlg %v1, %v1, %v1
5592; CHECK-NEXT:    vpkg %v0, %v3, %v0
5593; CHECK-NEXT:    vuphh %v1, %v1
5594; CHECK-NEXT:    vl %v3, 368(%r15)
5595; CHECK-NEXT:    vx %v0, %v1, %v0
5596; CHECK-NEXT:    vl %v1, 432(%r15)
5597; CHECK-NEXT:    vsel %v26, %v3, %v1, %v0
5598; CHECK-NEXT:    vl %v0, 336(%r15)
5599; CHECK-NEXT:    vl %v1, 208(%r15)
5600; CHECK-NEXT:    vl %v3, 192(%r15)
5601; CHECK-NEXT:    vceqg %v0, %v1, %v0
5602; CHECK-NEXT:    vl %v1, 320(%r15)
5603; CHECK-NEXT:    vceqg %v1, %v3, %v1
5604; CHECK-NEXT:    vpkg %v0, %v1, %v0
5605; CHECK-NEXT:    vmrlg %v1, %v2, %v2
5606; CHECK-NEXT:    vl %v2, 400(%r15)
5607; CHECK-NEXT:    vuphh %v1, %v1
5608; CHECK-NEXT:    vx %v0, %v1, %v0
5609; CHECK-NEXT:    vl %v1, 464(%r15)
5610; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
5611; CHECK-NEXT:    br %r14
5612  %cmp0 = icmp eq <16 x i16> %val1, %val2
5613  %cmp1 = icmp eq <16 x i64> %val3, %val4
5614  %and = xor <16 x i1> %cmp0, %cmp1
5615  %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6
5616  ret <16 x i32> %sel
5617}
5618
5619define <16 x double> @fun193(<16 x i16> %val1, <16 x i16> %val2, <16 x float> %val3, <16 x float> %val4, <16 x double> %val5, <16 x double> %val6) {
5620; CHECK-LABEL: fun193:
5621; CHECK:       # BB#0:
5622; CHECK-NEXT:    vl %v0, 160(%r15)
5623; CHECK-NEXT:    vmrlf %v1, %v0, %v0
5624; CHECK-NEXT:    vmrlf %v2, %v25, %v25
5625; CHECK-NEXT:    vldeb %v1, %v1
5626; CHECK-NEXT:    vldeb %v2, %v2
5627; CHECK-NEXT:    vfchdb %v1, %v2, %v1
5628; CHECK-NEXT:    vmrhf %v0, %v0, %v0
5629; CHECK-NEXT:    vmrhf %v2, %v25, %v25
5630; CHECK-NEXT:    vldeb %v0, %v0
5631; CHECK-NEXT:    vldeb %v2, %v2
5632; CHECK-NEXT:    vl %v3, 352(%r15)
5633; CHECK-NEXT:    vl %v4, 224(%r15)
5634; CHECK-NEXT:    vl %v5, 416(%r15)
5635; CHECK-NEXT:    vl %v6, 288(%r15)
5636; CHECK-NEXT:    vfchdb %v0, %v2, %v0
5637; CHECK-NEXT:    vpkg %v0, %v0, %v1
5638; CHECK-NEXT:    vceqh %v1, %v24, %v28
5639; CHECK-NEXT:    vuphh %v2, %v1
5640; CHECK-NEXT:    vx %v0, %v2, %v0
5641; CHECK-NEXT:    vuphf %v2, %v0
5642; CHECK-NEXT:    vsel %v24, %v4, %v3, %v2
5643; CHECK-NEXT:    vl %v2, 176(%r15)
5644; CHECK-NEXT:    vmrlf %v3, %v2, %v2
5645; CHECK-NEXT:    vmrlf %v4, %v27, %v27
5646; CHECK-NEXT:    vmrhf %v2, %v2, %v2
5647; CHECK-NEXT:    vmrlg %v1, %v1, %v1
5648; CHECK-NEXT:    vuphh %v1, %v1
5649; CHECK-NEXT:    vmrlg %v0, %v0, %v0
5650; CHECK-NEXT:    vuphf %v0, %v0
5651; CHECK-NEXT:    vldeb %v3, %v3
5652; CHECK-NEXT:    vldeb %v4, %v4
5653; CHECK-NEXT:    vfchdb %v3, %v4, %v3
5654; CHECK-NEXT:    vmrhf %v4, %v27, %v27
5655; CHECK-NEXT:    vldeb %v2, %v2
5656; CHECK-NEXT:    vldeb %v4, %v4
5657; CHECK-NEXT:    vfchdb %v2, %v4, %v2
5658; CHECK-NEXT:    vl %v4, 256(%r15)
5659; CHECK-NEXT:    vpkg %v2, %v2, %v3
5660; CHECK-NEXT:    vl %v3, 384(%r15)
5661; CHECK-NEXT:    vx %v1, %v1, %v2
5662; CHECK-NEXT:    vuphf %v2, %v1
5663; CHECK-NEXT:    vsel %v28, %v4, %v3, %v2
5664; CHECK-NEXT:    vl %v2, 192(%r15)
5665; CHECK-NEXT:    vmrlf %v3, %v2, %v2
5666; CHECK-NEXT:    vmrlf %v4, %v29, %v29
5667; CHECK-NEXT:    vmrhf %v2, %v2, %v2
5668; CHECK-NEXT:    vldeb %v3, %v3
5669; CHECK-NEXT:    vldeb %v4, %v4
5670; CHECK-NEXT:    vfchdb %v3, %v4, %v3
5671; CHECK-NEXT:    vmrhf %v4, %v29, %v29
5672; CHECK-NEXT:    vldeb %v2, %v2
5673; CHECK-NEXT:    vldeb %v4, %v4
5674; CHECK-NEXT:    vfchdb %v2, %v4, %v2
5675; CHECK-NEXT:    vpkg %v2, %v2, %v3
5676; CHECK-NEXT:    vceqh %v3, %v26, %v30
5677; CHECK-NEXT:    vuphh %v4, %v3
5678; CHECK-NEXT:    vx %v2, %v4, %v2
5679; CHECK-NEXT:    vuphf %v4, %v2
5680; CHECK-NEXT:    vsel %v25, %v6, %v5, %v4
5681; CHECK-NEXT:    vl %v4, 208(%r15)
5682; CHECK-NEXT:    vmrlf %v5, %v4, %v4
5683; CHECK-NEXT:    vmrlf %v6, %v31, %v31
5684; CHECK-NEXT:    vmrhf %v4, %v4, %v4
5685; CHECK-NEXT:    vmrlg %v3, %v3, %v3
5686; CHECK-NEXT:    vuphh %v3, %v3
5687; CHECK-NEXT:    vldeb %v5, %v5
5688; CHECK-NEXT:    vldeb %v6, %v6
5689; CHECK-NEXT:    vfchdb %v5, %v6, %v5
5690; CHECK-NEXT:    vmrhf %v6, %v31, %v31
5691; CHECK-NEXT:    vldeb %v4, %v4
5692; CHECK-NEXT:    vldeb %v6, %v6
5693; CHECK-NEXT:    vfchdb %v4, %v6, %v4
5694; CHECK-NEXT:    vl %v6, 320(%r15)
5695; CHECK-NEXT:    vpkg %v4, %v4, %v5
5696; CHECK-NEXT:    vl %v5, 448(%r15)
5697; CHECK-NEXT:    vx %v3, %v3, %v4
5698; CHECK-NEXT:    vuphf %v4, %v3
5699; CHECK-NEXT:    vsel %v29, %v6, %v5, %v4
5700; CHECK-NEXT:    vl %v4, 368(%r15)
5701; CHECK-NEXT:    vl %v5, 240(%r15)
5702; CHECK-NEXT:    vsel %v26, %v5, %v4, %v0
5703; CHECK-NEXT:    vl %v4, 272(%r15)
5704; CHECK-NEXT:    vmrlg %v0, %v1, %v1
5705; CHECK-NEXT:    vl %v1, 400(%r15)
5706; CHECK-NEXT:    vuphf %v0, %v0
5707; CHECK-NEXT:    vsel %v30, %v4, %v1, %v0
5708; CHECK-NEXT:    vl %v1, 432(%r15)
5709; CHECK-NEXT:    vmrlg %v0, %v2, %v2
5710; CHECK-NEXT:    vl %v2, 304(%r15)
5711; CHECK-NEXT:    vuphf %v0, %v0
5712; CHECK-NEXT:    vsel %v27, %v2, %v1, %v0
5713; CHECK-NEXT:    vl %v1, 464(%r15)
5714; CHECK-NEXT:    vl %v2, 336(%r15)
5715; CHECK-NEXT:    vmrlg %v0, %v3, %v3
5716; CHECK-NEXT:    vuphf %v0, %v0
5717; CHECK-NEXT:    vsel %v31, %v2, %v1, %v0
5718; CHECK-NEXT:    br %r14
5719  %cmp0 = icmp eq <16 x i16> %val1, %val2
5720  %cmp1 = fcmp ogt <16 x float> %val3, %val4
5721  %and = xor <16 x i1> %cmp0, %cmp1
5722  %sel = select <16 x i1> %and, <16 x double> %val5, <16 x double> %val6
5723  ret <16 x double> %sel
5724}
5725
5726define <16 x i32> @fun194(<16 x i16> %val1, <16 x i16> %val2, <16 x double> %val3, <16 x double> %val4, <16 x i32> %val5, <16 x i32> %val6) {
5727; CHECK-LABEL: fun194:
5728; CHECK:       # BB#0:
5729; CHECK-NEXT:    vl %v0, 240(%r15)
5730; CHECK-NEXT:    vl %v1, 224(%r15)
5731; CHECK-NEXT:    vfchdb %v0, %v27, %v0
5732; CHECK-NEXT:    vfchdb %v1, %v25, %v1
5733; CHECK-NEXT:    vpkg %v0, %v1, %v0
5734; CHECK-NEXT:    vceqh %v1, %v24, %v28
5735; CHECK-NEXT:    vuphh %v2, %v1
5736; CHECK-NEXT:    vx %v0, %v2, %v0
5737; CHECK-NEXT:    vl %v2, 416(%r15)
5738; CHECK-NEXT:    vl %v3, 352(%r15)
5739; CHECK-NEXT:    vsel %v24, %v3, %v2, %v0
5740; CHECK-NEXT:    vl %v0, 304(%r15)
5741; CHECK-NEXT:    vl %v2, 176(%r15)
5742; CHECK-NEXT:    vfchdb %v0, %v2, %v0
5743; CHECK-NEXT:    vl %v2, 288(%r15)
5744; CHECK-NEXT:    vl %v3, 160(%r15)
5745; CHECK-NEXT:    vfchdb %v2, %v3, %v2
5746; CHECK-NEXT:    vpkg %v0, %v2, %v0
5747; CHECK-NEXT:    vceqh %v2, %v26, %v30
5748; CHECK-NEXT:    vuphh %v3, %v2
5749; CHECK-NEXT:    vx %v0, %v3, %v0
5750; CHECK-NEXT:    vl %v3, 448(%r15)
5751; CHECK-NEXT:    vl %v4, 384(%r15)
5752; CHECK-NEXT:    vsel %v28, %v4, %v3, %v0
5753; CHECK-NEXT:    vl %v0, 272(%r15)
5754; CHECK-NEXT:    vl %v3, 256(%r15)
5755; CHECK-NEXT:    vfchdb %v0, %v31, %v0
5756; CHECK-NEXT:    vfchdb %v3, %v29, %v3
5757; CHECK-NEXT:    vmrlg %v1, %v1, %v1
5758; CHECK-NEXT:    vpkg %v0, %v3, %v0
5759; CHECK-NEXT:    vuphh %v1, %v1
5760; CHECK-NEXT:    vl %v3, 368(%r15)
5761; CHECK-NEXT:    vx %v0, %v1, %v0
5762; CHECK-NEXT:    vl %v1, 432(%r15)
5763; CHECK-NEXT:    vsel %v26, %v3, %v1, %v0
5764; CHECK-NEXT:    vl %v0, 336(%r15)
5765; CHECK-NEXT:    vl %v1, 208(%r15)
5766; CHECK-NEXT:    vl %v3, 192(%r15)
5767; CHECK-NEXT:    vfchdb %v0, %v1, %v0
5768; CHECK-NEXT:    vl %v1, 320(%r15)
5769; CHECK-NEXT:    vfchdb %v1, %v3, %v1
5770; CHECK-NEXT:    vpkg %v0, %v1, %v0
5771; CHECK-NEXT:    vmrlg %v1, %v2, %v2
5772; CHECK-NEXT:    vl %v2, 400(%r15)
5773; CHECK-NEXT:    vuphh %v1, %v1
5774; CHECK-NEXT:    vx %v0, %v1, %v0
5775; CHECK-NEXT:    vl %v1, 464(%r15)
5776; CHECK-NEXT:    vsel %v30, %v2, %v1, %v0
5777; CHECK-NEXT:    br %r14
5778  %cmp0 = icmp eq <16 x i16> %val1, %val2
5779  %cmp1 = fcmp ogt <16 x double> %val3, %val4
5780  %and = xor <16 x i1> %cmp0, %cmp1
5781  %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6
5782  ret <16 x i32> %sel
5783}
5784
5785