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