Properly protect the HLE instructions against corrupted memory.
[pcsx_rearmed.git] / deps / lightning / check / alu_mul.tst
CommitLineData
4a71579b
PC
1#include "alu.inc"
2
3.code
4 prolog
5
6#define MUL(N, I0, I1, V) ALU(N, , mul, I0, I1, V)
7
8 MUL(0, 0x7fffffff, 1, 0x7fffffff)
9 MUL(1, 1, 0x7fffffff, 0x7fffffff)
10 MUL(2, 0x80000000, 1, 0x80000000)
11 MUL(3, 1, 0x80000000, 0x80000000)
12 MUL(4, 0x7fffffff, 2, 0xfffffffe)
13 MUL(5, 2, 0x7fffffff, 0xfffffffe)
14 MUL(6, 0x7fffffff, 0, 0)
15 MUL(7, 0, 0x7fffffff, 0)
16#if __WORDSIZE == 32
17 MUL(8, 0x80000000, 2, 0)
18 MUL(9, 2, 0x80000000, 0)
19 MUL(10, 0x7fffffff, 0x80000000, 0x80000000)
20 MUL(11, 0x80000000, 0x7fffffff, 0x80000000)
21 MUL(12, 0x7fffffff, 0xffffffff, 0x80000001)
22 MUL(13, 0xffffffff, 0x7fffffff, 0x80000001)
23 MUL(14, 0xffffffff, 0xffffffff, 1)
24#else
25 MUL(8, 0x80000000, 2, 0x100000000)
26 MUL(9, 2, 0x80000000, 0x100000000)
27 MUL(10, 0x7fffffff, 0x80000000, 0x3fffffff80000000)
28 MUL(11, 0x80000000, 0x7fffffff, 0x3fffffff80000000)
29 MUL(12, 0x7fffffff, 0xffffffff, 0x7ffffffe80000001)
30 MUL(13, 0xffffffff, 0x7fffffff, 0x7ffffffe80000001)
31 MUL(14, 0xffffffff, 0xffffffff, 0xfffffffe00000001)
32 MUL(15, 0x7fffffffffffffff, 1, 0x7fffffffffffffff)
33 MUL(16, 1, 0x7fffffffffffffff, 0x7fffffffffffffff)
34 MUL(17, 0x8000000000000000, 1, 0x8000000000000000)
35 MUL(18, 1, 0x8000000000000000, 0x8000000000000000)
36 MUL(19, 0x7fffffffffffffff, 2, 0xfffffffffffffffe)
37 MUL(20, 2, 0x7fffffffffffffff, 0xfffffffffffffffe)
38 MUL(21, 0x8000000000000000, 2, 0)
39 MUL(22, 2, 0x8000000000000000, 0)
40 MUL(23, 0x7fffffffffffffff, 0x8000000000000000, 0x8000000000000000)
41 MUL(24, 0x8000000000000000, 0x7fffffffffffffff, 0x8000000000000000)
42 MUL(25, 0x7fffffffffffffff, 0xffffffffffffffff, 0x8000000000000001)
43 MUL(26, 0xffffffffffffffff, 0x7fffffffffffffff, 0x8000000000000001)
44 MUL(27, 0xffffffffffffffff, 0xffffffffffffffff, 1)
45#endif
46
47#undef MUL
48#define MUL(N, T, I0, I1, V) FOP(N, T, mul, I0, I1, V)
49 MUL(0, _f, -0.5, 0.5, -0.25)
50 MUL(1, _f, 0.25, 0.75, 0.1875)
51 MUL(0, _d, -0.5, 0.5, -0.25)
52 MUL(1, _d, 0.25, 0.75, 0.1875)
53
54 prepare
55 pushargi ok
56 ellipsis
57 finishi @printf
58 ret
59 epilog