xref: /original-bsd/old/pcc/ccom.vax/mac2defs.h (revision 2301fdfb)
1 /*	mac2defs.h	4.2	85/08/23	*/
2 
3 /*
4  * VAX-11/780 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 
27 /*
28  * Special purpose registers
29  */
30 #define AP	12		/* argument pointer */
31 #define FP	13		/* frame pointer */
32 #define SP	14		/* stack pointer */
33 #define PC	15		/* program counter */
34 
35 #define REGSZ	16
36 #define TMPREG	FP
37 
38 #define R2REGS	1		/* permit double indexing */
39 
40 extern	int fregs;
41 extern	int maxargs;
42 
43 #define BYTEOFF(x)	((x)&03)
44 #define wdal(k)		(BYTEOFF(k)==0)		/* word align */
45 #define BITOOR(x)	((x)>>3)		/* bit offset to oreg offset */
46 
47 /*
48  * Some macros used in store():
49  *	just evaluate the arguments, and be done with it...
50  */
51 #define STOARG(p)
52 #define STOFARG(p)
53 #define STOSTARG(p)
54 #define genfcall(a,b)	gencall(a,b)
55 
56 /*
57  * Some short routines that get called an awful lot are actually macros.
58  */
59 #if defined(FORT) || defined(SPRECC)
60 #define	szty(t)	((t) == DOUBLE ? 2 : 1)
61 #else
62 #define	szty(t)	(((t) == DOUBLE || (t) == FLOAT) ? 2 : 1)
63 #endif
64 #define	shltype(o, p) \
65 	((o) == REG || (o) == NAME || (o) == ICON || \
66 	 (o) == OREG || ((o) == UNARY MUL && shumul((p)->in.left)))
67 #define	ncopy(q, p)	((q)->in = (p)->in)
68 
69 #define MYREADER(p) myreader(p)
70 int	optim2();
71 
72 /* This indicates there are no additional special shapes, see match.c */
73 #define special(a, b)	0
74