libFirm
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
gen_mips_regalloc_if.h
1 
9 #ifndef FIRM_BE_MIPS_GEN_MIPS_REGALLOC_IF_H
10 #define FIRM_BE_MIPS_GEN_MIPS_REGALLOC_IF_H
11 
12 #include "bearch.h"
13 
15 enum reg_indices {
16  REG_ZERO,
17  REG_AT,
18  REG_V0,
19  REG_V1,
20  REG_A0,
21  REG_A1,
22  REG_A2,
23  REG_A3,
24  REG_T0,
25  REG_T1,
26  REG_T2,
27  REG_T3,
28  REG_T4,
29  REG_T5,
30  REG_T6,
31  REG_T7,
32  REG_S0,
33  REG_S1,
34  REG_S2,
35  REG_S3,
36  REG_S4,
37  REG_S5,
38  REG_S6,
39  REG_S7,
40  REG_T8,
41  REG_T9,
42  REG_K0,
43  REG_K1,
44  REG_GP,
45  REG_SP,
46  REG_S8,
47  REG_RA,
48 
49  N_MIPS_REGISTERS
50 };
51 
53 enum {
54  REG_GP_ZERO,
55  REG_GP_AT,
56  REG_GP_V0,
57  REG_GP_V1,
58  REG_GP_A0,
59  REG_GP_A1,
60  REG_GP_A2,
61  REG_GP_A3,
62  REG_GP_T0,
63  REG_GP_T1,
64  REG_GP_T2,
65  REG_GP_T3,
66  REG_GP_T4,
67  REG_GP_T5,
68  REG_GP_T6,
69  REG_GP_T7,
70  REG_GP_S0,
71  REG_GP_S1,
72  REG_GP_S2,
73  REG_GP_S3,
74  REG_GP_S4,
75  REG_GP_S5,
76  REG_GP_S6,
77  REG_GP_S7,
78  REG_GP_T8,
79  REG_GP_T9,
80  REG_GP_K0,
81  REG_GP_K1,
82  REG_GP_GP,
83  REG_GP_SP,
84  REG_GP_S8,
85  REG_GP_RA,
86 };
87 
88 
90 enum {
91  N_mips_gp_REGS = 32,
92 
93 };
94 
95 enum {
96  CLASS_mips_gp,
97  N_MIPS_CLASSES = 1
98 };
99 
100 extern const arch_register_req_t mips_class_reg_req_gp;
101 extern const arch_register_req_t mips_single_reg_req_gp_zero;
102 extern const arch_register_req_t mips_single_reg_req_gp_at;
103 extern const arch_register_req_t mips_single_reg_req_gp_v0;
104 extern const arch_register_req_t mips_single_reg_req_gp_v1;
105 extern const arch_register_req_t mips_single_reg_req_gp_a0;
106 extern const arch_register_req_t mips_single_reg_req_gp_a1;
107 extern const arch_register_req_t mips_single_reg_req_gp_a2;
108 extern const arch_register_req_t mips_single_reg_req_gp_a3;
109 extern const arch_register_req_t mips_single_reg_req_gp_t0;
110 extern const arch_register_req_t mips_single_reg_req_gp_t1;
111 extern const arch_register_req_t mips_single_reg_req_gp_t2;
112 extern const arch_register_req_t mips_single_reg_req_gp_t3;
113 extern const arch_register_req_t mips_single_reg_req_gp_t4;
114 extern const arch_register_req_t mips_single_reg_req_gp_t5;
115 extern const arch_register_req_t mips_single_reg_req_gp_t6;
116 extern const arch_register_req_t mips_single_reg_req_gp_t7;
117 extern const arch_register_req_t mips_single_reg_req_gp_s0;
118 extern const arch_register_req_t mips_single_reg_req_gp_s1;
119 extern const arch_register_req_t mips_single_reg_req_gp_s2;
120 extern const arch_register_req_t mips_single_reg_req_gp_s3;
121 extern const arch_register_req_t mips_single_reg_req_gp_s4;
122 extern const arch_register_req_t mips_single_reg_req_gp_s5;
123 extern const arch_register_req_t mips_single_reg_req_gp_s6;
124 extern const arch_register_req_t mips_single_reg_req_gp_s7;
125 extern const arch_register_req_t mips_single_reg_req_gp_t8;
126 extern const arch_register_req_t mips_single_reg_req_gp_t9;
127 extern const arch_register_req_t mips_single_reg_req_gp_k0;
128 extern const arch_register_req_t mips_single_reg_req_gp_k1;
129 extern const arch_register_req_t mips_single_reg_req_gp_gp;
130 extern const arch_register_req_t mips_single_reg_req_gp_sp;
131 extern const arch_register_req_t mips_single_reg_req_gp_s8;
132 extern const arch_register_req_t mips_single_reg_req_gp_ra;
133 
134 
135 extern const arch_register_t mips_registers[N_MIPS_REGISTERS];
136 
137 extern arch_register_class_t mips_reg_classes[N_MIPS_CLASSES];
138 
139 void mips_register_init(void);
140 
141 #endif