2 typedef size_t regmask_t;
19 #ifdef MONO_ARCH_NEED_SIMD_BANK
20 #define MONO_NUM_REGBANKS 3
22 #define MONO_NUM_REGBANKS 2
26 /* symbolic registers */
30 regmask_t free_mask [MONO_NUM_REGBANKS];
32 /* symbolic -> hard register assignment */
34 * If the register is spilled, then this contains -spill - 1, where 'spill'
35 * is the index of the spill variable.
39 /* hard -> symbolic */
40 int isymbolic [MONO_MAX_IREGS];
41 int fsymbolic [MONO_MAX_FREGS];
42 #ifdef MONO_ARCH_NEED_SIMD_BANK
43 int xsymbolic [MONO_MAX_XREGS];
45 /* Points to the arrays above */
46 int *symbolic [MONO_NUM_REGBANKS];
51 #define mono_regstate_next_int(rs) ((rs)->next_vreg++)
52 #define mono_regstate_next_float(rs) ((rs)->next_vreg++)
55 MonoRegState* mono_regstate_new (void) MONO_INTERNAL;
57 void mono_regstate_free (MonoRegState *rs) MONO_INTERNAL;
58 void mono_regstate_reset (MonoRegState *rs) MONO_INTERNAL;
59 inline int mono_regstate_next_long (MonoRegState *rs) MONO_INTERNAL;