@@ -262,14 +262,18 @@ mod intrinsics {
262262
263263 /* i32 operations */
264264
265+ // floatsisf
266+ pub fn aeabi_i2f ( x : i32 ) -> f32 {
267+ x as f32
268+ }
269+
265270 // floatsidf
266271 pub fn aeabi_i2d ( x : i32 ) -> f64 {
267272 x as f64
268273 }
269274
270- // floatsisf
271- pub fn aeabi_i2f ( x : i32 ) -> f32 {
272- x as f32
275+ pub fn floatsitf ( x : i32 ) -> f128 {
276+ x as f128
273277 }
274278
275279 pub fn aeabi_idiv ( a : i32 , b : i32 ) -> i32 {
@@ -292,6 +296,10 @@ mod intrinsics {
292296 x as f64
293297 }
294298
299+ pub fn floatditf ( x : i64 ) -> f128 {
300+ x as f128
301+ }
302+
295303 pub fn mulodi4 ( a : i64 , b : i64 ) -> i64 {
296304 a * b
297305 }
@@ -312,6 +320,18 @@ mod intrinsics {
312320
313321 /* i128 operations */
314322
323+ pub fn floattisf ( x : i128 ) -> f32 {
324+ x as f32
325+ }
326+
327+ pub fn floattidf ( x : i128 ) -> f64 {
328+ x as f64
329+ }
330+
331+ pub fn floattitf ( x : i128 ) -> f128 {
332+ x as f128
333+ }
334+
315335 pub fn lshrti3 ( a : i128 , b : usize ) -> i128 {
316336 a >> b
317337 }
@@ -326,14 +346,18 @@ mod intrinsics {
326346
327347 /* u32 operations */
328348
349+ // floatunsisf
350+ pub fn aeabi_ui2f ( x : u32 ) -> f32 {
351+ x as f32
352+ }
353+
329354 // floatunsidf
330355 pub fn aeabi_ui2d ( x : u32 ) -> f64 {
331356 x as f64
332357 }
333358
334- // floatunsisf
335- pub fn aeabi_ui2f ( x : u32 ) -> f32 {
336- x as f32
359+ pub fn floatunsitf ( x : u32 ) -> f128 {
360+ x as f128
337361 }
338362
339363 pub fn aeabi_uidiv ( a : u32 , b : u32 ) -> u32 {
@@ -356,6 +380,10 @@ mod intrinsics {
356380 x as f64
357381 }
358382
383+ pub fn floatunditf ( x : u64 ) -> f128 {
384+ x as f128
385+ }
386+
359387 // udivdi3
360388 pub fn aeabi_uldivmod ( a : u64 , b : u64 ) -> u64 {
361389 a * b
@@ -367,6 +395,18 @@ mod intrinsics {
367395
368396 /* u128 operations */
369397
398+ pub fn floatuntisf ( x : u128 ) -> f32 {
399+ x as f32
400+ }
401+
402+ pub fn floatuntidf ( x : u128 ) -> f64 {
403+ x as f64
404+ }
405+
406+ pub fn floatuntitf ( x : u128 ) -> f128 {
407+ x as f128
408+ }
409+
370410 pub fn muloti4 ( a : u128 , b : u128 ) -> Option < u128 > {
371411 a. checked_mul ( b)
372412 }
@@ -463,6 +503,16 @@ fn run() {
463503 bb ( fixunstfsi ( bb ( 2. ) ) ) ;
464504 #[ cfg( not( any( target_arch = "powerpc" , target_arch = "powerpc64" ) ) ) ]
465505 bb ( fixunstfti ( bb ( 2. ) ) ) ;
506+ bb ( floatditf ( bb ( 2 ) ) ) ;
507+ bb ( floatsitf ( bb ( 2 ) ) ) ;
508+ bb ( floattidf ( bb ( 2 ) ) ) ;
509+ bb ( floattisf ( bb ( 2 ) ) ) ;
510+ bb ( floattitf ( bb ( 2 ) ) ) ;
511+ bb ( floatunditf ( bb ( 2 ) ) ) ;
512+ bb ( floatunsitf ( bb ( 2 ) ) ) ;
513+ bb ( floatuntidf ( bb ( 2 ) ) ) ;
514+ bb ( floatuntisf ( bb ( 2 ) ) ) ;
515+ bb ( floatuntitf ( bb ( 2 ) ) ) ;
466516 bb ( gttf ( bb ( 2. ) , bb ( 2. ) ) ) ;
467517 bb ( lshrti3 ( bb ( 2 ) , bb ( 2 ) ) ) ;
468518 bb ( lttf ( bb ( 2. ) , bb ( 2. ) ) ) ;
0 commit comments