Skip to content

Commit

Permalink
Merge pull request #234 from ketsuban/master
Browse files Browse the repository at this point in the history
Add __floatdisf and __floatundisf intrinsics
  • Loading branch information
alexcrichton committed Apr 5, 2018
2 parents 2a2f6d9 + e3dda36 commit cb04a07
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 4 deletions.
4 changes: 2 additions & 2 deletions README.md
Expand Up @@ -156,11 +156,11 @@ features = ["c"]
- [x] fixunssfdi.c
- [x] fixunssfsi.c
- [x] floatdidf.c
- [ ] floatdisf.c
- [x] floatdisf.c
- [x] floatsidf.c
- [x] floatsisf.c
- [x] floatundidf.c
- [ ] floatundisf.c
- [x] floatundisf.c
- [x] floatunsidf.c
- [x] floatunsisf.c
- [ ] i386/ashldi3.S
Expand Down
2 changes: 0 additions & 2 deletions build.rs
Expand Up @@ -174,8 +174,6 @@ mod c {
"divsc3.c",
"divxc3.c",
"extendhfsf2.c",
"floatdisf.c",
"floatundisf.c",
"int_util.c",
"muldc3.c",
"mulsc3.c",
Expand Down
20 changes: 20 additions & 0 deletions src/float/conv.rs
Expand Up @@ -80,6 +80,18 @@ intrinsics! {
int_to_float!(i, i32, f64)
}

#[use_c_shim_if(all(target_arch = "x86", not(target_env = "msvc")))]
#[arm_aeabi_alias = __aeabi_l2f]
pub extern "C" fn __floatdisf(i: i64) -> f32 {
// On x86_64 LLVM will use native instructions for this conversion, we
// can just do it directly
if cfg!(target_arch = "x86_64") {
i as f32
} else {
int_to_float!(i, i64, f32)
}
}

#[use_c_shim_if(all(target_arch = "x86", not(target_env = "msvc")))]
#[arm_aeabi_alias = __aeabi_l2d]
pub extern "C" fn __floatdidf(i: i64) -> f64 {
Expand Down Expand Up @@ -112,6 +124,14 @@ intrinsics! {
int_to_float!(i, u32, f64)
}

#[use_c_shim_if(all(not(target_env = "msvc"),
any(target_arch = "x86",
all(not(windows), target_arch = "x86_64"))))]
#[arm_aeabi_alias = __aeabi_ul2f]
pub extern "C" fn __floatundisf(i: u64) -> f32 {
int_to_float!(i, u64, f32)
}

#[use_c_shim_if(all(not(target_env = "msvc"),
any(target_arch = "x86",
all(not(windows), target_arch = "x86_64"))))]
Expand Down

0 comments on commit cb04a07

Please sign in to comment.