2025-03-18 09:52:53 +00:00
|
|
|
use builtins_test::*;
|
2020-12-08 05:25:42 +00:00
|
|
|
|
|
|
|
macro_rules! shift {
|
|
|
|
($($i:ty, $fn_std:ident, $fn_builtins:ident);*;) => {
|
|
|
|
$(
|
2024-05-18 08:07:37 +00:00
|
|
|
#[test]
|
|
|
|
fn $fn_builtins() {
|
|
|
|
use compiler_builtins::int::shift::$fn_builtins;
|
|
|
|
|
|
|
|
fuzz_shift(|x: $i, s: u32| {
|
|
|
|
let tmp0: $i = x.$fn_std(s);
|
|
|
|
let tmp1: $i = $fn_builtins(x, s);
|
|
|
|
if tmp0 != tmp1 {
|
|
|
|
panic!(
|
|
|
|
"{}({}, {}): std: {}, builtins: {}",
|
|
|
|
stringify!($fn_builtins), x, s, tmp0, tmp1
|
|
|
|
);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2020-12-08 05:25:42 +00:00
|
|
|
)*
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2024-05-18 08:07:37 +00:00
|
|
|
shift! {
|
|
|
|
u32, wrapping_shl, __ashlsi3;
|
|
|
|
u64, wrapping_shl, __ashldi3;
|
|
|
|
u128, wrapping_shl, __ashlti3;
|
|
|
|
i32, wrapping_shr, __ashrsi3;
|
|
|
|
i64, wrapping_shr, __ashrdi3;
|
|
|
|
i128, wrapping_shr, __ashrti3;
|
|
|
|
u32, wrapping_shr, __lshrsi3;
|
|
|
|
u64, wrapping_shr, __lshrdi3;
|
|
|
|
u128, wrapping_shr, __lshrti3;
|
2020-12-08 05:25:42 +00:00
|
|
|
}
|