@@ -46,15 +46,49 @@ builtin_functions! {
4646 fn __rust_u128_mulo( a: u128 , b: u128 , oflow: & mut i32 ) -> u128 ;
4747 fn __rust_i128_mulo( a: i128 , b: i128 , oflow: & mut i32 ) -> i128 ;
4848
49- // floats
49+ // integer -> float
5050 fn __floattisf( i: i128 ) -> f32 ;
5151 fn __floattidf( i: i128 ) -> f64 ;
5252 fn __floatuntisf( i: u128 ) -> f32 ;
5353 fn __floatuntidf( i: u128 ) -> f64 ;
54+ // float -> integer
5455 fn __fixsfti( f: f32 ) -> i128 ;
5556 fn __fixdfti( f: f64 ) -> i128 ;
5657 fn __fixunssfti( f: f32 ) -> u128 ;
5758 fn __fixunsdfti( f: f64 ) -> u128 ;
59+ // float binops
60+ fn fmodf( a: f32 , b: f32 ) -> f32 ;
61+ fn fmod( a: f64 , b: f64 ) -> f64 ;
62+ // Cranelift float libcalls
63+ fn fmaf( a: f32 , b: f32 , c: f32 ) -> f32 ;
64+ fn fma( a: f64 , b: f64 , c: f64 ) -> f64 ;
65+ fn floorf( f: f32 ) -> f32 ;
66+ fn floor( f: f64 ) -> f64 ;
67+ fn ceilf( f: f32 ) -> f32 ;
68+ fn ceil( f: f64 ) -> f64 ;
69+ fn truncf( f: f32 ) -> f32 ;
70+ fn trunc( f: f64 ) -> f64 ;
71+ fn nearbyintf( f: f32 ) -> f32 ;
72+ fn nearbyint( f: f64 ) -> f64 ;
73+ // float intrinsics
74+ fn __powisf2( a: f32 , b: i32 ) -> f32 ;
75+ fn __powidf2( a: f64 , b: i32 ) -> f64 ;
76+ fn powf( a: f32 , b: f32 ) -> f32 ;
77+ fn pow( a: f64 , b: f64 ) -> f64 ;
78+ fn expf( f: f32 ) -> f32 ;
79+ fn exp( f: f64 ) -> f64 ;
80+ fn exp2f( f: f32 ) -> f32 ;
81+ fn exp2( f: f64 ) -> f64 ;
82+ fn logf( f: f32 ) -> f32 ;
83+ fn log( f: f64 ) -> f64 ;
84+ fn log2f( f: f32 ) -> f32 ;
85+ fn log2( f: f64 ) -> f64 ;
86+ fn log10f( f: f32 ) -> f32 ;
87+ fn log10( f: f64 ) -> f64 ;
88+ fn sinf( f: f32 ) -> f32 ;
89+ fn sin( f: f64 ) -> f64 ;
90+ fn cosf( f: f32 ) -> f32 ;
91+ fn cos( f: f64 ) -> f64 ;
5892
5993 // allocator
6094 // NOTE: These need to be mentioned here despite not being part of compiler_builtins because
0 commit comments