0.9.42 (nothing needed but some tests)
This commit is contained in:
parent
e4ad6f45b9
commit
d9a5d8dfa3
|
@ -129,4 +129,6 @@
|
|||
[NO] psx/gpu : render parameters stuff
|
||||
[NO] psx/input/dualshocK : AMCT stuff
|
||||
[NO] psx/psx : render parameters stuff
|
||||
[OK] tests : pasted over and whittled down
|
||||
[OK] tests : pasted over and whittled down
|
||||
0.9.41 -> 0.9.42
|
||||
[OK] tests : some 64bit casting tests
|
|
@ -1393,6 +1393,66 @@ static void TestRoundPow2(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
template<typename RT, typename T, unsigned sa>
|
||||
static NO_INLINE NO_CLONE RT TestCasts_Sub_L(T v)
|
||||
{
|
||||
return (RT)v << sa;
|
||||
}
|
||||
|
||||
template<typename RT, typename T, unsigned sa>
|
||||
static NO_INLINE NO_CLONE RT TestCasts_Sub_R(T v)
|
||||
{
|
||||
return (RT)v >> sa;
|
||||
}
|
||||
|
||||
template<typename RT, typename T, signed sa>
|
||||
static INLINE RT TestCasts_Sub(T v)
|
||||
{
|
||||
if(sa < 0)
|
||||
return TestCasts_Sub_R<RT, T, (-sa) & (8 * sizeof(RT) - 1)>(v);
|
||||
else
|
||||
return TestCasts_Sub_L<RT, T, sa & (8 * sizeof(RT) - 1)>(v);
|
||||
}
|
||||
|
||||
static void TestCastShift(void)
|
||||
{
|
||||
assert((TestCasts_Sub< int64, uint8, 4>(0xEF) == 0x0000000000000EF0ULL));
|
||||
assert((TestCasts_Sub<uint64, int8, 4>(0xEF) == 0xFFFFFFFFFFFFFEF0ULL));
|
||||
|
||||
assert((TestCasts_Sub< int64, uint16, 4>(0xBEEF) == 0x00000000000BEEF0ULL));
|
||||
assert((TestCasts_Sub<uint64, int16, 4>(0xBEEF) == 0xFFFFFFFFFFFBEEF0ULL));
|
||||
|
||||
assert((TestCasts_Sub< int64, uint32, 4>(0xDEADBEEF) == 0x0000000DEADBEEF0ULL));
|
||||
assert((TestCasts_Sub<uint64, int32, 4>(0xDEADBEEF) == 0xFFFFFFFDEADBEEF0ULL));
|
||||
|
||||
assert((TestCasts_Sub< int64, uint8, 20>(0xEF) == 0x000000000EF00000ULL));
|
||||
assert((TestCasts_Sub<uint64, int8, 20>(0xEF) == 0xFFFFFFFFFEF00000ULL));
|
||||
|
||||
assert((TestCasts_Sub< int64, uint16, 20>(0xBEEF) == 0x0000000BEEF00000ULL));
|
||||
assert((TestCasts_Sub<uint64, int16, 20>(0xBEEF) == 0xFFFFFFFBEEF00000ULL));
|
||||
|
||||
assert((TestCasts_Sub< int64, uint32, 20>(0xDEADBEEF) == 0x000DEADBEEF00000ULL));
|
||||
assert((TestCasts_Sub<uint64, int32, 20>(0xDEADBEEF) == 0xFFFDEADBEEF00000ULL));
|
||||
|
||||
assert((TestCasts_Sub< int64, uint8, -4>(0xEF) == 0x000000000000000EULL));
|
||||
assert((TestCasts_Sub<uint64, int8, -4>(0xEF) == 0x0FFFFFFFFFFFFFFEULL));
|
||||
|
||||
assert((TestCasts_Sub< int64, uint16, -4>(0xBEEF) == 0x0000000000000BEEULL));
|
||||
assert((TestCasts_Sub<uint64, int16, -4>(0xBEEF) == 0x0FFFFFFFFFFFFBEEULL));
|
||||
|
||||
assert((TestCasts_Sub< int64, uint32, -4>(0xDEADBEEF) == 0x000000000DEADBEEULL));
|
||||
assert((TestCasts_Sub<uint64, int32, -4>(0xDEADBEEF) == 0x0FFFFFFFFDEADBEEULL));
|
||||
|
||||
assert((TestCasts_Sub< int64, uint8, -20>(0xEF) == 0x0000000000000000ULL));
|
||||
assert((TestCasts_Sub<uint64, int8, -20>(0xEF) == 0x00000FFFFFFFFFFFULL));
|
||||
|
||||
assert((TestCasts_Sub< int64, uint16, -20>(0xBEEF) == 0x0000000000000000ULL));
|
||||
assert((TestCasts_Sub<uint64, int16, -20>(0xBEEF) == 0x00000FFFFFFFFFFFULL));
|
||||
|
||||
assert((TestCasts_Sub< int64, uint32, -20>(0xDEADBEEF) == 0x0000000000000DEAULL));
|
||||
assert((TestCasts_Sub<uint64, int32, -20>(0xDEADBEEF) == 0x00000FFFFFFFFDEAULL));
|
||||
}
|
||||
|
||||
#ifdef WANT_TEST_TIME
|
||||
static void Time_Test(void)
|
||||
{
|
||||
|
@ -1695,6 +1755,8 @@ bool MDFN_RunMathTests(void)
|
|||
Time_Test();
|
||||
#endif
|
||||
|
||||
TestCastShift();
|
||||
|
||||
#if 0
|
||||
// Not really a math test.
|
||||
const char *test_paths[] = { "/meow", "/meow/cow", "\\meow", "\\meow\\cow", "\\\\meow", "\\\\meow\\cow",
|
||||
|
|
Loading…
Reference in New Issue