libFirm
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
gen_riscv_regalloc_if.h
1 
9 #ifndef FIRM_BE_RISCV_GEN_RISCV_REGALLOC_IF_H
10 #define FIRM_BE_RISCV_GEN_RISCV_REGALLOC_IF_H
11 
12 #include "bearch.h"
13 
15 enum reg_indices {
16  REG_ZERO,
17  REG_RA,
18  REG_SP,
19  REG_GP,
20  REG_TP,
21  REG_T0,
22  REG_T1,
23  REG_T2,
24  REG_S0,
25  REG_S1,
26  REG_A0,
27  REG_A1,
28  REG_A2,
29  REG_A3,
30  REG_A4,
31  REG_A5,
32  REG_A6,
33  REG_A7,
34  REG_S2,
35  REG_S3,
36  REG_S4,
37  REG_S5,
38  REG_S6,
39  REG_S7,
40  REG_S8,
41  REG_S9,
42  REG_S10,
43  REG_S11,
44  REG_T3,
45  REG_T4,
46  REG_T5,
47  REG_T6,
48 
49  N_RISCV_REGISTERS
50 };
51 
53 enum {
54  REG_GP_ZERO,
55  REG_GP_RA,
56  REG_GP_SP,
57  REG_GP_GP,
58  REG_GP_TP,
59  REG_GP_T0,
60  REG_GP_T1,
61  REG_GP_T2,
62  REG_GP_S0,
63  REG_GP_S1,
64  REG_GP_A0,
65  REG_GP_A1,
66  REG_GP_A2,
67  REG_GP_A3,
68  REG_GP_A4,
69  REG_GP_A5,
70  REG_GP_A6,
71  REG_GP_A7,
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_S8,
79  REG_GP_S9,
80  REG_GP_S10,
81  REG_GP_S11,
82  REG_GP_T3,
83  REG_GP_T4,
84  REG_GP_T5,
85  REG_GP_T6,
86 };
87 
88 
90 enum {
91  N_riscv_gp_REGS = 32,
92 
93 };
94 
95 enum {
96  CLASS_riscv_gp,
97  N_RISCV_CLASSES = 1
98 };
99 
100 extern const arch_register_req_t riscv_class_reg_req_gp;
101 extern const arch_register_req_t riscv_single_reg_req_gp_zero;
102 extern const arch_register_req_t riscv_single_reg_req_gp_ra;
103 extern const arch_register_req_t riscv_single_reg_req_gp_sp;
104 extern const arch_register_req_t riscv_single_reg_req_gp_gp;
105 extern const arch_register_req_t riscv_single_reg_req_gp_tp;
106 extern const arch_register_req_t riscv_single_reg_req_gp_t0;
107 extern const arch_register_req_t riscv_single_reg_req_gp_t1;
108 extern const arch_register_req_t riscv_single_reg_req_gp_t2;
109 extern const arch_register_req_t riscv_single_reg_req_gp_s0;
110 extern const arch_register_req_t riscv_single_reg_req_gp_s1;
111 extern const arch_register_req_t riscv_single_reg_req_gp_a0;
112 extern const arch_register_req_t riscv_single_reg_req_gp_a1;
113 extern const arch_register_req_t riscv_single_reg_req_gp_a2;
114 extern const arch_register_req_t riscv_single_reg_req_gp_a3;
115 extern const arch_register_req_t riscv_single_reg_req_gp_a4;
116 extern const arch_register_req_t riscv_single_reg_req_gp_a5;
117 extern const arch_register_req_t riscv_single_reg_req_gp_a6;
118 extern const arch_register_req_t riscv_single_reg_req_gp_a7;
119 extern const arch_register_req_t riscv_single_reg_req_gp_s2;
120 extern const arch_register_req_t riscv_single_reg_req_gp_s3;
121 extern const arch_register_req_t riscv_single_reg_req_gp_s4;
122 extern const arch_register_req_t riscv_single_reg_req_gp_s5;
123 extern const arch_register_req_t riscv_single_reg_req_gp_s6;
124 extern const arch_register_req_t riscv_single_reg_req_gp_s7;
125 extern const arch_register_req_t riscv_single_reg_req_gp_s8;
126 extern const arch_register_req_t riscv_single_reg_req_gp_s9;
127 extern const arch_register_req_t riscv_single_reg_req_gp_s10;
128 extern const arch_register_req_t riscv_single_reg_req_gp_s11;
129 extern const arch_register_req_t riscv_single_reg_req_gp_t3;
130 extern const arch_register_req_t riscv_single_reg_req_gp_t4;
131 extern const arch_register_req_t riscv_single_reg_req_gp_t5;
132 extern const arch_register_req_t riscv_single_reg_req_gp_t6;
133 
134 
135 extern const arch_register_t riscv_registers[N_RISCV_REGISTERS];
136 
137 extern arch_register_class_t riscv_reg_classes[N_RISCV_CLASSES];
138 
139 void riscv_register_init(void);
140 
141 #endif