1#![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}