Handle DIV overflow in lightrec and the interpreter
[pcsx_rearmed.git] / deps / lightning / check / alu_sub.tst
1 #include "alu.inc"
2
3 .code
4         prolog
5
6 #define SUB(N, I0, I1, V)       ALU(N, , sub, I0, I1, V)
7
8         SUB(0,  0x7fffffff, 1,          0x7ffffffe)
9         SUB(2,  0x80000000, 1,          0x7fffffff)
10         SUB(3,  0x80000000, 0x7fffffff, 1)
11         SUB(4,  0xffffffff, 0xffffffff, 0)
12         SUB(5,  0xffffffff, 0x7fffffff, 0x80000000)
13         SUB(6,  0x7fffffff, 0,          0x7fffffff)
14 #if __WORDSIZE == 32
15         SUB(7,  1,          0x7fffffff, 0x80000002)
16         SUB(8,  1,          0x80000000, 0x80000001)
17         SUB(9,  0x7fffffff, 0x80000000, 0xffffffff)
18         SUB(10, 0x7fffffff, 0xffffffff, 0x80000000)
19         SUB(11, 0,          0x7fffffff, 0x80000001)
20 #else
21         SUB(7,  1,                  0x7fffffff,         0xffffffff80000002)
22         SUB(8,  1,                  0xffffffff80000000,         0x80000001)
23         SUB(9,  0x7fffffff,         0xffffffff80000000,         0xffffffff)
24         SUB(10, 0xffffffff7fffffff, 0xffffffffffffffff, 0xffffffff80000000)
25         SUB(11, 0,                  0x7fffffff,         0xffffffff80000001)
26         SUB(12, 0x7fffffffffffffff, 1,                  0x7ffffffffffffffe)
27         SUB(13, 1,                  0x7fffffffffffffff, 0x8000000000000002)
28         SUB(14, 0x8000000000000000, 1,                  0x7fffffffffffffff)
29         SUB(15, 1,                  0x8000000000000000, 0x8000000000000001)
30         SUB(16, 0x7fffffffffffffff, 0x8000000000000000, 0xffffffffffffffff)
31         SUB(17, 0x8000000000000000, 0x7fffffffffffffff, 1)
32         SUB(18, 0x7fffffffffffffff, 0xffffffffffffffff, 0x8000000000000000)
33         SUB(19, 0xffffffffffffffff, 0x7fffffffffffffff, 0x8000000000000000)
34         SUB(20, 0xffffffffffffffff, 0xffffffffffffffff, 0)
35 #endif
36
37 #undef SUB
38 #define SUB(N, T, I0, I1, V)    FOP(N, T, sub, I0, I1, V)
39         SUB(0, _f,      -0.5,       0.5,        -1.0)
40         SUB(1, _f,       0.25,      0.75,       -0.5)
41         SUB(0, _d,      -0.5,       0.5,        -1.0)
42         SUB(1, _d,       0.25,      0.75,       -0.5)
43
44         prepare
45                 pushargi ok
46                 ellipsis
47         finishi @printf
48         ret
49         epilog