softfloat_sys_riscv/
lib.rs

1// SPDX-License-Identifier: BSD-3-Clause
2// See Notices.txt for copyright information
3#![cfg_attr(not(test), no_std)]
4#![allow(non_snake_case, non_camel_case_types, non_upper_case_globals)]
5
6extern crate c99;
7
8use c99::{int_fast32_t, int_fast64_t, uint_fast32_t, uint_fast64_t, uint_fast8_t};
9
10extern "C" {
11    pub fn softfloat_detectTininess_read_helper() -> uint_fast8_t;
12    pub fn softfloat_detectTininess_write_helper(v: uint_fast8_t);
13    pub fn softfloat_roundingMode_read_helper() -> uint_fast8_t;
14    pub fn softfloat_roundingMode_write_helper(v: uint_fast8_t);
15    pub fn softfloat_exceptionFlags_read_helper() -> uint_fast8_t;
16    pub fn softfloat_exceptionFlags_write_helper(v: uint_fast8_t);
17    pub fn extF80_roundingPrecision_read_helper() -> uint_fast8_t;
18    pub fn extF80_roundingPrecision_write_helper(v: uint_fast8_t);
19}
20
21#[derive(Copy, Clone, Debug)]
22#[repr(C)]
23pub struct float16_t {
24    pub v: u16,
25}
26
27#[derive(Copy, Clone, Debug)]
28#[repr(C)]
29pub struct float32_t {
30    pub v: u32,
31}
32
33#[derive(Copy, Clone, Debug)]
34#[repr(C)]
35pub struct float64_t {
36    pub v: u64,
37}
38
39#[derive(Copy, Clone, Debug)]
40#[repr(C)]
41pub struct float128_t {
42    pub v: [u64; 2],
43}
44
45#[cfg(target_endian = "little")]
46#[derive(Copy, Clone, Debug)]
47#[repr(C)]
48pub struct extFloat80M {
49    pub signif: u64,
50    pub signExp: u16,
51}
52
53#[cfg(target_endian = "big")]
54#[derive(Copy, Clone, Debug)]
55#[repr(C)]
56pub struct extFloat80M {
57    pub signExp: u16,
58    pub signif: u64,
59}
60
61pub type extFloat80_t = extFloat80M;
62
63pub const softfloat_tininess_beforeRounding: u8 = 0;
64pub const softfloat_tininess_afterRounding: u8 = 1;
65
66pub const softfloat_round_near_even: u8 = 0;
67pub const softfloat_round_minMag: u8 = 1;
68pub const softfloat_round_min: u8 = 2;
69pub const softfloat_round_max: u8 = 3;
70pub const softfloat_round_near_maxMag: u8 = 4;
71pub const softfloat_round_odd: u8 = 6;
72
73pub const softfloat_flag_inexact: u8 = 1;
74pub const softfloat_flag_underflow: u8 = 2;
75pub const softfloat_flag_overflow: u8 = 4;
76pub const softfloat_flag_infinite: u8 = 8;
77pub const softfloat_flag_invalid: u8 = 16;
78
79extern "C" {
80    pub fn softfloat_raiseFlags(_: uint_fast8_t);
81
82    pub fn ui32_to_f16(_: u32) -> float16_t;
83    pub fn ui32_to_f32(_: u32) -> float32_t;
84    pub fn ui32_to_f64(_: u32) -> float64_t;
85    pub fn ui32_to_extF80(_: u32) -> extFloat80_t;
86    pub fn ui32_to_f128(_: u32) -> float128_t;
87    pub fn ui32_to_extF80M(_: u32, _: *mut extFloat80_t);
88    pub fn ui32_to_f128M(_: u32, _: *mut float128_t);
89    pub fn ui64_to_f16(_: u64) -> float16_t;
90    pub fn ui64_to_f32(_: u64) -> float32_t;
91    pub fn ui64_to_f64(_: u64) -> float64_t;
92    pub fn ui64_to_extF80(_: u64) -> extFloat80_t;
93    pub fn ui64_to_f128(_: u64) -> float128_t;
94
95    pub fn ui64_to_extF80M(_: u64, _: *mut extFloat80_t);
96    pub fn ui64_to_f128M(_: u64, _: *mut float128_t);
97    pub fn i32_to_f16(_: i32) -> float16_t;
98    pub fn i32_to_f32(_: i32) -> float32_t;
99    pub fn i32_to_f64(_: i32) -> float64_t;
100    pub fn i32_to_extF80(_: i32) -> extFloat80_t;
101    pub fn i32_to_f128(_: i32) -> float128_t;
102
103    pub fn i32_to_extF80M(_: i32, _: *mut extFloat80_t);
104    pub fn i32_to_f128M(_: i32, _: *mut float128_t);
105    pub fn i64_to_f16(_: i64) -> float16_t;
106    pub fn i64_to_f32(_: i64) -> float32_t;
107    pub fn i64_to_f64(_: i64) -> float64_t;
108    pub fn i64_to_extF80(_: i64) -> extFloat80_t;
109    pub fn i64_to_f128(_: i64) -> float128_t;
110
111    pub fn i64_to_extF80M(_: i64, _: *mut extFloat80_t);
112    pub fn i64_to_f128M(_: i64, _: *mut float128_t);
113
114    pub fn f16_to_ui32(_: float16_t, _: uint_fast8_t, _: bool) -> uint_fast32_t;
115    pub fn f16_to_ui64(_: float16_t, _: uint_fast8_t, _: bool) -> uint_fast64_t;
116    pub fn f16_to_i32(_: float16_t, _: uint_fast8_t, _: bool) -> int_fast32_t;
117    pub fn f16_to_i64(_: float16_t, _: uint_fast8_t, _: bool) -> int_fast64_t;
118    pub fn f16_to_ui32_r_minMag(_: float16_t, _: bool) -> uint_fast32_t;
119    pub fn f16_to_ui64_r_minMag(_: float16_t, _: bool) -> uint_fast64_t;
120    pub fn f16_to_i32_r_minMag(_: float16_t, _: bool) -> int_fast32_t;
121    pub fn f16_to_i64_r_minMag(_: float16_t, _: bool) -> int_fast64_t;
122    pub fn f16_to_f32(_: float16_t) -> float32_t;
123    pub fn f16_to_f64(_: float16_t) -> float64_t;
124    pub fn f16_to_extF80(_: float16_t) -> extFloat80_t;
125    pub fn f16_to_f128(_: float16_t) -> float128_t;
126
127    pub fn f16_to_extF80M(_: float16_t, _: *mut extFloat80_t);
128    pub fn f16_to_f128M(_: float16_t, _: *mut float128_t);
129    pub fn f16_roundToInt(_: float16_t, _: uint_fast8_t, _: bool) -> float16_t;
130    pub fn f16_add(_: float16_t, _: float16_t) -> float16_t;
131    pub fn f16_sub(_: float16_t, _: float16_t) -> float16_t;
132    pub fn f16_mul(_: float16_t, _: float16_t) -> float16_t;
133    pub fn f16_mulAdd(_: float16_t, _: float16_t, _: float16_t) -> float16_t;
134    pub fn f16_div(_: float16_t, _: float16_t) -> float16_t;
135    pub fn f16_rem(_: float16_t, _: float16_t) -> float16_t;
136    pub fn f16_sqrt(_: float16_t) -> float16_t;
137    pub fn f16_eq(_: float16_t, _: float16_t) -> bool;
138    pub fn f16_le(_: float16_t, _: float16_t) -> bool;
139    pub fn f16_lt(_: float16_t, _: float16_t) -> bool;
140    pub fn f16_eq_signaling(_: float16_t, _: float16_t) -> bool;
141    pub fn f16_le_quiet(_: float16_t, _: float16_t) -> bool;
142    pub fn f16_lt_quiet(_: float16_t, _: float16_t) -> bool;
143    pub fn f16_isSignalingNaN(_: float16_t) -> bool;
144
145    pub fn f32_to_ui32(_: float32_t, _: uint_fast8_t, _: bool) -> uint_fast32_t;
146    pub fn f32_to_ui64(_: float32_t, _: uint_fast8_t, _: bool) -> uint_fast64_t;
147    pub fn f32_to_i32(_: float32_t, _: uint_fast8_t, _: bool) -> int_fast32_t;
148    pub fn f32_to_i64(_: float32_t, _: uint_fast8_t, _: bool) -> int_fast64_t;
149    pub fn f32_to_ui32_r_minMag(_: float32_t, _: bool) -> uint_fast32_t;
150    pub fn f32_to_ui64_r_minMag(_: float32_t, _: bool) -> uint_fast64_t;
151    pub fn f32_to_i32_r_minMag(_: float32_t, _: bool) -> int_fast32_t;
152    pub fn f32_to_i64_r_minMag(_: float32_t, _: bool) -> int_fast64_t;
153    pub fn f32_to_f16(_: float32_t) -> float16_t;
154    pub fn f32_to_f64(_: float32_t) -> float64_t;
155    pub fn f32_to_extF80(_: float32_t) -> extFloat80_t;
156    pub fn f32_to_f128(_: float32_t) -> float128_t;
157
158    pub fn f32_to_extF80M(_: float32_t, _: *mut extFloat80_t);
159    pub fn f32_to_f128M(_: float32_t, _: *mut float128_t);
160    pub fn f32_roundToInt(_: float32_t, _: uint_fast8_t, _: bool) -> float32_t;
161    pub fn f32_add(_: float32_t, _: float32_t) -> float32_t;
162    pub fn f32_sub(_: float32_t, _: float32_t) -> float32_t;
163    pub fn f32_mul(_: float32_t, _: float32_t) -> float32_t;
164    pub fn f32_mulAdd(_: float32_t, _: float32_t, _: float32_t) -> float32_t;
165    pub fn f32_div(_: float32_t, _: float32_t) -> float32_t;
166    pub fn f32_rem(_: float32_t, _: float32_t) -> float32_t;
167    pub fn f32_sqrt(_: float32_t) -> float32_t;
168    pub fn f32_eq(_: float32_t, _: float32_t) -> bool;
169    pub fn f32_le(_: float32_t, _: float32_t) -> bool;
170    pub fn f32_lt(_: float32_t, _: float32_t) -> bool;
171    pub fn f32_eq_signaling(_: float32_t, _: float32_t) -> bool;
172    pub fn f32_le_quiet(_: float32_t, _: float32_t) -> bool;
173    pub fn f32_lt_quiet(_: float32_t, _: float32_t) -> bool;
174    pub fn f32_isSignalingNaN(_: float32_t) -> bool;
175
176    pub fn f64_to_ui32(_: float64_t, _: uint_fast8_t, _: bool) -> uint_fast32_t;
177    pub fn f64_to_ui64(_: float64_t, _: uint_fast8_t, _: bool) -> uint_fast64_t;
178    pub fn f64_to_i32(_: float64_t, _: uint_fast8_t, _: bool) -> int_fast32_t;
179    pub fn f64_to_i64(_: float64_t, _: uint_fast8_t, _: bool) -> int_fast64_t;
180    pub fn f64_to_ui32_r_minMag(_: float64_t, _: bool) -> uint_fast32_t;
181    pub fn f64_to_ui64_r_minMag(_: float64_t, _: bool) -> uint_fast64_t;
182    pub fn f64_to_i32_r_minMag(_: float64_t, _: bool) -> int_fast32_t;
183    pub fn f64_to_i64_r_minMag(_: float64_t, _: bool) -> int_fast64_t;
184    pub fn f64_to_f16(_: float64_t) -> float16_t;
185    pub fn f64_to_f32(_: float64_t) -> float32_t;
186    pub fn f64_to_extF80(_: float64_t) -> extFloat80_t;
187    pub fn f64_to_f128(_: float64_t) -> float128_t;
188
189    pub fn f64_to_extF80M(_: float64_t, _: *mut extFloat80_t);
190    pub fn f64_to_f128M(_: float64_t, _: *mut float128_t);
191    pub fn f64_roundToInt(_: float64_t, _: uint_fast8_t, _: bool) -> float64_t;
192    pub fn f64_add(_: float64_t, _: float64_t) -> float64_t;
193    pub fn f64_sub(_: float64_t, _: float64_t) -> float64_t;
194    pub fn f64_mul(_: float64_t, _: float64_t) -> float64_t;
195    pub fn f64_mulAdd(_: float64_t, _: float64_t, _: float64_t) -> float64_t;
196    pub fn f64_div(_: float64_t, _: float64_t) -> float64_t;
197    pub fn f64_rem(_: float64_t, _: float64_t) -> float64_t;
198    pub fn f64_sqrt(_: float64_t) -> float64_t;
199    pub fn f64_eq(_: float64_t, _: float64_t) -> bool;
200    pub fn f64_le(_: float64_t, _: float64_t) -> bool;
201    pub fn f64_lt(_: float64_t, _: float64_t) -> bool;
202    pub fn f64_eq_signaling(_: float64_t, _: float64_t) -> bool;
203    pub fn f64_le_quiet(_: float64_t, _: float64_t) -> bool;
204    pub fn f64_lt_quiet(_: float64_t, _: float64_t) -> bool;
205    pub fn f64_isSignalingNaN(_: float64_t) -> bool;
206
207    pub fn extF80_to_ui32(_: extFloat80_t, _: uint_fast8_t, _: bool) -> uint_fast32_t;
208    pub fn extF80_to_ui64(_: extFloat80_t, _: uint_fast8_t, _: bool) -> uint_fast64_t;
209    pub fn extF80_to_i32(_: extFloat80_t, _: uint_fast8_t, _: bool) -> int_fast32_t;
210    pub fn extF80_to_i64(_: extFloat80_t, _: uint_fast8_t, _: bool) -> int_fast64_t;
211    pub fn extF80_to_ui32_r_minMag(_: extFloat80_t, _: bool) -> uint_fast32_t;
212    pub fn extF80_to_ui64_r_minMag(_: extFloat80_t, _: bool) -> uint_fast64_t;
213    pub fn extF80_to_i32_r_minMag(_: extFloat80_t, _: bool) -> int_fast32_t;
214    pub fn extF80_to_i64_r_minMag(_: extFloat80_t, _: bool) -> int_fast64_t;
215    pub fn extF80_to_f16(_: extFloat80_t) -> float16_t;
216    pub fn extF80_to_f32(_: extFloat80_t) -> float32_t;
217    pub fn extF80_to_f64(_: extFloat80_t) -> float64_t;
218    pub fn extF80_to_f128(_: extFloat80_t) -> float128_t;
219    pub fn extF80_roundToInt(_: extFloat80_t, _: uint_fast8_t, _: bool) -> extFloat80_t;
220    pub fn extF80_add(_: extFloat80_t, _: extFloat80_t) -> extFloat80_t;
221    pub fn extF80_sub(_: extFloat80_t, _: extFloat80_t) -> extFloat80_t;
222    pub fn extF80_mul(_: extFloat80_t, _: extFloat80_t) -> extFloat80_t;
223    pub fn extF80_div(_: extFloat80_t, _: extFloat80_t) -> extFloat80_t;
224    pub fn extF80_rem(_: extFloat80_t, _: extFloat80_t) -> extFloat80_t;
225    pub fn extF80_sqrt(_: extFloat80_t) -> extFloat80_t;
226    pub fn extF80_eq(_: extFloat80_t, _: extFloat80_t) -> bool;
227    pub fn extF80_le(_: extFloat80_t, _: extFloat80_t) -> bool;
228    pub fn extF80_lt(_: extFloat80_t, _: extFloat80_t) -> bool;
229    pub fn extF80_eq_signaling(_: extFloat80_t, _: extFloat80_t) -> bool;
230    pub fn extF80_le_quiet(_: extFloat80_t, _: extFloat80_t) -> bool;
231    pub fn extF80_lt_quiet(_: extFloat80_t, _: extFloat80_t) -> bool;
232    pub fn extF80_isSignalingNaN(_: extFloat80_t) -> bool;
233
234    pub fn extF80M_to_ui32(_: *const extFloat80_t, _: uint_fast8_t, _: bool) -> uint_fast32_t;
235    pub fn extF80M_to_ui64(_: *const extFloat80_t, _: uint_fast8_t, _: bool) -> uint_fast64_t;
236    pub fn extF80M_to_i32(_: *const extFloat80_t, _: uint_fast8_t, _: bool) -> int_fast32_t;
237    pub fn extF80M_to_i64(_: *const extFloat80_t, _: uint_fast8_t, _: bool) -> int_fast64_t;
238    pub fn extF80M_to_ui32_r_minMag(_: *const extFloat80_t, _: bool) -> uint_fast32_t;
239    pub fn extF80M_to_ui64_r_minMag(_: *const extFloat80_t, _: bool) -> uint_fast64_t;
240    pub fn extF80M_to_i32_r_minMag(_: *const extFloat80_t, _: bool) -> int_fast32_t;
241    pub fn extF80M_to_i64_r_minMag(_: *const extFloat80_t, _: bool) -> int_fast64_t;
242    pub fn extF80M_to_f16(_: *const extFloat80_t) -> float16_t;
243    pub fn extF80M_to_f32(_: *const extFloat80_t) -> float32_t;
244    pub fn extF80M_to_f64(_: *const extFloat80_t) -> float64_t;
245    pub fn extF80M_to_f128M(_: *const extFloat80_t, _: *mut float128_t);
246    pub fn extF80M_roundToInt(
247        _: *const extFloat80_t,
248        _: uint_fast8_t,
249        _: bool,
250        _: *mut extFloat80_t,
251    );
252    pub fn extF80M_add(_: *const extFloat80_t, _: *const extFloat80_t, _: *mut extFloat80_t);
253    pub fn extF80M_sub(_: *const extFloat80_t, _: *const extFloat80_t, _: *mut extFloat80_t);
254    pub fn extF80M_mul(_: *const extFloat80_t, _: *const extFloat80_t, _: *mut extFloat80_t);
255    pub fn extF80M_div(_: *const extFloat80_t, _: *const extFloat80_t, _: *mut extFloat80_t);
256    pub fn extF80M_rem(_: *const extFloat80_t, _: *const extFloat80_t, _: *mut extFloat80_t);
257    pub fn extF80M_sqrt(_: *const extFloat80_t, _: *mut extFloat80_t);
258    pub fn extF80M_eq(_: *const extFloat80_t, _: *const extFloat80_t) -> bool;
259    pub fn extF80M_le(_: *const extFloat80_t, _: *const extFloat80_t) -> bool;
260    pub fn extF80M_lt(_: *const extFloat80_t, _: *const extFloat80_t) -> bool;
261    pub fn extF80M_eq_signaling(_: *const extFloat80_t, _: *const extFloat80_t) -> bool;
262    pub fn extF80M_le_quiet(_: *const extFloat80_t, _: *const extFloat80_t) -> bool;
263    pub fn extF80M_lt_quiet(_: *const extFloat80_t, _: *const extFloat80_t) -> bool;
264    pub fn extF80M_isSignalingNaN(_: *const extFloat80_t) -> bool;
265
266    pub fn f128_to_ui32(_: float128_t, _: uint_fast8_t, _: bool) -> uint_fast32_t;
267    pub fn f128_to_ui64(_: float128_t, _: uint_fast8_t, _: bool) -> uint_fast64_t;
268    pub fn f128_to_i32(_: float128_t, _: uint_fast8_t, _: bool) -> int_fast32_t;
269    pub fn f128_to_i64(_: float128_t, _: uint_fast8_t, _: bool) -> int_fast64_t;
270    pub fn f128_to_ui32_r_minMag(_: float128_t, _: bool) -> uint_fast32_t;
271    pub fn f128_to_ui64_r_minMag(_: float128_t, _: bool) -> uint_fast64_t;
272    pub fn f128_to_i32_r_minMag(_: float128_t, _: bool) -> int_fast32_t;
273    pub fn f128_to_i64_r_minMag(_: float128_t, _: bool) -> int_fast64_t;
274    pub fn f128_to_f16(_: float128_t) -> float16_t;
275    pub fn f128_to_f32(_: float128_t) -> float32_t;
276    pub fn f128_to_f64(_: float128_t) -> float64_t;
277    pub fn f128_to_extF80(_: float128_t) -> extFloat80_t;
278    pub fn f128_roundToInt(_: float128_t, _: uint_fast8_t, _: bool) -> float128_t;
279    pub fn f128_add(_: float128_t, _: float128_t) -> float128_t;
280    pub fn f128_sub(_: float128_t, _: float128_t) -> float128_t;
281    pub fn f128_mul(_: float128_t, _: float128_t) -> float128_t;
282    pub fn f128_mulAdd(_: float128_t, _: float128_t, _: float128_t) -> float128_t;
283    pub fn f128_div(_: float128_t, _: float128_t) -> float128_t;
284    pub fn f128_rem(_: float128_t, _: float128_t) -> float128_t;
285    pub fn f128_sqrt(_: float128_t) -> float128_t;
286    pub fn f128_eq(_: float128_t, _: float128_t) -> bool;
287    pub fn f128_le(_: float128_t, _: float128_t) -> bool;
288    pub fn f128_lt(_: float128_t, _: float128_t) -> bool;
289    pub fn f128_eq_signaling(_: float128_t, _: float128_t) -> bool;
290    pub fn f128_le_quiet(_: float128_t, _: float128_t) -> bool;
291    pub fn f128_lt_quiet(_: float128_t, _: float128_t) -> bool;
292    pub fn f128_isSignalingNaN(_: float128_t) -> bool;
293
294    pub fn f128M_to_ui32(_: *const float128_t, _: uint_fast8_t, _: bool) -> uint_fast32_t;
295    pub fn f128M_to_ui64(_: *const float128_t, _: uint_fast8_t, _: bool) -> uint_fast64_t;
296    pub fn f128M_to_i32(_: *const float128_t, _: uint_fast8_t, _: bool) -> int_fast32_t;
297    pub fn f128M_to_i64(_: *const float128_t, _: uint_fast8_t, _: bool) -> int_fast64_t;
298    pub fn f128M_to_ui32_r_minMag(_: *const float128_t, _: bool) -> uint_fast32_t;
299    pub fn f128M_to_ui64_r_minMag(_: *const float128_t, _: bool) -> uint_fast64_t;
300    pub fn f128M_to_i32_r_minMag(_: *const float128_t, _: bool) -> int_fast32_t;
301    pub fn f128M_to_i64_r_minMag(_: *const float128_t, _: bool) -> int_fast64_t;
302    pub fn f128M_to_f16(_: *const float128_t) -> float16_t;
303    pub fn f128M_to_f32(_: *const float128_t) -> float32_t;
304    pub fn f128M_to_f64(_: *const float128_t) -> float64_t;
305    pub fn f128M_to_extF80M(_: *const float128_t, _: *mut extFloat80_t);
306    pub fn f128M_roundToInt(_: *const float128_t, _: uint_fast8_t, _: bool, _: *mut float128_t);
307    pub fn f128M_add(_: *const float128_t, _: *const float128_t, _: *mut float128_t);
308    pub fn f128M_sub(_: *const float128_t, _: *const float128_t, _: *mut float128_t);
309    pub fn f128M_mul(_: *const float128_t, _: *const float128_t, _: *mut float128_t);
310    pub fn f128M_mulAdd(
311        _: *const float128_t,
312        _: *const float128_t,
313        _: *const float128_t,
314        _: *mut float128_t,
315    );
316    pub fn f128M_div(_: *const float128_t, _: *const float128_t, _: *mut float128_t);
317    pub fn f128M_rem(_: *const float128_t, _: *const float128_t, _: *mut float128_t);
318    pub fn f128M_sqrt(_: *const float128_t, _: *mut float128_t);
319    pub fn f128M_eq(_: *const float128_t, _: *const float128_t) -> bool;
320    pub fn f128M_le(_: *const float128_t, _: *const float128_t) -> bool;
321    pub fn f128M_lt(_: *const float128_t, _: *const float128_t) -> bool;
322    pub fn f128M_eq_signaling(_: *const float128_t, _: *const float128_t) -> bool;
323    pub fn f128M_le_quiet(_: *const float128_t, _: *const float128_t) -> bool;
324    pub fn f128M_lt_quiet(_: *const float128_t, _: *const float128_t) -> bool;
325    pub fn f128M_isSignalingNaN(_: *const float128_t) -> bool;
326}
327
328#[cfg(test)]
329mod tests {
330    use super::*;
331
332    #[test]
333    fn test_linking() {
334        macro_rules! link_functions {
335            ($($name:ident,)*) => {
336                $(println!(concat!(stringify!($name), ": {:#X}"), $name as usize);)*
337            };
338        }
339        link_functions!(
340            softfloat_detectTininess_read_helper,
341            softfloat_detectTininess_write_helper,
342            softfloat_roundingMode_read_helper,
343            softfloat_roundingMode_write_helper,
344            softfloat_exceptionFlags_read_helper,
345            softfloat_exceptionFlags_write_helper,
346            extF80_roundingPrecision_read_helper,
347            extF80_roundingPrecision_write_helper,
348            softfloat_raiseFlags,
349            ui32_to_f16,
350            ui32_to_f32,
351            ui32_to_f64,
352            ui32_to_extF80,
353            ui32_to_f128,
354            ui32_to_extF80M,
355            ui32_to_f128M,
356            ui64_to_f16,
357            ui64_to_f32,
358            ui64_to_f64,
359            ui64_to_extF80,
360            ui64_to_f128,
361            ui64_to_extF80M,
362            ui64_to_f128M,
363            i32_to_f16,
364            i32_to_f32,
365            i32_to_f64,
366            i32_to_extF80,
367            i32_to_f128,
368            i32_to_extF80M,
369            i32_to_f128M,
370            i64_to_f16,
371            i64_to_f32,
372            i64_to_f64,
373            i64_to_extF80,
374            i64_to_f128,
375            i64_to_extF80M,
376            i64_to_f128M,
377            f16_to_ui32,
378            f16_to_ui64,
379            f16_to_i32,
380            f16_to_i64,
381            f16_to_ui32_r_minMag,
382            f16_to_ui64_r_minMag,
383            f16_to_i32_r_minMag,
384            f16_to_i64_r_minMag,
385            f16_to_f32,
386            f16_to_f64,
387            f16_to_extF80,
388            f16_to_f128,
389            f16_to_extF80M,
390            f16_to_f128M,
391            f16_roundToInt,
392            f16_add,
393            f16_sub,
394            f16_mul,
395            f16_mulAdd,
396            f16_div,
397            f16_rem,
398            f16_sqrt,
399            f16_eq,
400            f16_le,
401            f16_lt,
402            f16_eq_signaling,
403            f16_le_quiet,
404            f16_lt_quiet,
405            f16_isSignalingNaN,
406            f32_to_ui32,
407            f32_to_ui64,
408            f32_to_i32,
409            f32_to_i64,
410            f32_to_ui32_r_minMag,
411            f32_to_ui64_r_minMag,
412            f32_to_i32_r_minMag,
413            f32_to_i64_r_minMag,
414            f32_to_f16,
415            f32_to_f64,
416            f32_to_extF80,
417            f32_to_f128,
418            f32_to_extF80M,
419            f32_to_f128M,
420            f32_roundToInt,
421            f32_add,
422            f32_sub,
423            f32_mul,
424            f32_mulAdd,
425            f32_div,
426            f32_rem,
427            f32_sqrt,
428            f32_eq,
429            f32_le,
430            f32_lt,
431            f32_eq_signaling,
432            f32_le_quiet,
433            f32_lt_quiet,
434            f32_isSignalingNaN,
435            f64_to_ui32,
436            f64_to_ui64,
437            f64_to_i32,
438            f64_to_i64,
439            f64_to_ui32_r_minMag,
440            f64_to_ui64_r_minMag,
441            f64_to_i32_r_minMag,
442            f64_to_i64_r_minMag,
443            f64_to_f16,
444            f64_to_f32,
445            f64_to_extF80,
446            f64_to_f128,
447            f64_to_extF80M,
448            f64_to_f128M,
449            f64_roundToInt,
450            f64_add,
451            f64_sub,
452            f64_mul,
453            f64_mulAdd,
454            f64_div,
455            f64_rem,
456            f64_sqrt,
457            f64_eq,
458            f64_le,
459            f64_lt,
460            f64_eq_signaling,
461            f64_le_quiet,
462            f64_lt_quiet,
463            f64_isSignalingNaN,
464            extF80_to_ui32,
465            extF80_to_ui64,
466            extF80_to_i32,
467            extF80_to_i64,
468            extF80_to_ui32_r_minMag,
469            extF80_to_ui64_r_minMag,
470            extF80_to_i32_r_minMag,
471            extF80_to_i64_r_minMag,
472            extF80_to_f16,
473            extF80_to_f32,
474            extF80_to_f64,
475            extF80_to_f128,
476            extF80_roundToInt,
477            extF80_add,
478            extF80_sub,
479            extF80_mul,
480            extF80_div,
481            extF80_rem,
482            extF80_sqrt,
483            extF80_eq,
484            extF80_le,
485            extF80_lt,
486            extF80_eq_signaling,
487            extF80_le_quiet,
488            extF80_lt_quiet,
489            extF80_isSignalingNaN,
490            extF80M_to_ui32,
491            extF80M_to_ui64,
492            extF80M_to_i32,
493            extF80M_to_i64,
494            extF80M_to_ui32_r_minMag,
495            extF80M_to_ui64_r_minMag,
496            extF80M_to_i32_r_minMag,
497            extF80M_to_i64_r_minMag,
498            extF80M_to_f16,
499            extF80M_to_f32,
500            extF80M_to_f64,
501            extF80M_to_f128M,
502            extF80M_roundToInt,
503            extF80M_add,
504            extF80M_sub,
505            extF80M_mul,
506            extF80M_div,
507            extF80M_rem,
508            extF80M_sqrt,
509            extF80M_eq,
510            extF80M_le,
511            extF80M_lt,
512            extF80M_eq_signaling,
513            extF80M_le_quiet,
514            extF80M_lt_quiet,
515            extF80M_isSignalingNaN,
516            f128_to_ui32,
517            f128_to_ui64,
518            f128_to_i32,
519            f128_to_i64,
520            f128_to_ui32_r_minMag,
521            f128_to_ui64_r_minMag,
522            f128_to_i32_r_minMag,
523            f128_to_i64_r_minMag,
524            f128_to_f16,
525            f128_to_f32,
526            f128_to_f64,
527            f128_to_extF80,
528            f128_roundToInt,
529            f128_add,
530            f128_sub,
531            f128_mul,
532            f128_mulAdd,
533            f128_div,
534            f128_rem,
535            f128_sqrt,
536            f128_eq,
537            f128_le,
538            f128_lt,
539            f128_eq_signaling,
540            f128_le_quiet,
541            f128_lt_quiet,
542            f128_isSignalingNaN,
543            f128M_to_ui32,
544            f128M_to_ui64,
545            f128M_to_i32,
546            f128M_to_i64,
547            f128M_to_ui32_r_minMag,
548            f128M_to_ui64_r_minMag,
549            f128M_to_i32_r_minMag,
550            f128M_to_i64_r_minMag,
551            f128M_to_f16,
552            f128M_to_f32,
553            f128M_to_f64,
554            f128M_to_extF80M,
555            f128M_roundToInt,
556            f128M_add,
557            f128M_sub,
558            f128M_mul,
559            f128M_mulAdd,
560            f128M_div,
561            f128M_rem,
562            f128M_sqrt,
563            f128M_eq,
564            f128M_le,
565            f128M_lt,
566            f128M_eq_signaling,
567            f128M_le_quiet,
568            f128M_lt_quiet,
569            f128M_isSignalingNaN,
570        );
571    }
572}