3 unsigned char max_unaligned_load
;
6 void (*blkfetch
)(int size
, int off
, int reg
, int tmp
);
7 void (*blkstore
)(int size
, int off
, int reg
, int tmp
);
8 void (*blkloop
)(int dreg
, int doff
,
10 int size
, int tmps
[]);
12 int (*_rule
)(void*, int);
14 void (*_kids
)(Node
, int, Node
*);
22 void (*clobber
)(Node
);
24 extern int askregvar(Symbol
, Symbol
);
25 extern void blkcopy(int, int, int, int, int, int[]);
26 extern unsigned emitasm(Node
, int);
27 extern int getregnum(Node
);
28 extern int mayrecalc(Node
);
29 extern int mkactual(int, int);
30 extern void mkauto(Symbol
);
31 extern Symbol
mkreg(char *, int, int, int);
32 extern Symbol
mkwildcard(Symbol
*);
33 extern int move(Node
);
34 extern int notarget(Node
);
35 extern void parseflags(int, char **);
36 extern int range(Node
, int, int);
37 extern unsigned regloc(Symbol
); /* omit */
38 extern void rtarget(Node
, int, Symbol
);
39 extern void setreg(Node
, Symbol
);
40 extern void spill(unsigned, int, Node
);
41 extern int widens(Node
);
43 extern int argoffset
, maxargoffset
;
44 extern int bflag
, dflag
;
45 extern int dalign
, salign
;
47 extern unsigned freemask
[], usedmask
[];
48 extern int offset
, maxoffset
;
50 extern unsigned tmask
[], vmask
[];
53 unsigned registered
:1;
72 enum { IREG
=0, FREG
=1 };
75 unsigned int eaddr
; /* omit */
88 #define LBURG_MAX SHRT_MAX
90 enum { VREG
=(44<<4) };
92 /* Exported for the front end */
93 extern void blockbeg(Env
*);
94 extern void blockend(Env
*);
95 extern void emit(Node
);
96 extern Node
gen(Node
);
98 extern unsigned emitbin(Node
, int);
101 #define debug(x) (void)0
103 #define debug(x) (void)(dflag&&((x),0))