Home | History | Annotate | Download | only in afuc

Lines Matching refs:ai

54    struct asm_instruction *ai = &instructions[num_instructions++];
56 ai->tok = tok;
57 return ai;
144 struct asm_instruction *ai = &instructions[i];
152 assert(ai->is_literal);
153 ai->literal &= ~0xffff;
154 ai->literal |= num_instructions;
157 if (ai->is_literal) {
158 write(outfd, &ai->literal, 4);
162 switch (ai->tok) {
185 if (ai->has_immed) {
187 assert(ai->tok != T_OP_MSB);
188 if (ai->xmov) {
193 opc = tok2alu(ai->tok);
194 instr.alui.dst = ai->dst;
195 instr.alui.src = ai->src1;
196 instr.alui.uimm = ai->immed;
199 instr.alu.dst = ai->dst;
200 instr.alu.src1 = ai->src1;
201 instr.alu.src2 = ai->src2;
202 instr.alu.xmov = ai->xmov;
203 instr.alu.alu = tok2alu(ai->tok);
210 if ((ai->has_immed || ai->label) && ai->xmov) {
214 if (ai->has_immed) {
216 instr.movi.dst = ai->dst;
217 instr.movi.uimm = ai->immed;
218 instr.movi.shift = ai->shift;
219 } else if (ai->label) {
225 instr.movi.dst = ai->dst;
226 instr.movi.uimm = resolve_label(ai->label);
227 instr.movi.shift = ai->shift;
231 instr.alu.dst = ai->dst;
233 instr.alu.src2 = ai->src1;
234 instr.alu.xmov = ai->xmov;
243 if (ai->tok == T_OP_CWRITE) {
245 } else if (ai->tok == T_OP_CREAD) {
247 } else if (ai->tok == T_OP_STORE) {
249 } else if (ai->tok == T_OP_LOAD) {
253 if (ai->tok == T_OP_CWRITE) {
255 } else if (ai->tok == T_OP_CREAD) {
257 } else if (ai->tok == T_OP_STORE || ai->tok == T_OP_LOAD) {
262 instr.control.src1 = ai->src1;
263 instr.control.src2 = ai->src2;
264 instr.control.flags = ai->bit;
265 instr.control.uimm = ai->immed;
269 if (ai->has_immed) {
270 opc = (ai->tok == T_OP_BRNE) ? OPC_BRNEI : OPC_BREQI;
271 instr.br.bit_or_imm = ai->immed;
273 opc = (ai->tok == T_OP_BRNE) ? OPC_BRNEB : OPC_BREQB;
274 instr.br.bit_or_imm = ai->bit;
276 instr.br.src = ai->src1;
277 instr.br.ioff = resolve_label(ai->label) - i;
288 instr.call.uoff = resolve_label(ai->label);
292 instr.call.uoff = resolve_label(ai->label);
296 if (resolve_label(ai->label) != i + 3) {
298 ai->label);
301 if (ai->src1 != 0x2) {
311 instr.br.ioff = resolve_label(ai->label) - i;
320 afuc_set_opc(&instr, opc, ai->rep);