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