Skip to content

Commit 7601ae1

Browse files
committed
[RISCV] Add back some test cases I inadvertently deleted. NFC
These tests were accidentally removed in a7a1195. I only meant to remove bfloat tests, but I accidentally removed f32 and f64 as well.
1 parent d75f9dd commit 7601ae1

File tree

1 file changed

+224
-0
lines changed

1 file changed

+224
-0
lines changed

llvm/test/CodeGen/RISCV/rvv/fixed-vectors-select-fp.ll

Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,3 +119,227 @@ define <16 x half> @selectcc_v16f16(half %a, half %b, <16 x half> %c, <16 x half
119119
%v = select i1 %cmp, <16 x half> %c, <16 x half> %d
120120
ret <16 x half> %v
121121
}
122+
123+
define <2 x float> @select_v2f32(i1 zeroext %c, <2 x float> %a, <2 x float> %b) {
124+
; CHECK-LABEL: select_v2f32:
125+
; CHECK: # %bb.0:
126+
; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
127+
; CHECK-NEXT: vmv.v.x v10, a0
128+
; CHECK-NEXT: vmsne.vi v0, v10, 0
129+
; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
130+
; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
131+
; CHECK-NEXT: ret
132+
%v = select i1 %c, <2 x float> %a, <2 x float> %b
133+
ret <2 x float> %v
134+
}
135+
136+
define <2 x float> @selectcc_v2f32(float %a, float %b, <2 x float> %c, <2 x float> %d) {
137+
; CHECK-LABEL: selectcc_v2f32:
138+
; CHECK: # %bb.0:
139+
; CHECK-NEXT: feq.s a0, fa0, fa1
140+
; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
141+
; CHECK-NEXT: vmv.v.x v10, a0
142+
; CHECK-NEXT: vmsne.vi v0, v10, 0
143+
; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
144+
; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
145+
; CHECK-NEXT: ret
146+
%cmp = fcmp oeq float %a, %b
147+
%v = select i1 %cmp, <2 x float> %c, <2 x float> %d
148+
ret <2 x float> %v
149+
}
150+
151+
define <4 x float> @select_v4f32(i1 zeroext %c, <4 x float> %a, <4 x float> %b) {
152+
; CHECK-LABEL: select_v4f32:
153+
; CHECK: # %bb.0:
154+
; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
155+
; CHECK-NEXT: vmv.v.x v10, a0
156+
; CHECK-NEXT: vmsne.vi v0, v10, 0
157+
; CHECK-NEXT: vsetvli zero, zero, e32, m1, ta, ma
158+
; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
159+
; CHECK-NEXT: ret
160+
%v = select i1 %c, <4 x float> %a, <4 x float> %b
161+
ret <4 x float> %v
162+
}
163+
164+
define <4 x float> @selectcc_v4f32(float %a, float %b, <4 x float> %c, <4 x float> %d) {
165+
; CHECK-LABEL: selectcc_v4f32:
166+
; CHECK: # %bb.0:
167+
; CHECK-NEXT: feq.s a0, fa0, fa1
168+
; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
169+
; CHECK-NEXT: vmv.v.x v10, a0
170+
; CHECK-NEXT: vmsne.vi v0, v10, 0
171+
; CHECK-NEXT: vsetvli zero, zero, e32, m1, ta, ma
172+
; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
173+
; CHECK-NEXT: ret
174+
%cmp = fcmp oeq float %a, %b
175+
%v = select i1 %cmp, <4 x float> %c, <4 x float> %d
176+
ret <4 x float> %v
177+
}
178+
179+
define <8 x float> @select_v8f32(i1 zeroext %c, <8 x float> %a, <8 x float> %b) {
180+
; CHECK-LABEL: select_v8f32:
181+
; CHECK: # %bb.0:
182+
; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
183+
; CHECK-NEXT: vmv.v.x v12, a0
184+
; CHECK-NEXT: vmsne.vi v0, v12, 0
185+
; CHECK-NEXT: vsetvli zero, zero, e32, m2, ta, ma
186+
; CHECK-NEXT: vmerge.vvm v8, v10, v8, v0
187+
; CHECK-NEXT: ret
188+
%v = select i1 %c, <8 x float> %a, <8 x float> %b
189+
ret <8 x float> %v
190+
}
191+
192+
define <8 x float> @selectcc_v8f32(float %a, float %b, <8 x float> %c, <8 x float> %d) {
193+
; CHECK-LABEL: selectcc_v8f32:
194+
; CHECK: # %bb.0:
195+
; CHECK-NEXT: feq.s a0, fa0, fa1
196+
; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
197+
; CHECK-NEXT: vmv.v.x v12, a0
198+
; CHECK-NEXT: vmsne.vi v0, v12, 0
199+
; CHECK-NEXT: vsetvli zero, zero, e32, m2, ta, ma
200+
; CHECK-NEXT: vmerge.vvm v8, v10, v8, v0
201+
; CHECK-NEXT: ret
202+
%cmp = fcmp oeq float %a, %b
203+
%v = select i1 %cmp, <8 x float> %c, <8 x float> %d
204+
ret <8 x float> %v
205+
}
206+
207+
define <16 x float> @select_v16f32(i1 zeroext %c, <16 x float> %a, <16 x float> %b) {
208+
; CHECK-LABEL: select_v16f32:
209+
; CHECK: # %bb.0:
210+
; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
211+
; CHECK-NEXT: vmv.v.x v16, a0
212+
; CHECK-NEXT: vmsne.vi v0, v16, 0
213+
; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma
214+
; CHECK-NEXT: vmerge.vvm v8, v12, v8, v0
215+
; CHECK-NEXT: ret
216+
%v = select i1 %c, <16 x float> %a, <16 x float> %b
217+
ret <16 x float> %v
218+
}
219+
220+
define <16 x float> @selectcc_v16f32(float %a, float %b, <16 x float> %c, <16 x float> %d) {
221+
; CHECK-LABEL: selectcc_v16f32:
222+
; CHECK: # %bb.0:
223+
; CHECK-NEXT: feq.s a0, fa0, fa1
224+
; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
225+
; CHECK-NEXT: vmv.v.x v16, a0
226+
; CHECK-NEXT: vmsne.vi v0, v16, 0
227+
; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma
228+
; CHECK-NEXT: vmerge.vvm v8, v12, v8, v0
229+
; CHECK-NEXT: ret
230+
%cmp = fcmp oeq float %a, %b
231+
%v = select i1 %cmp, <16 x float> %c, <16 x float> %d
232+
ret <16 x float> %v
233+
}
234+
235+
define <2 x double> @select_v2f64(i1 zeroext %c, <2 x double> %a, <2 x double> %b) {
236+
; CHECK-LABEL: select_v2f64:
237+
; CHECK: # %bb.0:
238+
; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
239+
; CHECK-NEXT: vmv.v.x v10, a0
240+
; CHECK-NEXT: vmsne.vi v0, v10, 0
241+
; CHECK-NEXT: vsetvli zero, zero, e64, m1, ta, ma
242+
; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
243+
; CHECK-NEXT: ret
244+
%v = select i1 %c, <2 x double> %a, <2 x double> %b
245+
ret <2 x double> %v
246+
}
247+
248+
define <2 x double> @selectcc_v2f64(double %a, double %b, <2 x double> %c, <2 x double> %d) {
249+
; CHECK-LABEL: selectcc_v2f64:
250+
; CHECK: # %bb.0:
251+
; CHECK-NEXT: feq.d a0, fa0, fa1
252+
; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
253+
; CHECK-NEXT: vmv.v.x v10, a0
254+
; CHECK-NEXT: vmsne.vi v0, v10, 0
255+
; CHECK-NEXT: vsetvli zero, zero, e64, m1, ta, ma
256+
; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
257+
; CHECK-NEXT: ret
258+
%cmp = fcmp oeq double %a, %b
259+
%v = select i1 %cmp, <2 x double> %c, <2 x double> %d
260+
ret <2 x double> %v
261+
}
262+
263+
define <4 x double> @select_v4f64(i1 zeroext %c, <4 x double> %a, <4 x double> %b) {
264+
; CHECK-LABEL: select_v4f64:
265+
; CHECK: # %bb.0:
266+
; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
267+
; CHECK-NEXT: vmv.v.x v12, a0
268+
; CHECK-NEXT: vmsne.vi v0, v12, 0
269+
; CHECK-NEXT: vsetvli zero, zero, e64, m2, ta, ma
270+
; CHECK-NEXT: vmerge.vvm v8, v10, v8, v0
271+
; CHECK-NEXT: ret
272+
%v = select i1 %c, <4 x double> %a, <4 x double> %b
273+
ret <4 x double> %v
274+
}
275+
276+
define <4 x double> @selectcc_v4f64(double %a, double %b, <4 x double> %c, <4 x double> %d) {
277+
; CHECK-LABEL: selectcc_v4f64:
278+
; CHECK: # %bb.0:
279+
; CHECK-NEXT: feq.d a0, fa0, fa1
280+
; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
281+
; CHECK-NEXT: vmv.v.x v12, a0
282+
; CHECK-NEXT: vmsne.vi v0, v12, 0
283+
; CHECK-NEXT: vsetvli zero, zero, e64, m2, ta, ma
284+
; CHECK-NEXT: vmerge.vvm v8, v10, v8, v0
285+
; CHECK-NEXT: ret
286+
%cmp = fcmp oeq double %a, %b
287+
%v = select i1 %cmp, <4 x double> %c, <4 x double> %d
288+
ret <4 x double> %v
289+
}
290+
291+
define <8 x double> @select_v8f64(i1 zeroext %c, <8 x double> %a, <8 x double> %b) {
292+
; CHECK-LABEL: select_v8f64:
293+
; CHECK: # %bb.0:
294+
; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
295+
; CHECK-NEXT: vmv.v.x v16, a0
296+
; CHECK-NEXT: vmsne.vi v0, v16, 0
297+
; CHECK-NEXT: vsetvli zero, zero, e64, m4, ta, ma
298+
; CHECK-NEXT: vmerge.vvm v8, v12, v8, v0
299+
; CHECK-NEXT: ret
300+
%v = select i1 %c, <8 x double> %a, <8 x double> %b
301+
ret <8 x double> %v
302+
}
303+
304+
define <8 x double> @selectcc_v8f64(double %a, double %b, <8 x double> %c, <8 x double> %d) {
305+
; CHECK-LABEL: selectcc_v8f64:
306+
; CHECK: # %bb.0:
307+
; CHECK-NEXT: feq.d a0, fa0, fa1
308+
; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
309+
; CHECK-NEXT: vmv.v.x v16, a0
310+
; CHECK-NEXT: vmsne.vi v0, v16, 0
311+
; CHECK-NEXT: vsetvli zero, zero, e64, m4, ta, ma
312+
; CHECK-NEXT: vmerge.vvm v8, v12, v8, v0
313+
; CHECK-NEXT: ret
314+
%cmp = fcmp oeq double %a, %b
315+
%v = select i1 %cmp, <8 x double> %c, <8 x double> %d
316+
ret <8 x double> %v
317+
}
318+
319+
define <16 x double> @select_v16f64(i1 zeroext %c, <16 x double> %a, <16 x double> %b) {
320+
; CHECK-LABEL: select_v16f64:
321+
; CHECK: # %bb.0:
322+
; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
323+
; CHECK-NEXT: vmv.v.x v24, a0
324+
; CHECK-NEXT: vmsne.vi v0, v24, 0
325+
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, ma
326+
; CHECK-NEXT: vmerge.vvm v8, v16, v8, v0
327+
; CHECK-NEXT: ret
328+
%v = select i1 %c, <16 x double> %a, <16 x double> %b
329+
ret <16 x double> %v
330+
}
331+
332+
define <16 x double> @selectcc_v16f64(double %a, double %b, <16 x double> %c, <16 x double> %d) {
333+
; CHECK-LABEL: selectcc_v16f64:
334+
; CHECK: # %bb.0:
335+
; CHECK-NEXT: feq.d a0, fa0, fa1
336+
; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
337+
; CHECK-NEXT: vmv.v.x v24, a0
338+
; CHECK-NEXT: vmsne.vi v0, v24, 0
339+
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, ma
340+
; CHECK-NEXT: vmerge.vvm v8, v16, v8, v0
341+
; CHECK-NEXT: ret
342+
%cmp = fcmp oeq double %a, %b
343+
%v = select i1 %cmp, <16 x double> %c, <16 x double> %d
344+
ret <16 x double> %v
345+
}

0 commit comments

Comments
 (0)