@@ -46,15 +46,49 @@ builtin_functions! {
46
46
fn __rust_u128_mulo( a: u128 , b: u128 , oflow: & mut i32 ) -> u128 ;
47
47
fn __rust_i128_mulo( a: i128 , b: i128 , oflow: & mut i32 ) -> i128 ;
48
48
49
- // floats
49
+ // integer -> float
50
50
fn __floattisf( i: i128 ) -> f32 ;
51
51
fn __floattidf( i: i128 ) -> f64 ;
52
52
fn __floatuntisf( i: u128 ) -> f32 ;
53
53
fn __floatuntidf( i: u128 ) -> f64 ;
54
+ // float -> integer
54
55
fn __fixsfti( f: f32 ) -> i128 ;
55
56
fn __fixdfti( f: f64 ) -> i128 ;
56
57
fn __fixunssfti( f: f32 ) -> u128 ;
57
58
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 ;
58
92
59
93
// allocator
60
94
// NOTE: These need to be mentioned here despite not being part of compiler_builtins because
0 commit comments