xref: /original-bsd/old/pcc/ccom.vax/mac2defs.h (revision b72cc79a)
1*b72cc79aSmckusick /*	mac2defs.h	4.2	85/08/23	*/
21fa48748Sralph 
31fa48748Sralph /*
41fa48748Sralph  * VAX-11/780 Registers
51fa48748Sralph  */
61fa48748Sralph 
71fa48748Sralph /*
81fa48748Sralph  * Scratch registers
91fa48748Sralph  */
101fa48748Sralph #define R0	0
111fa48748Sralph #define R1	1
121fa48748Sralph #define R2	2
131fa48748Sralph #define R3	3
141fa48748Sralph #define R4	4
151fa48748Sralph #define R5	5
161fa48748Sralph 
171fa48748Sralph /*
181fa48748Sralph  * Register variables
191fa48748Sralph  */
201fa48748Sralph #define R6	6
211fa48748Sralph #define R7	7
221fa48748Sralph #define R8	8
231fa48748Sralph #define R9	9
241fa48748Sralph #define R10	10
251fa48748Sralph #define R11	11
261fa48748Sralph 
271fa48748Sralph /*
281fa48748Sralph  * Special purpose registers
291fa48748Sralph  */
301fa48748Sralph #define AP	12		/* argument pointer */
311fa48748Sralph #define FP	13		/* frame pointer */
321fa48748Sralph #define SP	14		/* stack pointer */
331fa48748Sralph #define PC	15		/* program counter */
341fa48748Sralph 
351fa48748Sralph #define REGSZ	16
361fa48748Sralph #define TMPREG	FP
371fa48748Sralph 
381fa48748Sralph #define R2REGS	1		/* permit double indexing */
391fa48748Sralph 
401fa48748Sralph extern	int fregs;
411fa48748Sralph extern	int maxargs;
421fa48748Sralph 
431fa48748Sralph #define BYTEOFF(x)	((x)&03)
441fa48748Sralph #define wdal(k)		(BYTEOFF(k)==0)		/* word align */
451fa48748Sralph #define BITOOR(x)	((x)>>3)		/* bit offset to oreg offset */
461fa48748Sralph 
471fa48748Sralph /*
481fa48748Sralph  * Some macros used in store():
491fa48748Sralph  *	just evaluate the arguments, and be done with it...
501fa48748Sralph  */
511fa48748Sralph #define STOARG(p)
521fa48748Sralph #define STOFARG(p)
531fa48748Sralph #define STOSTARG(p)
541fa48748Sralph #define genfcall(a,b)	gencall(a,b)
551fa48748Sralph 
56*b72cc79aSmckusick /*
57*b72cc79aSmckusick  * Some short routines that get called an awful lot are actually macros.
58*b72cc79aSmckusick  */
59*b72cc79aSmckusick #if defined(FORT) || defined(SPRECC)
60*b72cc79aSmckusick #define	szty(t)	((t) == DOUBLE ? 2 : 1)
61*b72cc79aSmckusick #else
62*b72cc79aSmckusick #define	szty(t)	(((t) == DOUBLE || (t) == FLOAT) ? 2 : 1)
63*b72cc79aSmckusick #endif
64*b72cc79aSmckusick #define	shltype(o, p) \
65*b72cc79aSmckusick 	((o) == REG || (o) == NAME || (o) == ICON || \
66*b72cc79aSmckusick 	 (o) == OREG || ((o) == UNARY MUL && shumul((p)->in.left)))
67*b72cc79aSmckusick #define	ncopy(q, p)	((q)->in = (p)->in)
68*b72cc79aSmckusick 
691fa48748Sralph #define MYREADER(p) myreader(p)
701fa48748Sralph int	optim2();
711fa48748Sralph 
721fa48748Sralph /* This indicates there are no additional special shapes, see match.c */
731fa48748Sralph #define special(a, b)	0
74