libFirm
gen_TEMPLATE_regalloc_if.h
1 
9 #ifndef FIRM_BE_TEMPLATE_GEN_TEMPLATE_REGALLOC_IF_H
10 #define FIRM_BE_TEMPLATE_GEN_TEMPLATE_REGALLOC_IF_H
11 
12 #include "bearch.h"
13 
15 enum reg_indices {
16  REG_F0,
17  REG_F1,
18  REG_F2,
19  REG_F3,
20  REG_F4,
21  REG_F5,
22  REG_F6,
23  REG_F7,
24  REG_F8,
25  REG_F9,
26  REG_F10,
27  REG_F11,
28  REG_F12,
29  REG_F13,
30  REG_F14,
31  REG_F15,
32  REG_R0,
33  REG_R1,
34  REG_R2,
35  REG_R3,
36  REG_R4,
37  REG_R5,
38  REG_R6,
39  REG_R7,
40  REG_R8,
41  REG_R9,
42  REG_R10,
43  REG_R11,
44  REG_R12,
45  REG_R13,
46  REG_SP,
47  REG_BP,
48 
49  N_TEMPLATE_REGISTERS
50 };
51 
53 enum {
54  REG_FP_F0,
55  REG_FP_F1,
56  REG_FP_F2,
57  REG_FP_F3,
58  REG_FP_F4,
59  REG_FP_F5,
60  REG_FP_F6,
61  REG_FP_F7,
62  REG_FP_F8,
63  REG_FP_F9,
64  REG_FP_F10,
65  REG_FP_F11,
66  REG_FP_F12,
67  REG_FP_F13,
68  REG_FP_F14,
69  REG_FP_F15,
70 };
71 
72 enum {
73  REG_GP_R0,
74  REG_GP_R1,
75  REG_GP_R2,
76  REG_GP_R3,
77  REG_GP_R4,
78  REG_GP_R5,
79  REG_GP_R6,
80  REG_GP_R7,
81  REG_GP_R8,
82  REG_GP_R9,
83  REG_GP_R10,
84  REG_GP_R11,
85  REG_GP_R12,
86  REG_GP_R13,
87  REG_GP_SP,
88  REG_GP_BP,
89 };
90 
91 
93 enum {
94  N_TEMPLATE_fp_REGS = 16,
95  N_TEMPLATE_gp_REGS = 16,
96 
97 };
98 
99 enum {
100  CLASS_TEMPLATE_fp,
101  CLASS_TEMPLATE_gp,
102  N_TEMPLATE_CLASSES = 2
103 };
104 
105 extern const arch_register_req_t TEMPLATE_class_reg_req_fp;
106 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f0;
107 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f1;
108 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f2;
109 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f3;
110 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f4;
111 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f5;
112 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f6;
113 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f7;
114 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f8;
115 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f9;
116 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f10;
117 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f11;
118 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f12;
119 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f13;
120 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f14;
121 extern const arch_register_req_t TEMPLATE_single_reg_req_fp_f15;
122 extern const arch_register_req_t TEMPLATE_class_reg_req_gp;
123 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_r0;
124 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_r1;
125 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_r2;
126 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_r3;
127 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_r4;
128 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_r5;
129 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_r6;
130 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_r7;
131 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_r8;
132 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_r9;
133 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_r10;
134 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_r11;
135 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_r12;
136 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_r13;
137 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_sp;
138 extern const arch_register_req_t TEMPLATE_single_reg_req_gp_bp;
139 
140 
141 extern const arch_register_t TEMPLATE_registers[N_TEMPLATE_REGISTERS];
142 
143 extern arch_register_class_t TEMPLATE_reg_classes[N_TEMPLATE_CLASSES];
144 
145 void TEMPLATE_register_init(void);
146 
147 #endif