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/gpu : render parameters stuff
|
||||||
[NO] psx/input/dualshocK : AMCT stuff
|
[NO] psx/input/dualshocK : AMCT stuff
|
||||||
[NO] psx/psx : render parameters 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
|
#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
|
#ifdef WANT_TEST_TIME
|
||||||
static void Time_Test(void)
|
static void Time_Test(void)
|
||||||
{
|
{
|
||||||
|
@ -1695,6 +1755,8 @@ bool MDFN_RunMathTests(void)
|
||||||
Time_Test();
|
Time_Test();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
TestCastShift();
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
// Not really a math test.
|
// Not really a math test.
|
||||||
const char *test_paths[] = { "/meow", "/meow/cow", "\\meow", "\\meow\\cow", "\\\\meow", "\\\\meow\\cow",
|
const char *test_paths[] = { "/meow", "/meow/cow", "\\meow", "\\meow\\cow", "\\\\meow", "\\\\meow\\cow",
|
||||||
|
|
Loading…
Reference in New Issue