i128 test: transmute intrinsic output before comparing
on Windows, these intrinsics return a U64x2 type because of ABI requirements
This commit is contained in:
parent
aa553fe113
commit
46085a2313
86
build.rs
86
build.rs
|
@ -189,6 +189,7 @@ use core::mem;
|
|||
target_os = "linux",
|
||||
test)))]
|
||||
use std::mem;
|
||||
|
||||
use compiler_builtins::float::add::__adddf3;
|
||||
|
||||
fn mk_f64(x: u64) -> f64 {
|
||||
|
@ -828,11 +829,22 @@ fn divsi3() {
|
|||
}
|
||||
|
||||
fn prologue() -> &'static str {
|
||||
"
|
||||
r#"
|
||||
#[cfg(all(target_arch = "arm",
|
||||
not(any(target_env = "gnu", target_env = "musl")),
|
||||
target_os = "linux",
|
||||
test))]
|
||||
use core::mem;
|
||||
#[cfg(not(all(target_arch = "arm",
|
||||
not(any(target_env = "gnu", target_env = "musl")),
|
||||
target_os = "linux",
|
||||
test)))]
|
||||
use std::mem;
|
||||
|
||||
use compiler_builtins::int::sdiv::__divti3;
|
||||
|
||||
static TEST_CASES: &[((i128, i128), i128)] = &[
|
||||
"
|
||||
"#
|
||||
}
|
||||
|
||||
fn epilogue() -> &'static str {
|
||||
|
@ -842,7 +854,7 @@ static TEST_CASES: &[((i128, i128), i128)] = &[
|
|||
#[test]
|
||||
fn divti3() {
|
||||
for &((a, b), c) in TEST_CASES {
|
||||
let c_ = __divti3(a, b);
|
||||
let c_: i128 = unsafe { mem::transmute(__divti3(a, b)) };
|
||||
assert_eq!(((a, b), c), ((a, b), c_));
|
||||
}
|
||||
}
|
||||
|
@ -1895,11 +1907,22 @@ fn modsi3() {
|
|||
}
|
||||
|
||||
fn prologue() -> &'static str {
|
||||
"
|
||||
r#"
|
||||
#[cfg(all(target_arch = "arm",
|
||||
not(any(target_env = "gnu", target_env = "musl")),
|
||||
target_os = "linux",
|
||||
test))]
|
||||
use core::mem;
|
||||
#[cfg(not(all(target_arch = "arm",
|
||||
not(any(target_env = "gnu", target_env = "musl")),
|
||||
target_os = "linux",
|
||||
test)))]
|
||||
use std::mem;
|
||||
|
||||
use compiler_builtins::int::sdiv::__modti3;
|
||||
|
||||
static TEST_CASES: &[((i128, i128), i128)] = &[
|
||||
"
|
||||
"#
|
||||
}
|
||||
|
||||
fn epilogue() -> &'static str {
|
||||
|
@ -1909,7 +1932,7 @@ static TEST_CASES: &[((i128, i128), i128)] = &[
|
|||
#[test]
|
||||
fn modti3() {
|
||||
for &((a, b), c) in TEST_CASES {
|
||||
let c_ = __modti3(a, b);
|
||||
let c_: i128 = unsafe { mem::transmute(__modti3(a, b)) };
|
||||
assert_eq!(((a, b), c), ((a, b), c_));
|
||||
}
|
||||
}
|
||||
|
@ -2913,11 +2936,22 @@ fn udivmodsi4() {
|
|||
}
|
||||
|
||||
fn prologue() -> &'static str {
|
||||
"
|
||||
r#"
|
||||
#[cfg(all(target_arch = "arm",
|
||||
not(any(target_env = "gnu", target_env = "musl")),
|
||||
target_os = "linux",
|
||||
test))]
|
||||
use core::mem;
|
||||
#[cfg(not(all(target_arch = "arm",
|
||||
not(any(target_env = "gnu", target_env = "musl")),
|
||||
target_os = "linux",
|
||||
test)))]
|
||||
use std::mem;
|
||||
|
||||
use compiler_builtins::int::udiv::__udivmodti4;
|
||||
|
||||
static TEST_CASES: &[((u128, u128), (u128, u128))] = &[
|
||||
"
|
||||
"#
|
||||
}
|
||||
|
||||
fn epilogue() -> &'static str {
|
||||
|
@ -2928,7 +2962,7 @@ static TEST_CASES: &[((u128, u128), (u128, u128))] = &[
|
|||
fn udivmodti4() {
|
||||
for &((a, b), (c, rem)) in TEST_CASES {
|
||||
let mut rem_ = 0;
|
||||
let c_ = __udivmodti4(a, b, Some(&mut rem_));
|
||||
let c_: u128 = unsafe { mem::transmute(__udivmodti4(a, b, Some(&mut rem_))) };
|
||||
assert_eq!(((a, b), (c, rem)), ((a, b), (c_, rem_)));
|
||||
}
|
||||
}
|
||||
|
@ -3036,11 +3070,22 @@ fn udivsi3() {
|
|||
}
|
||||
|
||||
fn prologue() -> &'static str {
|
||||
"
|
||||
r#"
|
||||
#[cfg(all(target_arch = "arm",
|
||||
not(any(target_env = "gnu", target_env = "musl")),
|
||||
target_os = "linux",
|
||||
test))]
|
||||
use core::mem;
|
||||
#[cfg(not(all(target_arch = "arm",
|
||||
not(any(target_env = "gnu", target_env = "musl")),
|
||||
target_os = "linux",
|
||||
test)))]
|
||||
use std::mem;
|
||||
|
||||
use compiler_builtins::int::udiv::__udivti3;
|
||||
|
||||
static TEST_CASES: &[((u128, u128), u128)] = &[
|
||||
"
|
||||
"#
|
||||
}
|
||||
|
||||
fn epilogue() -> &'static str {
|
||||
|
@ -3050,7 +3095,7 @@ static TEST_CASES: &[((u128, u128), u128)] = &[
|
|||
#[test]
|
||||
fn udivti3() {
|
||||
for &((a, b), c) in TEST_CASES {
|
||||
let c_ = __udivti3(a, b);
|
||||
let c_: u128 = unsafe { mem::transmute(__udivti3(a, b)) };
|
||||
assert_eq!(((a, b), c), ((a, b), c_));
|
||||
}
|
||||
}
|
||||
|
@ -3219,11 +3264,22 @@ fn umodsi3() {
|
|||
}
|
||||
|
||||
fn prologue() -> &'static str {
|
||||
"
|
||||
r#"
|
||||
#[cfg(all(target_arch = "arm",
|
||||
not(any(target_env = "gnu", target_env = "musl")),
|
||||
target_os = "linux",
|
||||
test))]
|
||||
use core::mem;
|
||||
#[cfg(not(all(target_arch = "arm",
|
||||
not(any(target_env = "gnu", target_env = "musl")),
|
||||
target_os = "linux",
|
||||
test)))]
|
||||
use std::mem;
|
||||
|
||||
use compiler_builtins::int::udiv::__umodti3;
|
||||
|
||||
static TEST_CASES: &[((u128, u128), u128)] = &[
|
||||
"
|
||||
"#
|
||||
}
|
||||
|
||||
fn epilogue() -> &'static str {
|
||||
|
@ -3233,7 +3289,7 @@ static TEST_CASES: &[((u128, u128), u128)] = &[
|
|||
#[test]
|
||||
fn umodti3() {
|
||||
for &((a, b), c) in TEST_CASES {
|
||||
let c_ = __umodti3(a, b);
|
||||
let c_: u128 = unsafe { mem::transmute(__umodti3(a, b)) };
|
||||
assert_eq!(((a, b), c), ((a, b), c_));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue