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