Commit | Line | Data |
---|---|---|
4a71579b PC |
1 | #include "alu.inc" |
2 | ||
3 | .code | |
4 | prolog | |
5 | ||
6 | #define DIV(N, I0, I1, V) ALU(N, , div, I0, I1, V) | |
7 | #define UDIV(N, I0, I1, V) ALU(N, _u, div, I0, I1, V) | |
8 | ||
9 | DIV(0, 0x7fffffff, 1, 0x7fffffff) | |
10 | DIV(1, 1, 0x7fffffff, 0) | |
11 | DIV(2, 0x80000000, 1, 0x80000000) | |
12 | DIV(3, 1, 0x80000000, 0) | |
13 | DIV(4, 0x7fffffff, 2, 0x3fffffff) | |
14 | DIV(5, 2, 0x7fffffff, 0) | |
15 | DIV(6, 2, 0x80000000, 0) | |
16 | DIV(7, 0x7fffffff, 0x80000000, 0) | |
17 | DIV(8, 0, 0x7fffffff, 0) | |
18 | DIV(9, 0xffffffff, 0xffffffff, 1) | |
19 | UDIV(0, 0x7fffffff, 1, 0x7fffffff) | |
20 | UDIV(1, 1, 0x7fffffff, 0) | |
21 | UDIV(2, 0x80000000, 1, 0x80000000) | |
22 | UDIV(3, 1, 0x80000000, 0) | |
23 | UDIV(4, 0x7fffffff, 2, 0x3fffffff) | |
24 | UDIV(5, 2, 0x7fffffff, 0) | |
25 | UDIV(6, 0x80000000, 2, 0x40000000) | |
26 | UDIV(7, 2, 0x80000000, 0) | |
27 | UDIV(8, 0x7fffffff, 0x80000000, 0) | |
28 | UDIV(9, 0x80000000, 0x7fffffff, 1) | |
29 | UDIV(10,0, 0x7fffffff, 0) | |
30 | UDIV(11,0x7fffffff, 0xffffffff, 0) | |
31 | UDIV(12,0xffffffff, 0x7fffffff, 2) | |
32 | UDIV(13,0xffffffff, 0xffffffff, 1) | |
33 | #if __WORDSIZE == 32 | |
34 | DIV(10, 0x80000000, 2, 0xc0000000) | |
35 | DIV(11, 0x80000000, 0x7fffffff, 0xffffffff) | |
36 | DIV(12, 0x7fffffff, 0xffffffff, 0x80000001) | |
37 | DIV(13, 0xffffffff, 0x7fffffff, 0) | |
38 | #else | |
39 | DIV(10, 0x80000000, 2, 0x40000000) | |
40 | DIV(11, 0x80000000, 0x7fffffff, 1) | |
41 | DIV(12, 0x7fffffff, 0xffffffff, 0) | |
42 | DIV(13, 0xffffffff, 0x7fffffff, 2) | |
43 | DIV(14, 0x7fffffffffffffff, 1, 0x7fffffffffffffff) | |
44 | DIV(15, 1, 0x7fffffffffffffff, 0) | |
45 | DIV(16, 0x8000000000000000, 1, 0x8000000000000000) | |
46 | DIV(17, 1, 0x8000000000000000, 0) | |
47 | DIV(18, 0x7fffffffffffffff, 2, 0x3fffffffffffffff) | |
48 | DIV(19, 2, 0x7fffffffffffffff, 0) | |
49 | DIV(20, 0x8000000000000000, 2, 0xc000000000000000) | |
50 | DIV(21, 2, 0x8000000000000000, 0) | |
51 | DIV(22, 0x7fffffffffffffff, 0x8000000000000000, 0) | |
52 | DIV(23, 0x8000000000000000, 0x7fffffffffffffff, 0xffffffffffffffff) | |
53 | DIV(24, 0x7fffffffffffffff, 0xffffffffffffffff, 0x8000000000000001) | |
54 | DIV(25, 0xffffffffffffffff, 0x7fffffffffffffff, 0) | |
55 | DIV(26, 0xffffffffffffffff, 0xffffffffffffffff, 1) | |
56 | UDIV(14,0x7fffffffffffffff, 1, 0x7fffffffffffffff) | |
57 | UDIV(15,1, 0x7fffffffffffffff, 0) | |
58 | UDIV(16,0x8000000000000000, 1, 0x8000000000000000) | |
59 | UDIV(17,1, 0x8000000000000000, 0) | |
60 | UDIV(18,0x7fffffffffffffff, 2, 0x3fffffffffffffff) | |
61 | UDIV(19,2, 0x7fffffffffffffff, 0) | |
62 | UDIV(20,0x8000000000000000, 2, 0x4000000000000000) | |
63 | UDIV(21,2, 0x8000000000000000, 0) | |
64 | UDIV(22,0x7fffffffffffffff, 0x8000000000000000, 0) | |
65 | UDIV(23,0x8000000000000000, 0x7fffffffffffffff, 1) | |
66 | UDIV(24,0x7fffffffffffffff, 0xffffffffffffffff, 0) | |
67 | UDIV(25,0xffffffffffffffff, 0x7fffffffffffffff, 2) | |
68 | UDIV(26,0xffffffffffffffff, 0xffffffffffffffff, 1) | |
69 | #endif | |
70 | ||
71 | #undef DIV | |
72 | #define DIV(N, T, I0, I1, V) FOP(N, T, div, I0, I1, V) | |
73 | DIV(0, _f, -0.5, 0.5, -1.0) | |
74 | DIV(1, _f, 1.25, 0.5, 2.5) | |
75 | DIV(0, _d, -0.5, 0.5, -1.0) | |
76 | DIV(1, _d, 1.25, 0.5, 2.5) | |
77 | ||
78 | prepare | |
79 | pushargi ok | |
80 | ellipsis | |
81 | finishi @printf | |
82 | ret | |
83 | epilog |