1f496bd9aSJonas Paulsson; Test that vector compare / select combinations do not produce any
2f496bd9aSJonas Paulsson; unnecessary pack /unpack / shift instructions.
3f496bd9aSJonas Paulsson;
4f496bd9aSJonas Paulsson; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
5c63ed222SJonas Paulsson; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s -check-prefix=CHECK-Z14
6f496bd9aSJonas Paulsson
7f496bd9aSJonas Paulssondefine <2 x i8> @fun0(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4) {
8f496bd9aSJonas Paulsson; CHECK-LABEL: fun0:
9*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
10f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqb %v0, %v24, %v26
11f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
12f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
13f496bd9aSJonas Paulsson  %cmp = icmp eq <2 x i8> %val1, %val2
14f496bd9aSJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
15f496bd9aSJonas Paulsson  ret <2 x i8> %sel
16f496bd9aSJonas Paulsson}
17f496bd9aSJonas Paulsson
18f496bd9aSJonas Paulssondefine <2 x i16> @fun1(<2 x i8> %val1, <2 x i8> %val2, <2 x i16> %val3, <2 x i16> %val4) {
19f496bd9aSJonas Paulsson; CHECK-LABEL: fun1:
20*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
21f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqb %v0, %v24, %v26
22f496bd9aSJonas Paulsson; CHECK-NEXT:    vuphb %v0, %v0
23f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
24f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
25f496bd9aSJonas Paulsson  %cmp = icmp eq <2 x i8> %val1, %val2
26f496bd9aSJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
27f496bd9aSJonas Paulsson  ret <2 x i16> %sel
28f496bd9aSJonas Paulsson}
29f496bd9aSJonas Paulsson
30c63ed222SJonas Paulssondefine <16 x i8> @fun2(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4) {
31f496bd9aSJonas Paulsson; CHECK-LABEL: fun2:
32*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
33f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqb %v0, %v24, %v26
34f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
35f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
36c63ed222SJonas Paulsson  %cmp = icmp eq <16 x i8> %val1, %val2
37c63ed222SJonas Paulsson  %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
38c63ed222SJonas Paulsson  ret <16 x i8> %sel
39f496bd9aSJonas Paulsson}
40f496bd9aSJonas Paulsson
41c63ed222SJonas Paulssondefine <16 x i16> @fun3(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16 x i16> %val4) {
42f496bd9aSJonas Paulsson; CHECK-LABEL: fun3:
43*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
44f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqb %v0, %v24, %v26
45c63ed222SJonas Paulsson; CHECK-DAG:     vuphb [[REG0:%v[0-9]+]], %v0
46c63ed222SJonas Paulsson; CHECK-DAG:     vmrlg [[REG1:%v[0-9]+]], %v0, %v0
47c63ed222SJonas Paulsson; CHECK-DAG:     vuphb [[REG1]], [[REG1]]
48c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v25, [[REG0]]
49c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v26, %v30, %v27, [[REG1]]
50f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
51c63ed222SJonas Paulsson  %cmp = icmp eq <16 x i8> %val1, %val2
52c63ed222SJonas Paulsson  %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
53c63ed222SJonas Paulsson  ret <16 x i16> %sel
54f496bd9aSJonas Paulsson}
55f496bd9aSJonas Paulsson
56c63ed222SJonas Paulssondefine <32 x i8> @fun4(<32 x i8> %val1, <32 x i8> %val2, <32 x i8> %val3, <32 x i8> %val4) {
57f496bd9aSJonas Paulsson; CHECK-LABEL: fun4:
58*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
59c63ed222SJonas Paulsson; CHECK-DAG:     vceqb [[REG0:%v[0-9]+]], %v26, %v30
60c63ed222SJonas Paulsson; CHECK-DAG:     vceqb [[REG1:%v[0-9]+]], %v24, %v28
61c63ed222SJonas Paulsson; CHECK-DAG:     vsel %v24, %v25, %v29, [[REG1]]
62c63ed222SJonas Paulsson; CHECK-DAG:     vsel %v26, %v27, %v31, [[REG0]]
63f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
64c63ed222SJonas Paulsson  %cmp = icmp eq <32 x i8> %val1, %val2
65c63ed222SJonas Paulsson  %sel = select <32 x i1> %cmp, <32 x i8> %val3, <32 x i8> %val4
66c63ed222SJonas Paulsson  ret <32 x i8> %sel
67f496bd9aSJonas Paulsson}
68f496bd9aSJonas Paulsson
69c63ed222SJonas Paulssondefine <2 x i8> @fun5(<2 x i16> %val1, <2 x i16> %val2, <2 x i8> %val3, <2 x i8> %val4) {
70f496bd9aSJonas Paulsson; CHECK-LABEL: fun5:
71*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
72f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqh %v0, %v24, %v26
73f496bd9aSJonas Paulsson; CHECK-NEXT:    vpkh %v0, %v0, %v0
74f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
75f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
76f496bd9aSJonas Paulsson  %cmp = icmp eq <2 x i16> %val1, %val2
77f496bd9aSJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
78f496bd9aSJonas Paulsson  ret <2 x i8> %sel
79f496bd9aSJonas Paulsson}
80f496bd9aSJonas Paulsson
81c63ed222SJonas Paulssondefine <2 x i16> @fun6(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4) {
82c63ed222SJonas Paulsson; CHECK-LABEL: fun6:
83*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
84f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqh %v0, %v24, %v26
85f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
86f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
87f496bd9aSJonas Paulsson  %cmp = icmp eq <2 x i16> %val1, %val2
88f496bd9aSJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
89f496bd9aSJonas Paulsson  ret <2 x i16> %sel
90f496bd9aSJonas Paulsson}
91f496bd9aSJonas Paulsson
92c63ed222SJonas Paulssondefine <2 x i32> @fun7(<2 x i16> %val1, <2 x i16> %val2, <2 x i32> %val3, <2 x i32> %val4) {
93c63ed222SJonas Paulsson; CHECK-LABEL: fun7:
94*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
95f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqh %v0, %v24, %v26
96f496bd9aSJonas Paulsson; CHECK-NEXT:    vuphh %v0, %v0
97f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
98f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
99f496bd9aSJonas Paulsson  %cmp = icmp eq <2 x i16> %val1, %val2
100f496bd9aSJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
101f496bd9aSJonas Paulsson  ret <2 x i32> %sel
102f496bd9aSJonas Paulsson}
103f496bd9aSJonas Paulsson
104c63ed222SJonas Paulssondefine <8 x i8> @fun8(<8 x i16> %val1, <8 x i16> %val2, <8 x i8> %val3, <8 x i8> %val4) {
105c63ed222SJonas Paulsson; CHECK-LABEL: fun8:
106*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
107c63ed222SJonas Paulsson; CHECK-NEXT:    vceqh %v0, %v24, %v26
108c63ed222SJonas Paulsson; CHECK-NEXT:    vpkh %v0, %v0, %v0
109c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
110c63ed222SJonas Paulsson; CHECK-NEXT:    br %r14
111c63ed222SJonas Paulsson  %cmp = icmp eq <8 x i16> %val1, %val2
112c63ed222SJonas Paulsson  %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
113c63ed222SJonas Paulsson  ret <8 x i8> %sel
114c63ed222SJonas Paulsson}
115c63ed222SJonas Paulsson
116c63ed222SJonas Paulssondefine <8 x i16> @fun9(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4) {
117f496bd9aSJonas Paulsson; CHECK-LABEL: fun9:
118*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
119f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqh %v0, %v24, %v26
120f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
121f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
122c63ed222SJonas Paulsson  %cmp = icmp eq <8 x i16> %val1, %val2
123c63ed222SJonas Paulsson  %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
124c63ed222SJonas Paulsson  ret <8 x i16> %sel
125f496bd9aSJonas Paulsson}
126f496bd9aSJonas Paulsson
127c63ed222SJonas Paulssondefine <8 x i32> @fun10(<8 x i16> %val1, <8 x i16> %val2, <8 x i32> %val3, <8 x i32> %val4) {
128f496bd9aSJonas Paulsson; CHECK-LABEL: fun10:
129*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
130f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqh %v0, %v24, %v26
131c63ed222SJonas Paulsson; CHECK-DAG:     vuphh [[REG0:%v[0-9]+]], %v0
132c63ed222SJonas Paulsson; CHECK-DAG:     vmrlg [[REG1:%v[0-9]+]], %v0, %v0
133c63ed222SJonas Paulsson; CHECK-DAG:     vuphh [[REG1]], [[REG1]]
134c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v25, [[REG0]]
135c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v26, %v30, %v27, [[REG1]]
136f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
137c63ed222SJonas Paulsson  %cmp = icmp eq <8 x i16> %val1, %val2
138c63ed222SJonas Paulsson  %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
139c63ed222SJonas Paulsson  ret <8 x i32> %sel
140f496bd9aSJonas Paulsson}
141f496bd9aSJonas Paulsson
142c63ed222SJonas Paulssondefine <16 x i8> @fun11(<16 x i16> %val1, <16 x i16> %val2, <16 x i8> %val3, <16 x i8> %val4) {
143f496bd9aSJonas Paulsson; CHECK-LABEL: fun11:
144*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
145c63ed222SJonas Paulsson; CHECK-NEXT:    vceqh %v0, %v26, %v30
146c63ed222SJonas Paulsson; CHECK-NEXT:    vceqh %v1, %v24, %v28
147c63ed222SJonas Paulsson; CHECK-NEXT:    vpkh %v0, %v1, %v0
148c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
149f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
150c63ed222SJonas Paulsson  %cmp = icmp eq <16 x i16> %val1, %val2
151c63ed222SJonas Paulsson  %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
152c63ed222SJonas Paulsson  ret <16 x i8> %sel
153f496bd9aSJonas Paulsson}
154f496bd9aSJonas Paulsson
155c63ed222SJonas Paulssondefine <16 x i16> @fun12(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4) {
156f496bd9aSJonas Paulsson; CHECK-LABEL: fun12:
157*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
158c63ed222SJonas Paulsson; CHECK-DAG:     vceqh [[REG0:%v[0-9]+]], %v26, %v30
159c63ed222SJonas Paulsson; CHECK-DAG:     vceqh [[REG1:%v[0-9]+]], %v24, %v28
160c63ed222SJonas Paulsson; CHECK-DAG:     vsel %v24, %v25, %v29, [[REG1]]
161c63ed222SJonas Paulsson; CHECK-DAG:     vsel %v26, %v27, %v31, [[REG0]]
162f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
163c63ed222SJonas Paulsson  %cmp = icmp eq <16 x i16> %val1, %val2
164c63ed222SJonas Paulsson  %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
165c63ed222SJonas Paulsson  ret <16 x i16> %sel
166f496bd9aSJonas Paulsson}
167f496bd9aSJonas Paulsson
168f496bd9aSJonas Paulssondefine <2 x i16> @fun13(<2 x i32> %val1, <2 x i32> %val2, <2 x i16> %val3, <2 x i16> %val4) {
169f496bd9aSJonas Paulsson; CHECK-LABEL: fun13:
170*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
171f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqf %v0, %v24, %v26
172f496bd9aSJonas Paulsson; CHECK-NEXT:    vpkf %v0, %v0, %v0
173f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
174f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
175f496bd9aSJonas Paulsson  %cmp = icmp eq <2 x i32> %val1, %val2
176f496bd9aSJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
177f496bd9aSJonas Paulsson  ret <2 x i16> %sel
178f496bd9aSJonas Paulsson}
179f496bd9aSJonas Paulsson
180f496bd9aSJonas Paulssondefine <2 x i32> @fun14(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4) {
181f496bd9aSJonas Paulsson; CHECK-LABEL: fun14:
182*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
183f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqf %v0, %v24, %v26
184f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
185f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
186f496bd9aSJonas Paulsson  %cmp = icmp eq <2 x i32> %val1, %val2
187f496bd9aSJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
188f496bd9aSJonas Paulsson  ret <2 x i32> %sel
189f496bd9aSJonas Paulsson}
190f496bd9aSJonas Paulsson
191f496bd9aSJonas Paulssondefine <2 x i64> @fun15(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4) {
192f496bd9aSJonas Paulsson; CHECK-LABEL: fun15:
193*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
194f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqf %v0, %v24, %v26
195f496bd9aSJonas Paulsson; CHECK-NEXT:    vuphf %v0, %v0
196f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
197f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
198f496bd9aSJonas Paulsson  %cmp = icmp eq <2 x i32> %val1, %val2
199f496bd9aSJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
200f496bd9aSJonas Paulsson  ret <2 x i64> %sel
201f496bd9aSJonas Paulsson}
202f496bd9aSJonas Paulsson
203c63ed222SJonas Paulssondefine <4 x i16> @fun16(<4 x i32> %val1, <4 x i32> %val2, <4 x i16> %val3, <4 x i16> %val4) {
204f496bd9aSJonas Paulsson; CHECK-LABEL: fun16:
205*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
206f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqf %v0, %v24, %v26
207c63ed222SJonas Paulsson; CHECK-NEXT:    vpkf %v0, %v0, %v0
208f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
209f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
210c63ed222SJonas Paulsson  %cmp = icmp eq <4 x i32> %val1, %val2
211c63ed222SJonas Paulsson  %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
212c63ed222SJonas Paulsson  ret <4 x i16> %sel
213f496bd9aSJonas Paulsson}
214f496bd9aSJonas Paulsson
215c63ed222SJonas Paulssondefine <4 x i32> @fun17(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4) {
216f496bd9aSJonas Paulsson; CHECK-LABEL: fun17:
217*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
218f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqf %v0, %v24, %v26
219f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
220f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
221c63ed222SJonas Paulsson  %cmp = icmp eq <4 x i32> %val1, %val2
222c63ed222SJonas Paulsson  %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
223c63ed222SJonas Paulsson  ret <4 x i32> %sel
224f496bd9aSJonas Paulsson}
225f496bd9aSJonas Paulsson
226c63ed222SJonas Paulssondefine <4 x i64> @fun18(<4 x i32> %val1, <4 x i32> %val2, <4 x i64> %val3, <4 x i64> %val4) {
227f496bd9aSJonas Paulsson; CHECK-LABEL: fun18:
228*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
229c63ed222SJonas Paulsson; CHECK-NEXT:    vceqf %v0, %v24, %v26
230c63ed222SJonas Paulsson; CHECK-DAG:     vuphf [[REG0:%v[0-9]+]], %v0
231c63ed222SJonas Paulsson; CHECK-DAG:     vmrlg [[REG1:%v[0-9]+]], %v0, %v0
232c63ed222SJonas Paulsson; CHECK-DAG:     vuphf [[REG1]], [[REG1]]
233c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v25, [[REG0]]
234c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v26, %v30, %v27, [[REG1]]
235f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
236c63ed222SJonas Paulsson  %cmp = icmp eq <4 x i32> %val1, %val2
237c63ed222SJonas Paulsson  %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
238c63ed222SJonas Paulsson  ret <4 x i64> %sel
239f496bd9aSJonas Paulsson}
240f496bd9aSJonas Paulsson
241c63ed222SJonas Paulssondefine <8 x i16> @fun19(<8 x i32> %val1, <8 x i32> %val2, <8 x i16> %val3, <8 x i16> %val4) {
242f496bd9aSJonas Paulsson; CHECK-LABEL: fun19:
243*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
244c63ed222SJonas Paulsson; CHECK-NEXT:    vceqf %v0, %v26, %v30
245c63ed222SJonas Paulsson; CHECK-NEXT:    vceqf %v1, %v24, %v28
246c63ed222SJonas Paulsson; CHECK-NEXT:    vpkf %v0, %v1, %v0
247c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
248f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
249c63ed222SJonas Paulsson  %cmp = icmp eq <8 x i32> %val1, %val2
250c63ed222SJonas Paulsson  %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
251c63ed222SJonas Paulsson  ret <8 x i16> %sel
252f496bd9aSJonas Paulsson}
253f496bd9aSJonas Paulsson
254c63ed222SJonas Paulssondefine <8 x i32> @fun20(<8 x i32> %val1, <8 x i32> %val2, <8 x i32> %val3, <8 x i32> %val4) {
255f496bd9aSJonas Paulsson; CHECK-LABEL: fun20:
256*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
257c63ed222SJonas Paulsson; CHECK-DAG:     vceqf [[REG0:%v[0-9]+]], %v26, %v30
258c63ed222SJonas Paulsson; CHECK-DAG:     vceqf [[REG1:%v[0-9]+]], %v24, %v28
259c63ed222SJonas Paulsson; CHECK-DAG:     vsel %v24, %v25, %v29, [[REG1]]
260c63ed222SJonas Paulsson; CHECK-DAG:     vsel %v26, %v27, %v31, [[REG0]]
261f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
262c63ed222SJonas Paulsson  %cmp = icmp eq <8 x i32> %val1, %val2
263c63ed222SJonas Paulsson  %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
264c63ed222SJonas Paulsson  ret <8 x i32> %sel
265f496bd9aSJonas Paulsson}
266f496bd9aSJonas Paulsson
267c63ed222SJonas Paulssondefine <2 x i32> @fun21(<2 x i64> %val1, <2 x i64> %val2, <2 x i32> %val3, <2 x i32> %val4) {
268f496bd9aSJonas Paulsson; CHECK-LABEL: fun21:
269*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
270f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqg %v0, %v24, %v26
271c63ed222SJonas Paulsson; CHECK-NEXT:    vpkg %v0, %v0, %v0
272f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
273f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
274f496bd9aSJonas Paulsson  %cmp = icmp eq <2 x i64> %val1, %val2
275c63ed222SJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
276c63ed222SJonas Paulsson  ret <2 x i32> %sel
277f496bd9aSJonas Paulsson}
278f496bd9aSJonas Paulsson
279c63ed222SJonas Paulssondefine <2 x i64> @fun22(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4) {
280f496bd9aSJonas Paulsson; CHECK-LABEL: fun22:
281*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
282f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqg %v0, %v24, %v26
283f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
284f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
285f496bd9aSJonas Paulsson  %cmp = icmp eq <2 x i64> %val1, %val2
286c63ed222SJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
287c63ed222SJonas Paulsson  ret <2 x i64> %sel
288f496bd9aSJonas Paulsson}
289f496bd9aSJonas Paulsson
290c63ed222SJonas Paulssondefine <4 x i32> @fun23(<4 x i64> %val1, <4 x i64> %val2, <4 x i32> %val3, <4 x i32> %val4) {
291f496bd9aSJonas Paulsson; CHECK-LABEL: fun23:
292*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
293c63ed222SJonas Paulsson; CHECK-NEXT:    vceqg %v0, %v26, %v30
294c63ed222SJonas Paulsson; CHECK-NEXT:    vceqg %v1, %v24, %v28
295c63ed222SJonas Paulsson; CHECK-NEXT:    vpkg %v0, %v1, %v0
296c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
297f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
298c63ed222SJonas Paulsson  %cmp = icmp eq <4 x i64> %val1, %val2
299f496bd9aSJonas Paulsson  %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
300f496bd9aSJonas Paulsson  ret <4 x i32> %sel
301f496bd9aSJonas Paulsson}
302f496bd9aSJonas Paulsson
303c63ed222SJonas Paulssondefine <4 x i64> @fun24(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4) {
304c63ed222SJonas Paulsson; CHECK-LABEL: fun24:
305*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
306c63ed222SJonas Paulsson; CHECK-DAG:     vceqg [[REG0:%v[0-9]+]], %v26, %v30
307c63ed222SJonas Paulsson; CHECK-DAG:     vceqg [[REG1:%v[0-9]+]], %v24, %v28
308c63ed222SJonas Paulsson; CHECK-DAG:     vsel %v24, %v25, %v29, [[REG1]]
309c63ed222SJonas Paulsson; CHECK-DAG:     vsel %v26, %v27, %v31, [[REG0]]
310c63ed222SJonas Paulsson; CHECK-NEXT:    br %r14
311c63ed222SJonas Paulsson  %cmp = icmp eq <4 x i64> %val1, %val2
312c63ed222SJonas Paulsson  %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
313c63ed222SJonas Paulsson  ret <4 x i64> %sel
314c63ed222SJonas Paulsson}
315c63ed222SJonas Paulsson
316c63ed222SJonas Paulssondefine <2 x float> @fun25(<2 x float> %val1, <2 x float> %val2, <2 x float> %val3, <2 x float> %val4) {
317c63ed222SJonas Paulsson; CHECK-LABEL: fun25:
318*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
319c63ed222SJonas Paulsson; CHECK-NEXT:    vmrlf %v0, %v26, %v26
320c63ed222SJonas Paulsson; CHECK-NEXT:    vmrlf %v1, %v24, %v24
321c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v0, %v0
322c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v1, %v1
323c63ed222SJonas Paulsson; CHECK-NEXT:    vfchdb %v0, %v1, %v0
324c63ed222SJonas Paulsson; CHECK-NEXT:    vmrhf %v1, %v26, %v26
325c63ed222SJonas Paulsson; CHECK-NEXT:    vmrhf %v2, %v24, %v24
326c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v1, %v1
327c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v2, %v2
328c63ed222SJonas Paulsson; CHECK-NEXT:    vfchdb %v1, %v2, %v1
329c63ed222SJonas Paulsson; CHECK-NEXT:    vpkg %v0, %v1, %v0
330c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
331c63ed222SJonas Paulsson; CHECK-NEXT:    br %r14
332c63ed222SJonas Paulsson
333c63ed222SJonas Paulsson; CHECK-Z14-LABEL: fun25:
334*25528d6dSFrancis Visoiu Mistrih; CHECK-Z14:       # %bb.0:
335c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    vfchsb  %v0, %v24, %v26
336c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    vsel    %v24, %v28, %v30, %v0
337c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    br %r14
338c63ed222SJonas Paulsson
339c63ed222SJonas Paulsson  %cmp = fcmp ogt <2 x float> %val1, %val2
340c63ed222SJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
341c63ed222SJonas Paulsson  ret <2 x float> %sel
342c63ed222SJonas Paulsson}
343c63ed222SJonas Paulsson
344c63ed222SJonas Paulssondefine <2 x double> @fun26(<2 x float> %val1, <2 x float> %val2, <2 x double> %val3, <2 x double> %val4) {
345c63ed222SJonas Paulsson; CHECK-LABEL: fun26:
346*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
347c63ed222SJonas Paulsson; CHECK-NEXT:    vmrlf %v0, %v26, %v26
348c63ed222SJonas Paulsson; CHECK-NEXT:    vmrlf %v1, %v24, %v24
349c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v0, %v0
350c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v1, %v1
351c63ed222SJonas Paulsson; CHECK-NEXT:    vfchdb %v0, %v1, %v0
352c63ed222SJonas Paulsson; CHECK-NEXT:    vmrhf %v1, %v26, %v26
353c63ed222SJonas Paulsson; CHECK-NEXT:    vmrhf %v2, %v24, %v24
354c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v1, %v1
355c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v2, %v2
356c63ed222SJonas Paulsson; CHECK-NEXT:    vfchdb %v1, %v2, %v1
357c63ed222SJonas Paulsson; CHECK-NEXT:    vpkg %v0, %v1, %v0
358c63ed222SJonas Paulsson; CHECK-NEXT:    vuphf %v0, %v0
359c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
360c63ed222SJonas Paulsson; CHECK-NEXT:    br %r14
361c63ed222SJonas Paulsson
362c63ed222SJonas Paulsson; CHECK-Z14-LABEL: fun26:
363*25528d6dSFrancis Visoiu Mistrih; CHECK-Z14:       # %bb.0:
364c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    vfchsb  %v0, %v24, %v26
365c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    vuphf   %v0, %v0
366c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    vsel    %v24, %v28, %v30, %v0
367c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    br %r14
368c63ed222SJonas Paulsson
369c63ed222SJonas Paulsson  %cmp = fcmp ogt <2 x float> %val1, %val2
370c63ed222SJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
371c63ed222SJonas Paulsson  ret <2 x double> %sel
372c63ed222SJonas Paulsson}
373c63ed222SJonas Paulsson
374c63ed222SJonas Paulsson; Test a widening select of floats.
375c63ed222SJonas Paulssondefine <2 x float> @fun27(<2 x i8> %val1, <2 x i8> %val2, <2 x float> %val3, <2 x float> %val4) {
376f496bd9aSJonas Paulsson; CHECK-LABEL: fun27:
377*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
378f496bd9aSJonas Paulsson; CHECK-NEXT:    vceqb %v0, %v24, %v26
379f496bd9aSJonas Paulsson; CHECK-NEXT:    vuphb %v0, %v0
380f496bd9aSJonas Paulsson; CHECK-NEXT:    vuphh %v0, %v0
381c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
382f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
383c63ed222SJonas Paulsson
384c63ed222SJonas Paulsson  %cmp = icmp eq <2 x i8> %val1, %val2
385c63ed222SJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
386c63ed222SJonas Paulsson  ret <2 x float> %sel
387f496bd9aSJonas Paulsson}
388f496bd9aSJonas Paulsson
389c63ed222SJonas Paulssondefine <4 x float> @fun28(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4) {
390f496bd9aSJonas Paulsson; CHECK-LABEL: fun28:
391*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
392c63ed222SJonas Paulsson; CHECK-NEXT:    vmrlf %v0, %v26, %v26
393c63ed222SJonas Paulsson; CHECK-NEXT:    vmrlf %v1, %v24, %v24
394c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v0, %v0
395c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v1, %v1
396c63ed222SJonas Paulsson; CHECK-NEXT:    vfchdb %v0, %v1, %v0
397c63ed222SJonas Paulsson; CHECK-NEXT:    vmrhf %v1, %v26, %v26
398c63ed222SJonas Paulsson; CHECK-NEXT:    vmrhf %v2, %v24, %v24
399c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v1, %v1
400c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v2, %v2
401c63ed222SJonas Paulsson; CHECK-NEXT:    vfchdb %v1, %v2, %v1
402c63ed222SJonas Paulsson; CHECK-NEXT:    vpkg %v0, %v1, %v0
403f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
404f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
405c63ed222SJonas Paulsson
406c63ed222SJonas Paulsson; CHECK-Z14-LABEL: fun28:
407*25528d6dSFrancis Visoiu Mistrih; CHECK-Z14:       # %bb.0:
408c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    vfchsb  %v0, %v24, %v26
409c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    vsel    %v24, %v28, %v30, %v0
410c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    br %r14
411c63ed222SJonas Paulsson
412c63ed222SJonas Paulsson  %cmp = fcmp ogt <4 x float> %val1, %val2
413f496bd9aSJonas Paulsson  %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
414f496bd9aSJonas Paulsson  ret <4 x float> %sel
415f496bd9aSJonas Paulsson}
416f496bd9aSJonas Paulsson
417c63ed222SJonas Paulssondefine <4 x double> @fun29(<4 x float> %val1, <4 x float> %val2, <4 x double> %val3, <4 x double> %val4) {
418f496bd9aSJonas Paulsson; CHECK-LABEL: fun29:
419*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
420c63ed222SJonas Paulsson; CHECK-NEXT:    vmrlf %v0, %v26, %v26
421c63ed222SJonas Paulsson; CHECK-NEXT:    vmrlf %v1, %v24, %v24
422c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v0, %v0
423c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v1, %v1
424c63ed222SJonas Paulsson; CHECK-NEXT:    vfchdb %v0, %v1, %v0
425c63ed222SJonas Paulsson; CHECK-NEXT:    vmrhf %v1, %v26, %v26
426c63ed222SJonas Paulsson; CHECK-NEXT:    vmrhf %v2, %v24, %v24
427c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v1, %v1
428c63ed222SJonas Paulsson; CHECK-NEXT:    vldeb %v2, %v2
429c63ed222SJonas Paulsson; CHECK-NEXT:    vfchdb %v1, %v2, %v1
430c63ed222SJonas Paulsson; CHECK-NEXT:    vpkg [[REG0:%v[0-9]+]], %v1, %v0
431c63ed222SJonas Paulsson; CHECK-DAG:     vmrlg [[REG1:%v[0-9]+]], [[REG0]], [[REG0]]
432c63ed222SJonas Paulsson; CHECK-DAG:     vuphf [[REG1]], [[REG1]]
433c63ed222SJonas Paulsson; CHECK-DAG:     vuphf [[REG2:%v[0-9]+]], [[REG0]]
434c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v25, [[REG2]]
435c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v26, %v30, %v27, [[REG1]]
436f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
437c63ed222SJonas Paulsson
438c63ed222SJonas Paulsson; CHECK-Z14-LABEL: fun29:
439*25528d6dSFrancis Visoiu Mistrih; CHECK-Z14:       # %bb.0:
440c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    vfchsb  %v0, %v24, %v26
441c63ed222SJonas Paulsson; CHECK-Z14-DAG:     vuphf   [[REG0:%v[0-9]+]], %v0
442c63ed222SJonas Paulsson; CHECK-Z14-DAG:     vmrlg   [[REG1:%v[0-9]+]], %v0, %v0
443c63ed222SJonas Paulsson; CHECK-Z14-DAG:     vuphf   [[REG1]], [[REG1]]
444c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    vsel    %v24, %v28, %v25, [[REG0]]
445c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    vsel    %v26, %v30, %v27, [[REG1]]
446c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    br %r14
447c63ed222SJonas Paulsson
448c63ed222SJonas Paulsson  %cmp = fcmp ogt <4 x float> %val1, %val2
449f496bd9aSJonas Paulsson  %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
450f496bd9aSJonas Paulsson  ret <4 x double> %sel
451f496bd9aSJonas Paulsson}
452f496bd9aSJonas Paulsson
453c63ed222SJonas Paulssondefine <8 x float> @fun30(<8 x float> %val1, <8 x float> %val2, <8 x float> %val3, <8 x float> %val4) {
454c63ed222SJonas Paulsson; CHECK-Z14-LABEL: fun30:
455*25528d6dSFrancis Visoiu Mistrih; CHECK-Z14:       # %bb.0:
456c63ed222SJonas Paulsson; CHECK-Z14-DAG:     vfchsb  [[REG0:%v[0-9]+]], %v26, %v30
457c63ed222SJonas Paulsson; CHECK-Z14-DAG:     vfchsb  [[REG1:%v[0-9]+]], %v24, %v28
458c63ed222SJonas Paulsson; CHECK-Z14-DAG:     vsel    %v24, %v25, %v29, [[REG1]]
459c63ed222SJonas Paulsson; CHECK-Z14-DAG:     vsel    %v26, %v27, %v31, [[REG0]]
460c63ed222SJonas Paulsson; CHECK-Z14-NEXT:    br %r14
461c63ed222SJonas Paulsson  %cmp = fcmp ogt <8 x float> %val1, %val2
462c63ed222SJonas Paulsson  %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
463c63ed222SJonas Paulsson  ret <8 x float> %sel
464f496bd9aSJonas Paulsson}
465f496bd9aSJonas Paulsson
466c63ed222SJonas Paulssondefine <2 x float> @fun31(<2 x double> %val1, <2 x double> %val2, <2 x float> %val3, <2 x float> %val4) {
467f496bd9aSJonas Paulsson; CHECK-LABEL: fun31:
468*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
469c63ed222SJonas Paulsson; CHECK-NEXT:    vfchdb %v0, %v24, %v26
470c63ed222SJonas Paulsson; CHECK-NEXT:    vpkg %v0, %v0, %v0
471f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
472f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
473c63ed222SJonas Paulsson
474c63ed222SJonas Paulsson  %cmp = fcmp ogt <2 x double> %val1, %val2
475c63ed222SJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
476c63ed222SJonas Paulsson  ret <2 x float> %sel
477f496bd9aSJonas Paulsson}
478f496bd9aSJonas Paulsson
479c63ed222SJonas Paulssondefine <2 x double> @fun32(<2 x double> %val1, <2 x double> %val2, <2 x double> %val3, <2 x double> %val4) {
480f496bd9aSJonas Paulsson; CHECK-LABEL: fun32:
481*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
482c63ed222SJonas Paulsson; CHECK-NEXT:    vfchdb %v0, %v24, %v26
483f496bd9aSJonas Paulsson; CHECK-NEXT:    vsel %v24, %v28, %v30, %v0
484f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
485c63ed222SJonas Paulsson  %cmp = fcmp ogt <2 x double> %val1, %val2
486c63ed222SJonas Paulsson  %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
487c63ed222SJonas Paulsson  ret <2 x double> %sel
488f496bd9aSJonas Paulsson}
489f496bd9aSJonas Paulsson
490c63ed222SJonas Paulssondefine <4 x float> @fun33(<4 x double> %val1, <4 x double> %val2, <4 x float> %val3, <4 x float> %val4) {
491f496bd9aSJonas Paulsson; CHECK-LABEL: fun33:
492*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
493c63ed222SJonas Paulsson; CHECK-NEXT:    vfchdb %v0, %v26, %v30
494c63ed222SJonas Paulsson; CHECK-NEXT:    vfchdb %v1, %v24, %v28
495c63ed222SJonas Paulsson; CHECK-NEXT:    vpkg %v0, %v1, %v0
496c63ed222SJonas Paulsson; CHECK-NEXT:    vsel %v24, %v25, %v27, %v0
497f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
498c63ed222SJonas Paulsson  %cmp = fcmp ogt <4 x double> %val1, %val2
499c63ed222SJonas Paulsson  %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
500c63ed222SJonas Paulsson  ret <4 x float> %sel
501f496bd9aSJonas Paulsson}
502f496bd9aSJonas Paulsson
503c63ed222SJonas Paulssondefine <4 x double> @fun34(<4 x double> %val1, <4 x double> %val2, <4 x double> %val3, <4 x double> %val4) {
504f496bd9aSJonas Paulsson; CHECK-LABEL: fun34:
505*25528d6dSFrancis Visoiu Mistrih; CHECK:       # %bb.0:
506c63ed222SJonas Paulsson; CHECK-DAG:     vfchdb [[REG0:%v[0-9]+]], %v26, %v30
507c63ed222SJonas Paulsson; CHECK-DAG:     vfchdb [[REG1:%v[0-9]+]], %v24, %v28
508c63ed222SJonas Paulsson; CHECK-DAG:     vsel %v24, %v25, %v29, [[REG1]]
509c63ed222SJonas Paulsson; CHECK-DAG:     vsel %v26, %v27, %v31, [[REG0]]
510f496bd9aSJonas Paulsson; CHECK-NEXT:    br %r14
511f496bd9aSJonas Paulsson  %cmp = fcmp ogt <4 x double> %val1, %val2
512f496bd9aSJonas Paulsson  %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
513f496bd9aSJonas Paulsson  ret <4 x double> %sel
514f496bd9aSJonas Paulsson}
515