xref: /llvm-project/llvm/test/CodeGen/LoongArch/lasx/intrinsic-fcmp.ll (revision 83311b2b5d1b9869f9a7b265994394ea898448a2)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc --mtriple=loongarch64 --mattr=+lasx < %s | FileCheck %s
3
4declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.caf.s(<8 x float>, <8 x float>)
5
6define <8 x i32> @lasx_xvfcmp_caf_s(<8 x float> %va, <8 x float> %vb) nounwind {
7; CHECK-LABEL: lasx_xvfcmp_caf_s:
8; CHECK:       # %bb.0: # %entry
9; CHECK-NEXT:    xvfcmp.caf.s $xr0, $xr0, $xr1
10; CHECK-NEXT:    ret
11entry:
12  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.caf.s(<8 x float> %va, <8 x float> %vb)
13  ret <8 x i32> %res
14}
15
16declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.caf.d(<4 x double>, <4 x double>)
17
18define <4 x i64> @lasx_xvfcmp_caf_d(<4 x double> %va, <4 x double> %vb) nounwind {
19; CHECK-LABEL: lasx_xvfcmp_caf_d:
20; CHECK:       # %bb.0: # %entry
21; CHECK-NEXT:    xvfcmp.caf.d $xr0, $xr0, $xr1
22; CHECK-NEXT:    ret
23entry:
24  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.caf.d(<4 x double> %va, <4 x double> %vb)
25  ret <4 x i64> %res
26}
27
28declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cun.s(<8 x float>, <8 x float>)
29
30define <8 x i32> @lasx_xvfcmp_cun_s(<8 x float> %va, <8 x float> %vb) nounwind {
31; CHECK-LABEL: lasx_xvfcmp_cun_s:
32; CHECK:       # %bb.0: # %entry
33; CHECK-NEXT:    xvfcmp.cun.s $xr0, $xr0, $xr1
34; CHECK-NEXT:    ret
35entry:
36  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cun.s(<8 x float> %va, <8 x float> %vb)
37  ret <8 x i32> %res
38}
39
40declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cun.d(<4 x double>, <4 x double>)
41
42define <4 x i64> @lasx_xvfcmp_cun_d(<4 x double> %va, <4 x double> %vb) nounwind {
43; CHECK-LABEL: lasx_xvfcmp_cun_d:
44; CHECK:       # %bb.0: # %entry
45; CHECK-NEXT:    xvfcmp.cun.d $xr0, $xr0, $xr1
46; CHECK-NEXT:    ret
47entry:
48  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cun.d(<4 x double> %va, <4 x double> %vb)
49  ret <4 x i64> %res
50}
51
52declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.ceq.s(<8 x float>, <8 x float>)
53
54define <8 x i32> @lasx_xvfcmp_ceq_s(<8 x float> %va, <8 x float> %vb) nounwind {
55; CHECK-LABEL: lasx_xvfcmp_ceq_s:
56; CHECK:       # %bb.0: # %entry
57; CHECK-NEXT:    xvfcmp.ceq.s $xr0, $xr0, $xr1
58; CHECK-NEXT:    ret
59entry:
60  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.ceq.s(<8 x float> %va, <8 x float> %vb)
61  ret <8 x i32> %res
62}
63
64declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.ceq.d(<4 x double>, <4 x double>)
65
66define <4 x i64> @lasx_xvfcmp_ceq_d(<4 x double> %va, <4 x double> %vb) nounwind {
67; CHECK-LABEL: lasx_xvfcmp_ceq_d:
68; CHECK:       # %bb.0: # %entry
69; CHECK-NEXT:    xvfcmp.ceq.d $xr0, $xr0, $xr1
70; CHECK-NEXT:    ret
71entry:
72  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.ceq.d(<4 x double> %va, <4 x double> %vb)
73  ret <4 x i64> %res
74}
75
76declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cueq.s(<8 x float>, <8 x float>)
77
78define <8 x i32> @lasx_xvfcmp_cueq_s(<8 x float> %va, <8 x float> %vb) nounwind {
79; CHECK-LABEL: lasx_xvfcmp_cueq_s:
80; CHECK:       # %bb.0: # %entry
81; CHECK-NEXT:    xvfcmp.cueq.s $xr0, $xr0, $xr1
82; CHECK-NEXT:    ret
83entry:
84  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cueq.s(<8 x float> %va, <8 x float> %vb)
85  ret <8 x i32> %res
86}
87
88declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cueq.d(<4 x double>, <4 x double>)
89
90define <4 x i64> @lasx_xvfcmp_cueq_d(<4 x double> %va, <4 x double> %vb) nounwind {
91; CHECK-LABEL: lasx_xvfcmp_cueq_d:
92; CHECK:       # %bb.0: # %entry
93; CHECK-NEXT:    xvfcmp.cueq.d $xr0, $xr0, $xr1
94; CHECK-NEXT:    ret
95entry:
96  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cueq.d(<4 x double> %va, <4 x double> %vb)
97  ret <4 x i64> %res
98}
99
100declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.clt.s(<8 x float>, <8 x float>)
101
102define <8 x i32> @lasx_xvfcmp_clt_s(<8 x float> %va, <8 x float> %vb) nounwind {
103; CHECK-LABEL: lasx_xvfcmp_clt_s:
104; CHECK:       # %bb.0: # %entry
105; CHECK-NEXT:    xvfcmp.clt.s $xr0, $xr0, $xr1
106; CHECK-NEXT:    ret
107entry:
108  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.clt.s(<8 x float> %va, <8 x float> %vb)
109  ret <8 x i32> %res
110}
111
112declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.clt.d(<4 x double>, <4 x double>)
113
114define <4 x i64> @lasx_xvfcmp_clt_d(<4 x double> %va, <4 x double> %vb) nounwind {
115; CHECK-LABEL: lasx_xvfcmp_clt_d:
116; CHECK:       # %bb.0: # %entry
117; CHECK-NEXT:    xvfcmp.clt.d $xr0, $xr0, $xr1
118; CHECK-NEXT:    ret
119entry:
120  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.clt.d(<4 x double> %va, <4 x double> %vb)
121  ret <4 x i64> %res
122}
123
124declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cult.s(<8 x float>, <8 x float>)
125
126define <8 x i32> @lasx_xvfcmp_cult_s(<8 x float> %va, <8 x float> %vb) nounwind {
127; CHECK-LABEL: lasx_xvfcmp_cult_s:
128; CHECK:       # %bb.0: # %entry
129; CHECK-NEXT:    xvfcmp.cult.s $xr0, $xr0, $xr1
130; CHECK-NEXT:    ret
131entry:
132  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cult.s(<8 x float> %va, <8 x float> %vb)
133  ret <8 x i32> %res
134}
135
136declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cult.d(<4 x double>, <4 x double>)
137
138define <4 x i64> @lasx_xvfcmp_cult_d(<4 x double> %va, <4 x double> %vb) nounwind {
139; CHECK-LABEL: lasx_xvfcmp_cult_d:
140; CHECK:       # %bb.0: # %entry
141; CHECK-NEXT:    xvfcmp.cult.d $xr0, $xr0, $xr1
142; CHECK-NEXT:    ret
143entry:
144  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cult.d(<4 x double> %va, <4 x double> %vb)
145  ret <4 x i64> %res
146}
147
148declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cle.s(<8 x float>, <8 x float>)
149
150define <8 x i32> @lasx_xvfcmp_cle_s(<8 x float> %va, <8 x float> %vb) nounwind {
151; CHECK-LABEL: lasx_xvfcmp_cle_s:
152; CHECK:       # %bb.0: # %entry
153; CHECK-NEXT:    xvfcmp.cle.s $xr0, $xr0, $xr1
154; CHECK-NEXT:    ret
155entry:
156  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cle.s(<8 x float> %va, <8 x float> %vb)
157  ret <8 x i32> %res
158}
159
160declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cle.d(<4 x double>, <4 x double>)
161
162define <4 x i64> @lasx_xvfcmp_cle_d(<4 x double> %va, <4 x double> %vb) nounwind {
163; CHECK-LABEL: lasx_xvfcmp_cle_d:
164; CHECK:       # %bb.0: # %entry
165; CHECK-NEXT:    xvfcmp.cle.d $xr0, $xr0, $xr1
166; CHECK-NEXT:    ret
167entry:
168  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cle.d(<4 x double> %va, <4 x double> %vb)
169  ret <4 x i64> %res
170}
171
172declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cule.s(<8 x float>, <8 x float>)
173
174define <8 x i32> @lasx_xvfcmp_cule_s(<8 x float> %va, <8 x float> %vb) nounwind {
175; CHECK-LABEL: lasx_xvfcmp_cule_s:
176; CHECK:       # %bb.0: # %entry
177; CHECK-NEXT:    xvfcmp.cule.s $xr0, $xr0, $xr1
178; CHECK-NEXT:    ret
179entry:
180  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cule.s(<8 x float> %va, <8 x float> %vb)
181  ret <8 x i32> %res
182}
183
184declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cule.d(<4 x double>, <4 x double>)
185
186define <4 x i64> @lasx_xvfcmp_cule_d(<4 x double> %va, <4 x double> %vb) nounwind {
187; CHECK-LABEL: lasx_xvfcmp_cule_d:
188; CHECK:       # %bb.0: # %entry
189; CHECK-NEXT:    xvfcmp.cule.d $xr0, $xr0, $xr1
190; CHECK-NEXT:    ret
191entry:
192  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cule.d(<4 x double> %va, <4 x double> %vb)
193  ret <4 x i64> %res
194}
195
196declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cne.s(<8 x float>, <8 x float>)
197
198define <8 x i32> @lasx_xvfcmp_cne_s(<8 x float> %va, <8 x float> %vb) nounwind {
199; CHECK-LABEL: lasx_xvfcmp_cne_s:
200; CHECK:       # %bb.0: # %entry
201; CHECK-NEXT:    xvfcmp.cne.s $xr0, $xr0, $xr1
202; CHECK-NEXT:    ret
203entry:
204  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cne.s(<8 x float> %va, <8 x float> %vb)
205  ret <8 x i32> %res
206}
207
208declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cne.d(<4 x double>, <4 x double>)
209
210define <4 x i64> @lasx_xvfcmp_cne_d(<4 x double> %va, <4 x double> %vb) nounwind {
211; CHECK-LABEL: lasx_xvfcmp_cne_d:
212; CHECK:       # %bb.0: # %entry
213; CHECK-NEXT:    xvfcmp.cne.d $xr0, $xr0, $xr1
214; CHECK-NEXT:    ret
215entry:
216  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cne.d(<4 x double> %va, <4 x double> %vb)
217  ret <4 x i64> %res
218}
219
220declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cor.s(<8 x float>, <8 x float>)
221
222define <8 x i32> @lasx_xvfcmp_cor_s(<8 x float> %va, <8 x float> %vb) nounwind {
223; CHECK-LABEL: lasx_xvfcmp_cor_s:
224; CHECK:       # %bb.0: # %entry
225; CHECK-NEXT:    xvfcmp.cor.s $xr0, $xr0, $xr1
226; CHECK-NEXT:    ret
227entry:
228  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cor.s(<8 x float> %va, <8 x float> %vb)
229  ret <8 x i32> %res
230}
231
232declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cor.d(<4 x double>, <4 x double>)
233
234define <4 x i64> @lasx_xvfcmp_cor_d(<4 x double> %va, <4 x double> %vb) nounwind {
235; CHECK-LABEL: lasx_xvfcmp_cor_d:
236; CHECK:       # %bb.0: # %entry
237; CHECK-NEXT:    xvfcmp.cor.d $xr0, $xr0, $xr1
238; CHECK-NEXT:    ret
239entry:
240  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cor.d(<4 x double> %va, <4 x double> %vb)
241  ret <4 x i64> %res
242}
243
244declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cune.s(<8 x float>, <8 x float>)
245
246define <8 x i32> @lasx_xvfcmp_cune_s(<8 x float> %va, <8 x float> %vb) nounwind {
247; CHECK-LABEL: lasx_xvfcmp_cune_s:
248; CHECK:       # %bb.0: # %entry
249; CHECK-NEXT:    xvfcmp.cune.s $xr0, $xr0, $xr1
250; CHECK-NEXT:    ret
251entry:
252  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cune.s(<8 x float> %va, <8 x float> %vb)
253  ret <8 x i32> %res
254}
255
256declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cune.d(<4 x double>, <4 x double>)
257
258define <4 x i64> @lasx_xvfcmp_cune_d(<4 x double> %va, <4 x double> %vb) nounwind {
259; CHECK-LABEL: lasx_xvfcmp_cune_d:
260; CHECK:       # %bb.0: # %entry
261; CHECK-NEXT:    xvfcmp.cune.d $xr0, $xr0, $xr1
262; CHECK-NEXT:    ret
263entry:
264  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cune.d(<4 x double> %va, <4 x double> %vb)
265  ret <4 x i64> %res
266}
267
268declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.saf.s(<8 x float>, <8 x float>)
269
270define <8 x i32> @lasx_xvfcmp_saf_s(<8 x float> %va, <8 x float> %vb) nounwind {
271; CHECK-LABEL: lasx_xvfcmp_saf_s:
272; CHECK:       # %bb.0: # %entry
273; CHECK-NEXT:    xvfcmp.saf.s $xr0, $xr0, $xr1
274; CHECK-NEXT:    ret
275entry:
276  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.saf.s(<8 x float> %va, <8 x float> %vb)
277  ret <8 x i32> %res
278}
279
280declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.saf.d(<4 x double>, <4 x double>)
281
282define <4 x i64> @lasx_xvfcmp_saf_d(<4 x double> %va, <4 x double> %vb) nounwind {
283; CHECK-LABEL: lasx_xvfcmp_saf_d:
284; CHECK:       # %bb.0: # %entry
285; CHECK-NEXT:    xvfcmp.saf.d $xr0, $xr0, $xr1
286; CHECK-NEXT:    ret
287entry:
288  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.saf.d(<4 x double> %va, <4 x double> %vb)
289  ret <4 x i64> %res
290}
291
292declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sun.s(<8 x float>, <8 x float>)
293
294define <8 x i32> @lasx_xvfcmp_sun_s(<8 x float> %va, <8 x float> %vb) nounwind {
295; CHECK-LABEL: lasx_xvfcmp_sun_s:
296; CHECK:       # %bb.0: # %entry
297; CHECK-NEXT:    xvfcmp.sun.s $xr0, $xr0, $xr1
298; CHECK-NEXT:    ret
299entry:
300  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sun.s(<8 x float> %va, <8 x float> %vb)
301  ret <8 x i32> %res
302}
303
304declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sun.d(<4 x double>, <4 x double>)
305
306define <4 x i64> @lasx_xvfcmp_sun_d(<4 x double> %va, <4 x double> %vb) nounwind {
307; CHECK-LABEL: lasx_xvfcmp_sun_d:
308; CHECK:       # %bb.0: # %entry
309; CHECK-NEXT:    xvfcmp.sun.d $xr0, $xr0, $xr1
310; CHECK-NEXT:    ret
311entry:
312  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sun.d(<4 x double> %va, <4 x double> %vb)
313  ret <4 x i64> %res
314}
315
316declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.seq.s(<8 x float>, <8 x float>)
317
318define <8 x i32> @lasx_xvfcmp_seq_s(<8 x float> %va, <8 x float> %vb) nounwind {
319; CHECK-LABEL: lasx_xvfcmp_seq_s:
320; CHECK:       # %bb.0: # %entry
321; CHECK-NEXT:    xvfcmp.seq.s $xr0, $xr0, $xr1
322; CHECK-NEXT:    ret
323entry:
324  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.seq.s(<8 x float> %va, <8 x float> %vb)
325  ret <8 x i32> %res
326}
327
328declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.seq.d(<4 x double>, <4 x double>)
329
330define <4 x i64> @lasx_xvfcmp_seq_d(<4 x double> %va, <4 x double> %vb) nounwind {
331; CHECK-LABEL: lasx_xvfcmp_seq_d:
332; CHECK:       # %bb.0: # %entry
333; CHECK-NEXT:    xvfcmp.seq.d $xr0, $xr0, $xr1
334; CHECK-NEXT:    ret
335entry:
336  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.seq.d(<4 x double> %va, <4 x double> %vb)
337  ret <4 x i64> %res
338}
339
340declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sueq.s(<8 x float>, <8 x float>)
341
342define <8 x i32> @lasx_xvfcmp_sueq_s(<8 x float> %va, <8 x float> %vb) nounwind {
343; CHECK-LABEL: lasx_xvfcmp_sueq_s:
344; CHECK:       # %bb.0: # %entry
345; CHECK-NEXT:    xvfcmp.sueq.s $xr0, $xr0, $xr1
346; CHECK-NEXT:    ret
347entry:
348  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sueq.s(<8 x float> %va, <8 x float> %vb)
349  ret <8 x i32> %res
350}
351
352declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sueq.d(<4 x double>, <4 x double>)
353
354define <4 x i64> @lasx_xvfcmp_sueq_d(<4 x double> %va, <4 x double> %vb) nounwind {
355; CHECK-LABEL: lasx_xvfcmp_sueq_d:
356; CHECK:       # %bb.0: # %entry
357; CHECK-NEXT:    xvfcmp.sueq.d $xr0, $xr0, $xr1
358; CHECK-NEXT:    ret
359entry:
360  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sueq.d(<4 x double> %va, <4 x double> %vb)
361  ret <4 x i64> %res
362}
363
364declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.slt.s(<8 x float>, <8 x float>)
365
366define <8 x i32> @lasx_xvfcmp_slt_s(<8 x float> %va, <8 x float> %vb) nounwind {
367; CHECK-LABEL: lasx_xvfcmp_slt_s:
368; CHECK:       # %bb.0: # %entry
369; CHECK-NEXT:    xvfcmp.slt.s $xr0, $xr0, $xr1
370; CHECK-NEXT:    ret
371entry:
372  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.slt.s(<8 x float> %va, <8 x float> %vb)
373  ret <8 x i32> %res
374}
375
376declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.slt.d(<4 x double>, <4 x double>)
377
378define <4 x i64> @lasx_xvfcmp_slt_d(<4 x double> %va, <4 x double> %vb) nounwind {
379; CHECK-LABEL: lasx_xvfcmp_slt_d:
380; CHECK:       # %bb.0: # %entry
381; CHECK-NEXT:    xvfcmp.slt.d $xr0, $xr0, $xr1
382; CHECK-NEXT:    ret
383entry:
384  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.slt.d(<4 x double> %va, <4 x double> %vb)
385  ret <4 x i64> %res
386}
387
388declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sult.s(<8 x float>, <8 x float>)
389
390define <8 x i32> @lasx_xvfcmp_sult_s(<8 x float> %va, <8 x float> %vb) nounwind {
391; CHECK-LABEL: lasx_xvfcmp_sult_s:
392; CHECK:       # %bb.0: # %entry
393; CHECK-NEXT:    xvfcmp.sult.s $xr0, $xr0, $xr1
394; CHECK-NEXT:    ret
395entry:
396  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sult.s(<8 x float> %va, <8 x float> %vb)
397  ret <8 x i32> %res
398}
399
400declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sult.d(<4 x double>, <4 x double>)
401
402define <4 x i64> @lasx_xvfcmp_sult_d(<4 x double> %va, <4 x double> %vb) nounwind {
403; CHECK-LABEL: lasx_xvfcmp_sult_d:
404; CHECK:       # %bb.0: # %entry
405; CHECK-NEXT:    xvfcmp.sult.d $xr0, $xr0, $xr1
406; CHECK-NEXT:    ret
407entry:
408  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sult.d(<4 x double> %va, <4 x double> %vb)
409  ret <4 x i64> %res
410}
411
412declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sle.s(<8 x float>, <8 x float>)
413
414define <8 x i32> @lasx_xvfcmp_sle_s(<8 x float> %va, <8 x float> %vb) nounwind {
415; CHECK-LABEL: lasx_xvfcmp_sle_s:
416; CHECK:       # %bb.0: # %entry
417; CHECK-NEXT:    xvfcmp.sle.s $xr0, $xr0, $xr1
418; CHECK-NEXT:    ret
419entry:
420  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sle.s(<8 x float> %va, <8 x float> %vb)
421  ret <8 x i32> %res
422}
423
424declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sle.d(<4 x double>, <4 x double>)
425
426define <4 x i64> @lasx_xvfcmp_sle_d(<4 x double> %va, <4 x double> %vb) nounwind {
427; CHECK-LABEL: lasx_xvfcmp_sle_d:
428; CHECK:       # %bb.0: # %entry
429; CHECK-NEXT:    xvfcmp.sle.d $xr0, $xr0, $xr1
430; CHECK-NEXT:    ret
431entry:
432  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sle.d(<4 x double> %va, <4 x double> %vb)
433  ret <4 x i64> %res
434}
435
436declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sule.s(<8 x float>, <8 x float>)
437
438define <8 x i32> @lasx_xvfcmp_sule_s(<8 x float> %va, <8 x float> %vb) nounwind {
439; CHECK-LABEL: lasx_xvfcmp_sule_s:
440; CHECK:       # %bb.0: # %entry
441; CHECK-NEXT:    xvfcmp.sule.s $xr0, $xr0, $xr1
442; CHECK-NEXT:    ret
443entry:
444  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sule.s(<8 x float> %va, <8 x float> %vb)
445  ret <8 x i32> %res
446}
447
448declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sule.d(<4 x double>, <4 x double>)
449
450define <4 x i64> @lasx_xvfcmp_sule_d(<4 x double> %va, <4 x double> %vb) nounwind {
451; CHECK-LABEL: lasx_xvfcmp_sule_d:
452; CHECK:       # %bb.0: # %entry
453; CHECK-NEXT:    xvfcmp.sule.d $xr0, $xr0, $xr1
454; CHECK-NEXT:    ret
455entry:
456  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sule.d(<4 x double> %va, <4 x double> %vb)
457  ret <4 x i64> %res
458}
459
460declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sne.s(<8 x float>, <8 x float>)
461
462define <8 x i32> @lasx_xvfcmp_sne_s(<8 x float> %va, <8 x float> %vb) nounwind {
463; CHECK-LABEL: lasx_xvfcmp_sne_s:
464; CHECK:       # %bb.0: # %entry
465; CHECK-NEXT:    xvfcmp.sne.s $xr0, $xr0, $xr1
466; CHECK-NEXT:    ret
467entry:
468  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sne.s(<8 x float> %va, <8 x float> %vb)
469  ret <8 x i32> %res
470}
471
472declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sne.d(<4 x double>, <4 x double>)
473
474define <4 x i64> @lasx_xvfcmp_sne_d(<4 x double> %va, <4 x double> %vb) nounwind {
475; CHECK-LABEL: lasx_xvfcmp_sne_d:
476; CHECK:       # %bb.0: # %entry
477; CHECK-NEXT:    xvfcmp.sne.d $xr0, $xr0, $xr1
478; CHECK-NEXT:    ret
479entry:
480  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sne.d(<4 x double> %va, <4 x double> %vb)
481  ret <4 x i64> %res
482}
483
484declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sor.s(<8 x float>, <8 x float>)
485
486define <8 x i32> @lasx_xvfcmp_sor_s(<8 x float> %va, <8 x float> %vb) nounwind {
487; CHECK-LABEL: lasx_xvfcmp_sor_s:
488; CHECK:       # %bb.0: # %entry
489; CHECK-NEXT:    xvfcmp.sor.s $xr0, $xr0, $xr1
490; CHECK-NEXT:    ret
491entry:
492  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sor.s(<8 x float> %va, <8 x float> %vb)
493  ret <8 x i32> %res
494}
495
496declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sor.d(<4 x double>, <4 x double>)
497
498define <4 x i64> @lasx_xvfcmp_sor_d(<4 x double> %va, <4 x double> %vb) nounwind {
499; CHECK-LABEL: lasx_xvfcmp_sor_d:
500; CHECK:       # %bb.0: # %entry
501; CHECK-NEXT:    xvfcmp.sor.d $xr0, $xr0, $xr1
502; CHECK-NEXT:    ret
503entry:
504  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sor.d(<4 x double> %va, <4 x double> %vb)
505  ret <4 x i64> %res
506}
507
508declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sune.s(<8 x float>, <8 x float>)
509
510define <8 x i32> @lasx_xvfcmp_sune_s(<8 x float> %va, <8 x float> %vb) nounwind {
511; CHECK-LABEL: lasx_xvfcmp_sune_s:
512; CHECK:       # %bb.0: # %entry
513; CHECK-NEXT:    xvfcmp.sune.s $xr0, $xr0, $xr1
514; CHECK-NEXT:    ret
515entry:
516  %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sune.s(<8 x float> %va, <8 x float> %vb)
517  ret <8 x i32> %res
518}
519
520declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sune.d(<4 x double>, <4 x double>)
521
522define <4 x i64> @lasx_xvfcmp_sune_d(<4 x double> %va, <4 x double> %vb) nounwind {
523; CHECK-LABEL: lasx_xvfcmp_sune_d:
524; CHECK:       # %bb.0: # %entry
525; CHECK-NEXT:    xvfcmp.sune.d $xr0, $xr0, $xr1
526; CHECK-NEXT:    ret
527entry:
528  %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sune.d(<4 x double> %va, <4 x double> %vb)
529  ret <4 x i64> %res
530}
531