libFirm
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
gen_riscv_emitter.c
1 
9 #include "gen_riscv_emitter.h"
10 
11 #include "beemithlp.h"
12 #include "gen_riscv_new_nodes.h"
13 #include "riscv_emitter.h"
14 
15 static void emit_riscv_add(ir_node const *const node)
16 {
17  riscv_emitf(node, "add %D0, %S0, %S1");
18 }
19 
20 static void emit_riscv_addi(ir_node const *const node)
21 {
22  riscv_emitf(node, "addi %D0, %S0, %I");
23 }
24 
25 static void emit_riscv_and(ir_node const *const node)
26 {
27  riscv_emitf(node, "and %D0, %S0, %S1");
28 }
29 
30 static void emit_riscv_andi(ir_node const *const node)
31 {
32  riscv_emitf(node, "andi %D0, %S0, %I");
33 }
34 
35 static void emit_riscv_div(ir_node const *const node)
36 {
37  riscv_emitf(node, "div %D0, %S0, %S1");
38 }
39 
40 static void emit_riscv_divu(ir_node const *const node)
41 {
42  riscv_emitf(node, "divu %D0, %S0, %S1");
43 }
44 
45 static void emit_riscv_ijmp(ir_node const *const node)
46 {
47  riscv_emitf(node, "jr %S0");
48 }
49 
50 static void emit_riscv_jal(ir_node const *const node)
51 {
52  riscv_emitf(node, "jal %J");
53 }
54 
55 static void emit_riscv_jalr(ir_node const *const node)
56 {
57  riscv_emitf(node, "jalr %S2");
58 }
59 
60 static void emit_riscv_lb(ir_node const *const node)
61 {
62  riscv_emitf(node, "lb %D1, %A");
63 }
64 
65 static void emit_riscv_lbu(ir_node const *const node)
66 {
67  riscv_emitf(node, "lbu %D1, %A");
68 }
69 
70 static void emit_riscv_lh(ir_node const *const node)
71 {
72  riscv_emitf(node, "lh %D1, %A");
73 }
74 
75 static void emit_riscv_lhu(ir_node const *const node)
76 {
77  riscv_emitf(node, "lhu %D1, %A");
78 }
79 
80 static void emit_riscv_lui(ir_node const *const node)
81 {
82  riscv_emitf(node, "lui %D0, %H");
83 }
84 
85 static void emit_riscv_lw(ir_node const *const node)
86 {
87  riscv_emitf(node, "lw %D1, %A");
88 }
89 
90 static void emit_riscv_mul(ir_node const *const node)
91 {
92  riscv_emitf(node, "mul %D0, %S0, %S1");
93 }
94 
95 static void emit_riscv_mulh(ir_node const *const node)
96 {
97  riscv_emitf(node, "mulh %D0, %S0, %S1");
98 }
99 
100 static void emit_riscv_mulhu(ir_node const *const node)
101 {
102  riscv_emitf(node, "mulhu %D0, %S0, %S1");
103 }
104 
105 static void emit_riscv_or(ir_node const *const node)
106 {
107  riscv_emitf(node, "or %D0, %S0, %S1");
108 }
109 
110 static void emit_riscv_ori(ir_node const *const node)
111 {
112  riscv_emitf(node, "ori %D0, %S0, %I");
113 }
114 
115 static void emit_riscv_rem(ir_node const *const node)
116 {
117  riscv_emitf(node, "rem %D0, %S0, %S1");
118 }
119 
120 static void emit_riscv_remu(ir_node const *const node)
121 {
122  riscv_emitf(node, "remu %D0, %S0, %S1");
123 }
124 
125 static void emit_riscv_ret(ir_node const *const node)
126 {
127  riscv_emitf(node, "ret");
128 }
129 
130 static void emit_riscv_sb(ir_node const *const node)
131 {
132  riscv_emitf(node, "sb %S2, %A");
133 }
134 
135 static void emit_riscv_sh(ir_node const *const node)
136 {
137  riscv_emitf(node, "sh %S2, %A");
138 }
139 
140 static void emit_riscv_sll(ir_node const *const node)
141 {
142  riscv_emitf(node, "sll %D0, %S0, %S1");
143 }
144 
145 static void emit_riscv_slli(ir_node const *const node)
146 {
147  riscv_emitf(node, "slli %D0, %S0, %I");
148 }
149 
150 static void emit_riscv_slt(ir_node const *const node)
151 {
152  riscv_emitf(node, "slt %D0, %S0, %S1");
153 }
154 
155 static void emit_riscv_sltiu(ir_node const *const node)
156 {
157  riscv_emitf(node, "sltiu %D0, %S0, %I");
158 }
159 
160 static void emit_riscv_sltu(ir_node const *const node)
161 {
162  riscv_emitf(node, "sltu %D0, %S0, %S1");
163 }
164 
165 static void emit_riscv_sra(ir_node const *const node)
166 {
167  riscv_emitf(node, "sra %D0, %S0, %S1");
168 }
169 
170 static void emit_riscv_srai(ir_node const *const node)
171 {
172  riscv_emitf(node, "srai %D0, %S0, %I");
173 }
174 
175 static void emit_riscv_srl(ir_node const *const node)
176 {
177  riscv_emitf(node, "srl %D0, %S0, %S1");
178 }
179 
180 static void emit_riscv_srli(ir_node const *const node)
181 {
182  riscv_emitf(node, "srli %D0, %S0, %I");
183 }
184 
185 static void emit_riscv_sub(ir_node const *const node)
186 {
187  riscv_emitf(node, "sub %D0, %S0, %S1");
188 }
189 
190 static void emit_riscv_sw(ir_node const *const node)
191 {
192  riscv_emitf(node, "sw %S2, %A");
193 }
194 
195 static void emit_riscv_xor(ir_node const *const node)
196 {
197  riscv_emitf(node, "xor %D0, %S0, %S1");
198 }
199 
200 static void emit_riscv_xori(ir_node const *const node)
201 {
202  riscv_emitf(node, "xori %D0, %S0, %I");
203 }
204 
205 
206 
207 void riscv_register_spec_emitters(void)
208 {
209  be_set_emitter(op_riscv_add, emit_riscv_add);
210  be_set_emitter(op_riscv_addi, emit_riscv_addi);
211  be_set_emitter(op_riscv_and, emit_riscv_and);
212  be_set_emitter(op_riscv_andi, emit_riscv_andi);
213  be_set_emitter(op_riscv_div, emit_riscv_div);
214  be_set_emitter(op_riscv_divu, emit_riscv_divu);
215  be_set_emitter(op_riscv_ijmp, emit_riscv_ijmp);
216  be_set_emitter(op_riscv_jal, emit_riscv_jal);
217  be_set_emitter(op_riscv_jalr, emit_riscv_jalr);
218  be_set_emitter(op_riscv_lb, emit_riscv_lb);
219  be_set_emitter(op_riscv_lbu, emit_riscv_lbu);
220  be_set_emitter(op_riscv_lh, emit_riscv_lh);
221  be_set_emitter(op_riscv_lhu, emit_riscv_lhu);
222  be_set_emitter(op_riscv_lui, emit_riscv_lui);
223  be_set_emitter(op_riscv_lw, emit_riscv_lw);
224  be_set_emitter(op_riscv_mul, emit_riscv_mul);
225  be_set_emitter(op_riscv_mulh, emit_riscv_mulh);
226  be_set_emitter(op_riscv_mulhu, emit_riscv_mulhu);
227  be_set_emitter(op_riscv_or, emit_riscv_or);
228  be_set_emitter(op_riscv_ori, emit_riscv_ori);
229  be_set_emitter(op_riscv_rem, emit_riscv_rem);
230  be_set_emitter(op_riscv_remu, emit_riscv_remu);
231  be_set_emitter(op_riscv_ret, emit_riscv_ret);
232  be_set_emitter(op_riscv_sb, emit_riscv_sb);
233  be_set_emitter(op_riscv_sh, emit_riscv_sh);
234  be_set_emitter(op_riscv_sll, emit_riscv_sll);
235  be_set_emitter(op_riscv_slli, emit_riscv_slli);
236  be_set_emitter(op_riscv_slt, emit_riscv_slt);
237  be_set_emitter(op_riscv_sltiu, emit_riscv_sltiu);
238  be_set_emitter(op_riscv_sltu, emit_riscv_sltu);
239  be_set_emitter(op_riscv_sra, emit_riscv_sra);
240  be_set_emitter(op_riscv_srai, emit_riscv_srai);
241  be_set_emitter(op_riscv_srl, emit_riscv_srl);
242  be_set_emitter(op_riscv_srli, emit_riscv_srli);
243  be_set_emitter(op_riscv_sub, emit_riscv_sub);
244  be_set_emitter(op_riscv_sw, emit_riscv_sw);
245  be_set_emitter(op_riscv_xor, emit_riscv_xor);
246  be_set_emitter(op_riscv_xori, emit_riscv_xori);
247 
248 }
249 
250 void riscv_register_spec_binary_emitters(void)
251 {
252 
253 }
struct ir_node ir_node
Procedure Graph Node.
Definition: firm_types.h:53