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
60