mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-19 19:17:31 +00:00

Currently, tests of the same kind are grouped together across all types into a single function. This makes it difficult to understand exactly what failed in CI. Change test macros to create separate functions for separate types so failures are more fine grained.
36 lines
1006 B
Rust
36 lines
1006 B
Rust
use testcrate::*;
|
|
|
|
macro_rules! shift {
|
|
($($i:ty, $fn_std:ident, $fn_builtins:ident);*;) => {
|
|
$(
|
|
#[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
|
|
);
|
|
}
|
|
});
|
|
}
|
|
)*
|
|
};
|
|
}
|
|
|
|
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;
|
|
}
|