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