Merge pull request #285 from alexcrichton/use-optimized
Revert "Use the Rust implementation of udivsi3 on ARM"
This commit is contained in:
commit
45caccf3bf
17
build.rs
17
build.rs
|
@ -289,6 +289,7 @@ mod c {
|
||||||
"arm/clzdi2.S",
|
"arm/clzdi2.S",
|
||||||
"arm/clzsi2.S",
|
"arm/clzsi2.S",
|
||||||
"arm/divmodsi4.S",
|
"arm/divmodsi4.S",
|
||||||
|
"arm/divsi3.S",
|
||||||
"arm/modsi3.S",
|
"arm/modsi3.S",
|
||||||
"arm/switch16.S",
|
"arm/switch16.S",
|
||||||
"arm/switch32.S",
|
"arm/switch32.S",
|
||||||
|
@ -296,20 +297,8 @@ mod c {
|
||||||
"arm/switchu8.S",
|
"arm/switchu8.S",
|
||||||
"arm/sync_synchronize.S",
|
"arm/sync_synchronize.S",
|
||||||
"arm/udivmodsi4.S",
|
"arm/udivmodsi4.S",
|
||||||
|
"arm/udivsi3.S",
|
||||||
"arm/umodsi3.S",
|
"arm/umodsi3.S",
|
||||||
|
|
||||||
// Exclude these two files for now even though we haven't
|
|
||||||
// translated their implementation into Rust yet (#173).
|
|
||||||
// They appear... buggy? The `udivsi3` implementation was
|
|
||||||
// the one that seemed buggy, but the `divsi3` file
|
|
||||||
// references a symbol from `udivsi3` so we compile them
|
|
||||||
// both with the Rust versions.
|
|
||||||
//
|
|
||||||
// Note that if these are added back they should be removed
|
|
||||||
// from thumbv6m below.
|
|
||||||
//
|
|
||||||
// "arm/divsi3.S",
|
|
||||||
// "arm/udivsi3.S",
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -427,12 +416,14 @@ mod c {
|
||||||
"clzdi2",
|
"clzdi2",
|
||||||
"clzsi2",
|
"clzsi2",
|
||||||
"divmodsi4",
|
"divmodsi4",
|
||||||
|
"divsi3",
|
||||||
"modsi3",
|
"modsi3",
|
||||||
"switch16",
|
"switch16",
|
||||||
"switch32",
|
"switch32",
|
||||||
"switch8",
|
"switch8",
|
||||||
"switchu8",
|
"switchu8",
|
||||||
"udivmodsi4",
|
"udivmodsi4",
|
||||||
|
"udivsi3",
|
||||||
"umodsi3",
|
"umodsi3",
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
|
@ -24,6 +24,7 @@ run() {
|
||||||
-v `pwd`:/checkout:ro \
|
-v `pwd`:/checkout:ro \
|
||||||
-v `rustc --print sysroot`:/rust:ro \
|
-v `rustc --print sysroot`:/rust:ro \
|
||||||
-w /checkout \
|
-w /checkout \
|
||||||
|
--init \
|
||||||
$target \
|
$target \
|
||||||
sh -c "HOME=/tmp PATH=\$PATH:/rust/bin ci/run.sh $target"
|
sh -c "HOME=/tmp PATH=\$PATH:/rust/bin ci/run.sh $target"
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,6 +57,7 @@ impl Divmod for i32 {}
|
||||||
impl Divmod for i64 {}
|
impl Divmod for i64 {}
|
||||||
|
|
||||||
intrinsics! {
|
intrinsics! {
|
||||||
|
#[use_c_shim_if(all(target_arch = "arm", not(target_os = "ios"), not(thumbv6m)))]
|
||||||
#[arm_aeabi_alias = __aeabi_idiv]
|
#[arm_aeabi_alias = __aeabi_idiv]
|
||||||
pub extern "C" fn __divsi3(a: i32, b: i32) -> i32 {
|
pub extern "C" fn __divsi3(a: i32, b: i32) -> i32 {
|
||||||
a.div(b)
|
a.div(b)
|
||||||
|
|
|
@ -152,6 +152,9 @@ macro_rules! udivmod_inner {
|
||||||
}
|
}
|
||||||
|
|
||||||
intrinsics! {
|
intrinsics! {
|
||||||
|
#[use_c_shim_if(all(target_arch = "arm",
|
||||||
|
not(target_os = "ios"),
|
||||||
|
not(thumbv6m)))]
|
||||||
#[arm_aeabi_alias = __aeabi_uidiv]
|
#[arm_aeabi_alias = __aeabi_uidiv]
|
||||||
/// Returns `n / d`
|
/// Returns `n / d`
|
||||||
pub extern "C" fn __udivsi3(n: u32, d: u32) -> u32 {
|
pub extern "C" fn __udivsi3(n: u32, d: u32) -> u32 {
|
||||||
|
|
Loading…
Reference in New Issue