xref: /llvm-project/llvm/test/CodeGen/AArch64/sve-fp-rounding.ll (revision 1ffcbe35ae0e136d7dd4cdd77eda306cc98b00e7)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --extra_scrub
2; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s
3
4; FCEIL
5
6define <vscale x 8 x half> @frintp_nxv8f16(<vscale x 8 x half> %a) {
7; CHECK-LABEL: frintp_nxv8f16:
8; CHECK:       // %bb.0:
9; CHECK-NEXT:    ptrue p0.h
10; CHECK-NEXT:    frintp z0.h, p0/m, z0.h
11; CHECK-NEXT:    ret
12  %res = call <vscale x 8 x half> @llvm.ceil.nxv8f16(<vscale x 8 x half> %a)
13  ret <vscale x 8 x half> %res
14}
15
16define <vscale x 4 x half> @frintp_nxv4f16(<vscale x 4 x half> %a) {
17; CHECK-LABEL: frintp_nxv4f16:
18; CHECK:       // %bb.0:
19; CHECK-NEXT:    ptrue p0.s
20; CHECK-NEXT:    frintp z0.h, p0/m, z0.h
21; CHECK-NEXT:    ret
22  %res = call <vscale x 4 x half> @llvm.ceil.nxv4f16(<vscale x 4 x half> %a)
23  ret <vscale x 4 x half> %res
24}
25
26define <vscale x 2 x half> @frintp_nxv2f16(<vscale x 2 x half> %a) {
27; CHECK-LABEL: frintp_nxv2f16:
28; CHECK:       // %bb.0:
29; CHECK-NEXT:    ptrue p0.d
30; CHECK-NEXT:    frintp z0.h, p0/m, z0.h
31; CHECK-NEXT:    ret
32  %res = call <vscale x 2 x half> @llvm.ceil.nxv2f16(<vscale x 2 x half> %a)
33  ret <vscale x 2 x half> %res
34}
35
36define <vscale x 4 x float> @frintp_nxv4f32(<vscale x 4 x float> %a) {
37; CHECK-LABEL: frintp_nxv4f32:
38; CHECK:       // %bb.0:
39; CHECK-NEXT:    ptrue p0.s
40; CHECK-NEXT:    frintp z0.s, p0/m, z0.s
41; CHECK-NEXT:    ret
42  %res = call <vscale x 4 x float> @llvm.ceil.nxv4f32(<vscale x 4 x float> %a)
43  ret <vscale x 4 x float> %res
44}
45
46define <vscale x 2 x float> @frintp_nxv2f32(<vscale x 2 x float> %a) {
47; CHECK-LABEL: frintp_nxv2f32:
48; CHECK:       // %bb.0:
49; CHECK-NEXT:    ptrue p0.d
50; CHECK-NEXT:    frintp z0.s, p0/m, z0.s
51; CHECK-NEXT:    ret
52  %res = call <vscale x 2 x float> @llvm.ceil.nxv2f32(<vscale x 2 x float> %a)
53  ret <vscale x 2 x float> %res
54}
55
56define <vscale x 2 x double> @frintp_nxv2f64(<vscale x 2 x double> %a) {
57; CHECK-LABEL: frintp_nxv2f64:
58; CHECK:       // %bb.0:
59; CHECK-NEXT:    ptrue p0.d
60; CHECK-NEXT:    frintp z0.d, p0/m, z0.d
61; CHECK-NEXT:    ret
62  %res = call <vscale x 2 x double> @llvm.ceil.nxv2f64(<vscale x 2 x double> %a)
63  ret <vscale x 2 x double> %res
64}
65
66; FFLOOR
67
68define <vscale x 8 x half> @frintm_nxv8f16(<vscale x 8 x half> %a) {
69; CHECK-LABEL: frintm_nxv8f16:
70; CHECK:       // %bb.0:
71; CHECK-NEXT:    ptrue p0.h
72; CHECK-NEXT:    frintm z0.h, p0/m, z0.h
73; CHECK-NEXT:    ret
74  %res = call <vscale x 8 x half> @llvm.floor.nxv8f16(<vscale x 8 x half> %a)
75  ret <vscale x 8 x half> %res
76}
77
78define <vscale x 4 x half> @frintm_nxv4f16(<vscale x 4 x half> %a) {
79; CHECK-LABEL: frintm_nxv4f16:
80; CHECK:       // %bb.0:
81; CHECK-NEXT:    ptrue p0.s
82; CHECK-NEXT:    frintm z0.h, p0/m, z0.h
83; CHECK-NEXT:    ret
84  %res = call <vscale x 4 x half> @llvm.floor.nxv4f16(<vscale x 4 x half> %a)
85  ret <vscale x 4 x half> %res
86}
87
88define <vscale x 2 x half> @frintm_nxv2f16(<vscale x 2 x half> %a) {
89; CHECK-LABEL: frintm_nxv2f16:
90; CHECK:       // %bb.0:
91; CHECK-NEXT:    ptrue p0.d
92; CHECK-NEXT:    frintm z0.h, p0/m, z0.h
93; CHECK-NEXT:    ret
94  %res = call <vscale x 2 x half> @llvm.floor.nxv2f16(<vscale x 2 x half> %a)
95  ret <vscale x 2 x half> %res
96}
97
98define <vscale x 4 x float> @frintm_nxv4f32(<vscale x 4 x float> %a) {
99; CHECK-LABEL: frintm_nxv4f32:
100; CHECK:       // %bb.0:
101; CHECK-NEXT:    ptrue p0.s
102; CHECK-NEXT:    frintm z0.s, p0/m, z0.s
103; CHECK-NEXT:    ret
104  %res = call <vscale x 4 x float> @llvm.floor.nxv4f32(<vscale x 4 x float> %a)
105  ret <vscale x 4 x float> %res
106}
107
108define <vscale x 2 x float> @frintm_nxv2f32(<vscale x 2 x float> %a) {
109; CHECK-LABEL: frintm_nxv2f32:
110; CHECK:       // %bb.0:
111; CHECK-NEXT:    ptrue p0.d
112; CHECK-NEXT:    frintm z0.s, p0/m, z0.s
113; CHECK-NEXT:    ret
114  %res = call <vscale x 2 x float> @llvm.floor.nxv2f32(<vscale x 2 x float> %a)
115  ret <vscale x 2 x float> %res
116}
117
118define <vscale x 2 x double> @frintm_nxv2f64(<vscale x 2 x double> %a) {
119; CHECK-LABEL: frintm_nxv2f64:
120; CHECK:       // %bb.0:
121; CHECK-NEXT:    ptrue p0.d
122; CHECK-NEXT:    frintm z0.d, p0/m, z0.d
123; CHECK-NEXT:    ret
124  %res = call <vscale x 2 x double> @llvm.floor.nxv2f64(<vscale x 2 x double> %a)
125  ret <vscale x 2 x double> %res
126}
127
128; FNEARBYINT
129
130define <vscale x 8 x half> @frinti_nxv8f16(<vscale x 8 x half> %a) {
131; CHECK-LABEL: frinti_nxv8f16:
132; CHECK:       // %bb.0:
133; CHECK-NEXT:    ptrue p0.h
134; CHECK-NEXT:    frinti z0.h, p0/m, z0.h
135; CHECK-NEXT:    ret
136  %res = call <vscale x 8 x half> @llvm.nearbyint.nxv8f16(<vscale x 8 x half> %a)
137  ret <vscale x 8 x half> %res
138}
139
140define <vscale x 4 x half> @frinti_nxv4f16(<vscale x 4 x half> %a) {
141; CHECK-LABEL: frinti_nxv4f16:
142; CHECK:       // %bb.0:
143; CHECK-NEXT:    ptrue p0.s
144; CHECK-NEXT:    frinti z0.h, p0/m, z0.h
145; CHECK-NEXT:    ret
146  %res = call <vscale x 4 x half> @llvm.nearbyint.nxv4f16(<vscale x 4 x half> %a)
147  ret <vscale x 4 x half> %res
148}
149
150define <vscale x 2 x half> @frinti_nxv2f16(<vscale x 2 x half> %a) {
151; CHECK-LABEL: frinti_nxv2f16:
152; CHECK:       // %bb.0:
153; CHECK-NEXT:    ptrue p0.d
154; CHECK-NEXT:    frinti z0.h, p0/m, z0.h
155; CHECK-NEXT:    ret
156  %res = call <vscale x 2 x half> @llvm.nearbyint.nxv2f16(<vscale x 2 x half> %a)
157  ret <vscale x 2 x half> %res
158}
159
160define <vscale x 4 x float> @frinti_nxv4f32(<vscale x 4 x float> %a) {
161; CHECK-LABEL: frinti_nxv4f32:
162; CHECK:       // %bb.0:
163; CHECK-NEXT:    ptrue p0.s
164; CHECK-NEXT:    frinti z0.s, p0/m, z0.s
165; CHECK-NEXT:    ret
166  %res = call <vscale x 4 x float> @llvm.nearbyint.nxv4f32(<vscale x 4 x float> %a)
167  ret <vscale x 4 x float> %res
168}
169
170define <vscale x 2 x float> @frinti_nxv2f32(<vscale x 2 x float> %a) {
171; CHECK-LABEL: frinti_nxv2f32:
172; CHECK:       // %bb.0:
173; CHECK-NEXT:    ptrue p0.d
174; CHECK-NEXT:    frinti z0.s, p0/m, z0.s
175; CHECK-NEXT:    ret
176  %res = call <vscale x 2 x float> @llvm.nearbyint.nxv2f32(<vscale x 2 x float> %a)
177  ret <vscale x 2 x float> %res
178}
179
180define <vscale x 2 x double> @frinti_nxv2f64(<vscale x 2 x double> %a) {
181; CHECK-LABEL: frinti_nxv2f64:
182; CHECK:       // %bb.0:
183; CHECK-NEXT:    ptrue p0.d
184; CHECK-NEXT:    frinti z0.d, p0/m, z0.d
185; CHECK-NEXT:    ret
186  %res = call <vscale x 2 x double> @llvm.nearbyint.nxv2f64(<vscale x 2 x double> %a)
187  ret <vscale x 2 x double> %res
188}
189
190; FRINT
191
192define <vscale x 8 x half> @frintx_nxv8f16(<vscale x 8 x half> %a) {
193; CHECK-LABEL: frintx_nxv8f16:
194; CHECK:       // %bb.0:
195; CHECK-NEXT:    ptrue p0.h
196; CHECK-NEXT:    frintx z0.h, p0/m, z0.h
197; CHECK-NEXT:    ret
198  %res = call <vscale x 8 x half> @llvm.rint.nxv8f16(<vscale x 8 x half> %a)
199  ret <vscale x 8 x half> %res
200}
201
202define <vscale x 4 x half> @frintx_nxv4f16(<vscale x 4 x half> %a) {
203; CHECK-LABEL: frintx_nxv4f16:
204; CHECK:       // %bb.0:
205; CHECK-NEXT:    ptrue p0.s
206; CHECK-NEXT:    frintx z0.h, p0/m, z0.h
207; CHECK-NEXT:    ret
208  %res = call <vscale x 4 x half> @llvm.rint.nxv4f16(<vscale x 4 x half> %a)
209  ret <vscale x 4 x half> %res
210}
211
212define <vscale x 2 x half> @frintx_nxv2f16(<vscale x 2 x half> %a) {
213; CHECK-LABEL: frintx_nxv2f16:
214; CHECK:       // %bb.0:
215; CHECK-NEXT:    ptrue p0.d
216; CHECK-NEXT:    frintx z0.h, p0/m, z0.h
217; CHECK-NEXT:    ret
218  %res = call <vscale x 2 x half> @llvm.rint.nxv2f16(<vscale x 2 x half> %a)
219  ret <vscale x 2 x half> %res
220}
221
222define <vscale x 4 x float> @frintx_nxv4f32(<vscale x 4 x float> %a) {
223; CHECK-LABEL: frintx_nxv4f32:
224; CHECK:       // %bb.0:
225; CHECK-NEXT:    ptrue p0.s
226; CHECK-NEXT:    frintx z0.s, p0/m, z0.s
227; CHECK-NEXT:    ret
228  %res = call <vscale x 4 x float> @llvm.rint.nxv4f32(<vscale x 4 x float> %a)
229  ret <vscale x 4 x float> %res
230}
231
232define <vscale x 2 x float> @frintx_nxv2f32(<vscale x 2 x float> %a) {
233; CHECK-LABEL: frintx_nxv2f32:
234; CHECK:       // %bb.0:
235; CHECK-NEXT:    ptrue p0.d
236; CHECK-NEXT:    frintx z0.s, p0/m, z0.s
237; CHECK-NEXT:    ret
238  %res = call <vscale x 2 x float> @llvm.rint.nxv2f32(<vscale x 2 x float> %a)
239  ret <vscale x 2 x float> %res
240}
241
242define <vscale x 2 x double> @frintx_nxv2f64(<vscale x 2 x double> %a) {
243; CHECK-LABEL: frintx_nxv2f64:
244; CHECK:       // %bb.0:
245; CHECK-NEXT:    ptrue p0.d
246; CHECK-NEXT:    frintx z0.d, p0/m, z0.d
247; CHECK-NEXT:    ret
248  %res = call <vscale x 2 x double> @llvm.rint.nxv2f64(<vscale x 2 x double> %a)
249  ret <vscale x 2 x double> %res
250}
251
252; ROUND
253
254define <vscale x 8 x half> @frinta_nxv8f16(<vscale x 8 x half> %a) {
255; CHECK-LABEL: frinta_nxv8f16:
256; CHECK:       // %bb.0:
257; CHECK-NEXT:    ptrue p0.h
258; CHECK-NEXT:    frinta z0.h, p0/m, z0.h
259; CHECK-NEXT:    ret
260  %res = call <vscale x 8 x half> @llvm.round.nxv8f16(<vscale x 8 x half> %a)
261  ret <vscale x 8 x half> %res
262}
263
264define <vscale x 4 x half> @frinta_nxv4f16(<vscale x 4 x half> %a) {
265; CHECK-LABEL: frinta_nxv4f16:
266; CHECK:       // %bb.0:
267; CHECK-NEXT:    ptrue p0.s
268; CHECK-NEXT:    frinta z0.h, p0/m, z0.h
269; CHECK-NEXT:    ret
270  %res = call <vscale x 4 x half> @llvm.round.nxv4f16(<vscale x 4 x half> %a)
271  ret <vscale x 4 x half> %res
272}
273
274define <vscale x 2 x half> @frinta_nxv2f16(<vscale x 2 x half> %a) {
275; CHECK-LABEL: frinta_nxv2f16:
276; CHECK:       // %bb.0:
277; CHECK-NEXT:    ptrue p0.d
278; CHECK-NEXT:    frinta z0.h, p0/m, z0.h
279; CHECK-NEXT:    ret
280  %res = call <vscale x 2 x half> @llvm.round.nxv2f16(<vscale x 2 x half> %a)
281  ret <vscale x 2 x half> %res
282}
283
284define <vscale x 4 x float> @frinta_nxv4f32(<vscale x 4 x float> %a) {
285; CHECK-LABEL: frinta_nxv4f32:
286; CHECK:       // %bb.0:
287; CHECK-NEXT:    ptrue p0.s
288; CHECK-NEXT:    frinta z0.s, p0/m, z0.s
289; CHECK-NEXT:    ret
290  %res = call <vscale x 4 x float> @llvm.round.nxv4f32(<vscale x 4 x float> %a)
291  ret <vscale x 4 x float> %res
292}
293
294define <vscale x 2 x float> @frinta_nxv2f32(<vscale x 2 x float> %a) {
295; CHECK-LABEL: frinta_nxv2f32:
296; CHECK:       // %bb.0:
297; CHECK-NEXT:    ptrue p0.d
298; CHECK-NEXT:    frinta z0.s, p0/m, z0.s
299; CHECK-NEXT:    ret
300  %res = call <vscale x 2 x float> @llvm.round.nxv2f32(<vscale x 2 x float> %a)
301  ret <vscale x 2 x float> %res
302}
303
304define <vscale x 2 x double> @frinta_nxv2f64(<vscale x 2 x double> %a) {
305; CHECK-LABEL: frinta_nxv2f64:
306; CHECK:       // %bb.0:
307; CHECK-NEXT:    ptrue p0.d
308; CHECK-NEXT:    frinta z0.d, p0/m, z0.d
309; CHECK-NEXT:    ret
310  %res = call <vscale x 2 x double> @llvm.round.nxv2f64(<vscale x 2 x double> %a)
311  ret <vscale x 2 x double> %res
312}
313
314; ROUNDEVEN
315
316define <vscale x 8 x half> @frintn_nxv8f16(<vscale x 8 x half> %a) {
317; CHECK-LABEL: frintn_nxv8f16:
318; CHECK:       // %bb.0:
319; CHECK-NEXT:    ptrue p0.h
320; CHECK-NEXT:    frintn z0.h, p0/m, z0.h
321; CHECK-NEXT:    ret
322  %res = call <vscale x 8 x half> @llvm.roundeven.nxv8f16(<vscale x 8 x half> %a)
323  ret <vscale x 8 x half> %res
324}
325
326define <vscale x 4 x half> @frintn_nxv4f16(<vscale x 4 x half> %a) {
327; CHECK-LABEL: frintn_nxv4f16:
328; CHECK:       // %bb.0:
329; CHECK-NEXT:    ptrue p0.s
330; CHECK-NEXT:    frintn z0.h, p0/m, z0.h
331; CHECK-NEXT:    ret
332  %res = call <vscale x 4 x half> @llvm.roundeven.nxv4f16(<vscale x 4 x half> %a)
333  ret <vscale x 4 x half> %res
334}
335
336define <vscale x 2 x half> @frintn_nxv2f16(<vscale x 2 x half> %a) {
337; CHECK-LABEL: frintn_nxv2f16:
338; CHECK:       // %bb.0:
339; CHECK-NEXT:    ptrue p0.d
340; CHECK-NEXT:    frintn z0.h, p0/m, z0.h
341; CHECK-NEXT:    ret
342  %res = call <vscale x 2 x half> @llvm.roundeven.nxv2f16(<vscale x 2 x half> %a)
343  ret <vscale x 2 x half> %res
344}
345
346define <vscale x 4 x float> @frintn_nxv4f32(<vscale x 4 x float> %a) {
347; CHECK-LABEL: frintn_nxv4f32:
348; CHECK:       // %bb.0:
349; CHECK-NEXT:    ptrue p0.s
350; CHECK-NEXT:    frintn z0.s, p0/m, z0.s
351; CHECK-NEXT:    ret
352  %res = call <vscale x 4 x float> @llvm.roundeven.nxv4f32(<vscale x 4 x float> %a)
353  ret <vscale x 4 x float> %res
354}
355
356define <vscale x 2 x float> @frintn_nxv2f32(<vscale x 2 x float> %a) {
357; CHECK-LABEL: frintn_nxv2f32:
358; CHECK:       // %bb.0:
359; CHECK-NEXT:    ptrue p0.d
360; CHECK-NEXT:    frintn z0.s, p0/m, z0.s
361; CHECK-NEXT:    ret
362  %res = call <vscale x 2 x float> @llvm.roundeven.nxv2f32(<vscale x 2 x float> %a)
363  ret <vscale x 2 x float> %res
364}
365
366define <vscale x 2 x double> @frintn_nxv2f64(<vscale x 2 x double> %a) {
367; CHECK-LABEL: frintn_nxv2f64:
368; CHECK:       // %bb.0:
369; CHECK-NEXT:    ptrue p0.d
370; CHECK-NEXT:    frintn z0.d, p0/m, z0.d
371; CHECK-NEXT:    ret
372  %res = call <vscale x 2 x double> @llvm.roundeven.nxv2f64(<vscale x 2 x double> %a)
373  ret <vscale x 2 x double> %res
374}
375
376; FTRUNC
377
378define <vscale x 8 x half> @frintz_nxv8f16(<vscale x 8 x half> %a) {
379; CHECK-LABEL: frintz_nxv8f16:
380; CHECK:       // %bb.0:
381; CHECK-NEXT:    ptrue p0.h
382; CHECK-NEXT:    frintz z0.h, p0/m, z0.h
383; CHECK-NEXT:    ret
384  %res = call <vscale x 8 x half> @llvm.trunc.nxv8f16(<vscale x 8 x half> %a)
385  ret <vscale x 8 x half> %res
386}
387
388define <vscale x 4 x half> @frintz_nxv4f16(<vscale x 4 x half> %a) {
389; CHECK-LABEL: frintz_nxv4f16:
390; CHECK:       // %bb.0:
391; CHECK-NEXT:    ptrue p0.s
392; CHECK-NEXT:    frintz z0.h, p0/m, z0.h
393; CHECK-NEXT:    ret
394  %res = call <vscale x 4 x half> @llvm.trunc.nxv4f16(<vscale x 4 x half> %a)
395  ret <vscale x 4 x half> %res
396}
397
398define <vscale x 2 x half> @frintz_nxv2f16(<vscale x 2 x half> %a) {
399; CHECK-LABEL: frintz_nxv2f16:
400; CHECK:       // %bb.0:
401; CHECK-NEXT:    ptrue p0.d
402; CHECK-NEXT:    frintz z0.h, p0/m, z0.h
403; CHECK-NEXT:    ret
404  %res = call <vscale x 2 x half> @llvm.trunc.nxv2f16(<vscale x 2 x half> %a)
405  ret <vscale x 2 x half> %res
406}
407
408define <vscale x 4 x float> @frintz_nxv4f32(<vscale x 4 x float> %a) {
409; CHECK-LABEL: frintz_nxv4f32:
410; CHECK:       // %bb.0:
411; CHECK-NEXT:    ptrue p0.s
412; CHECK-NEXT:    frintz z0.s, p0/m, z0.s
413; CHECK-NEXT:    ret
414  %res = call <vscale x 4 x float> @llvm.trunc.nxv4f32(<vscale x 4 x float> %a)
415  ret <vscale x 4 x float> %res
416}
417
418define <vscale x 2 x float> @frintz_nxv2f32(<vscale x 2 x float> %a) {
419; CHECK-LABEL: frintz_nxv2f32:
420; CHECK:       // %bb.0:
421; CHECK-NEXT:    ptrue p0.d
422; CHECK-NEXT:    frintz z0.s, p0/m, z0.s
423; CHECK-NEXT:    ret
424  %res = call <vscale x 2 x float> @llvm.trunc.nxv2f32(<vscale x 2 x float> %a)
425  ret <vscale x 2 x float> %res
426}
427
428define <vscale x 2 x double> @frintz_nxv2f64(<vscale x 2 x double> %a) {
429; CHECK-LABEL: frintz_nxv2f64:
430; CHECK:       // %bb.0:
431; CHECK-NEXT:    ptrue p0.d
432; CHECK-NEXT:    frintz z0.d, p0/m, z0.d
433; CHECK-NEXT:    ret
434  %res = call <vscale x 2 x double> @llvm.trunc.nxv2f64(<vscale x 2 x double> %a)
435  ret <vscale x 2 x double> %res
436}
437
438declare <vscale x 8 x half> @llvm.ceil.nxv8f16( <vscale x 8 x half>)
439declare <vscale x 4 x half> @llvm.ceil.nxv4f16( <vscale x 4 x half>)
440declare <vscale x 2 x half> @llvm.ceil.nxv2f16( <vscale x 2 x half>)
441declare <vscale x 4 x float> @llvm.ceil.nxv4f32(<vscale x 4 x float>)
442declare <vscale x 2 x float> @llvm.ceil.nxv2f32(<vscale x 2 x float>)
443declare <vscale x 2 x double> @llvm.ceil.nxv2f64(<vscale x 2 x double>)
444
445declare <vscale x 8 x half> @llvm.floor.nxv8f16( <vscale x 8 x half>)
446declare <vscale x 4 x half> @llvm.floor.nxv4f16( <vscale x 4 x half>)
447declare <vscale x 2 x half> @llvm.floor.nxv2f16( <vscale x 2 x half>)
448declare <vscale x 4 x float> @llvm.floor.nxv4f32(<vscale x 4 x float>)
449declare <vscale x 2 x float> @llvm.floor.nxv2f32(<vscale x 2 x float>)
450declare <vscale x 2 x double> @llvm.floor.nxv2f64(<vscale x 2 x double>)
451
452declare <vscale x 8 x half> @llvm.nearbyint.nxv8f16( <vscale x 8 x half>)
453declare <vscale x 4 x half> @llvm.nearbyint.nxv4f16( <vscale x 4 x half>)
454declare <vscale x 2 x half> @llvm.nearbyint.nxv2f16( <vscale x 2 x half>)
455declare <vscale x 4 x float> @llvm.nearbyint.nxv4f32(<vscale x 4 x float>)
456declare <vscale x 2 x float> @llvm.nearbyint.nxv2f32(<vscale x 2 x float>)
457declare <vscale x 2 x double> @llvm.nearbyint.nxv2f64(<vscale x 2 x double>)
458
459declare <vscale x 8 x half> @llvm.rint.nxv8f16( <vscale x 8 x half>)
460declare <vscale x 4 x half> @llvm.rint.nxv4f16( <vscale x 4 x half>)
461declare <vscale x 2 x half> @llvm.rint.nxv2f16( <vscale x 2 x half>)
462declare <vscale x 4 x float> @llvm.rint.nxv4f32(<vscale x 4 x float>)
463declare <vscale x 2 x float> @llvm.rint.nxv2f32(<vscale x 2 x float>)
464declare <vscale x 2 x double> @llvm.rint.nxv2f64(<vscale x 2 x double>)
465
466declare <vscale x 8 x half> @llvm.round.nxv8f16( <vscale x 8 x half>)
467declare <vscale x 4 x half> @llvm.round.nxv4f16( <vscale x 4 x half>)
468declare <vscale x 2 x half> @llvm.round.nxv2f16( <vscale x 2 x half>)
469declare <vscale x 4 x float> @llvm.round.nxv4f32(<vscale x 4 x float>)
470declare <vscale x 2 x float> @llvm.round.nxv2f32(<vscale x 2 x float>)
471declare <vscale x 2 x double> @llvm.round.nxv2f64(<vscale x 2 x double>)
472
473declare <vscale x 8 x half> @llvm.roundeven.nxv8f16( <vscale x 8 x half>)
474declare <vscale x 4 x half> @llvm.roundeven.nxv4f16( <vscale x 4 x half>)
475declare <vscale x 2 x half> @llvm.roundeven.nxv2f16( <vscale x 2 x half>)
476declare <vscale x 4 x float> @llvm.roundeven.nxv4f32(<vscale x 4 x float>)
477declare <vscale x 2 x float> @llvm.roundeven.nxv2f32(<vscale x 2 x float>)
478declare <vscale x 2 x double> @llvm.roundeven.nxv2f64(<vscale x 2 x double>)
479
480declare <vscale x 8 x half> @llvm.trunc.nxv8f16( <vscale x 8 x half>)
481declare <vscale x 4 x half> @llvm.trunc.nxv4f16( <vscale x 4 x half>)
482declare <vscale x 2 x half> @llvm.trunc.nxv2f16( <vscale x 2 x half>)
483declare <vscale x 4 x float> @llvm.trunc.nxv4f32(<vscale x 4 x float>)
484declare <vscale x 2 x float> @llvm.trunc.nxv2f32(<vscale x 2 x float>)
485declare <vscale x 2 x double> @llvm.trunc.nxv2f64(<vscale x 2 x double>)
486