xref: /original-bsd/old/pcc/ccom.tahoe/mac2defs.h (revision b9d18e58)
1 /*	mac2defs.h	1.2	86/02/04	*/
2 
3 /*
4  * Tahoe Registers
5  */
6 
7 /*
8  * Scratch registers
9  */
10 #define R0	0
11 #define R1	1
12 #define R2	2
13 #define R3	3
14 #define R4	4
15 #define R5	5
16 
17 /*
18  * Register variables
19  */
20 #define R6	6
21 #define R7	7
22 #define R8	8
23 #define R9	9
24 #define R10	10
25 #define R11	11
26 #define R12	12
27 
28 /*
29  * Special purpose registers
30  */
31 #define FP	13		/* frame pointer */
32 #define SP	14		/* stack pointer */
33 #define PC	15		/* program counter */
34 
35 /*
36  * Floating registers
37  */
38 #define	ACC	16		/* accumulator */
39 
40 #define	TMPREG	FP		/* reg off which temporaries are referenced */
41 #define	REGSZ	16		/* size of register set */
42 
43 #define R2REGS	1		/* permit double indexing */
44 
45 extern	int fregs;
46 extern	int maxargs;
47 
48 #define BYTEOFF(x)	((x)&03)
49 #define wdal(k)		(BYTEOFF(k)==0)		/* word align */
50 #define BITOOR(x)	((x)>>3)		/* bit offset to oreg offset */
51 
52 /*
53  * Some macros used in store():
54  *	just evaluate the arguments, and be done with it...
55  */
56 #define STOARG(p)
57 #define STOFARG(p)
58 #define STOSTARG(p)
59 
60 /*
61  * Some short routines that get called an awful lot are actually macros.
62  */
63 #if defined(FORT) || defined(SPRECC)
64 #define	szty(t)	((t) == DOUBLE ? 2 : 1)
65 #else
66 #define	szty(t)	(((t) == DOUBLE || (t) == FLOAT) ? 2 : 1)
67 #endif
68 #define	shltype(o, p) \
69 	((o) == REG || (o) == NAME || (o) == ICON || \
70 	 (o) == OREG || ((o) == UNARY MUL && shumul((p)->in.left)))
71 #define	ncopy(q, p)	((q)->in = (p)->in)
72 
73 #define MYREADER(p)	myreader(p)
74 int	optim2();
75 #define	SIREG		(SPECIAL|6)	/* indexed OREG */
76 int	special();			/* additional special shapes */
77 #define callchk(p)	if ((p)->in.op != FORTCALL) allchk()
78