Lines Matching defs:instr
123 emu_instr(struct emu *emu, afuc_instr *instr)
129 afuc_get_opc(instr, &opc, &rep);
136 emu_get_gpr_reg(emu, instr->alui.src),
137 instr->alui.uimm);
138 emu_set_gpr_reg(emu, instr->alui.dst, val);
142 uint32_t val = instr->movi.uimm << instr->movi.shift;
143 emu_set_gpr_reg(emu, instr->movi.dst, val);
147 uint32_t val = emu_alu(emu, instr->alu.alu,
148 emu_get_gpr_reg(emu, instr->alu.src1),
149 emu_get_gpr_reg(emu, instr->alu.src2));
150 emu_set_gpr_reg(emu, instr->alu.dst, val);
152 if (instr->alu.xmov) {
153 unsigned m = MIN2(instr->alu.xmov, rem);
161 emu_get_gpr_reg(emu, instr->alu.src2));
166 emu_get_gpr_reg(emu, instr->alu.src2));
170 emu_get_gpr_reg(emu, instr->alu.src2));
175 emu_get_gpr_reg(emu, instr->alu.src2));
178 emu_set_gpr_reg(emu, instr->alu.dst,
179 emu_get_gpr_reg(emu, instr->alu.src2));
183 emu_get_gpr_reg(emu, instr->alu.src2));
189 uint32_t src1 = emu_get_gpr_reg(emu, instr->control.src1);
190 uint32_t src2 = emu_get_gpr_reg(emu, instr->control.src2);
192 if (instr->control.flags == 0x4) {
193 emu_set_gpr_reg(emu, instr->control.src2, src2 + instr->control.uimm);
194 } else if (instr->control.flags && !emu->quiet) {
195 printf("unhandled flags: %x\n", instr->control.flags);
198 emu_set_control_reg(emu, src2 + instr->control.uimm, src1);
202 uint32_t src2 = emu_get_gpr_reg(emu, instr->control.src2);
204 if (instr->control.flags == 0x4) {
205 emu_set_gpr_reg(emu, instr->control.src2, src2 + instr->control.uimm);
206 } else if (instr->control.flags && !emu->quiet) {
207 printf("unhandled flags: %x\n", instr->control.flags);
210 emu_set_gpr_reg(emu, instr->control.src1,
211 emu_get_control_reg(emu, src2 + instr->control.uimm));
215 uintptr_t addr = load_store_addr(emu, instr->control.src2) +
216 instr->control.uimm;
218 if (instr->control.flags == 0x4) {
219 uint32_t src2 = emu_get_gpr_reg(emu, instr->control.src2);
220 emu_set_gpr_reg(emu, instr->control.src2, src2 + instr->control.uimm);
221 } else if (instr->control.flags && !emu->quiet) {
222 printf("unhandled flags: %x\n", instr->control.flags);
227 emu_set_gpr_reg(emu, instr->control.src1, val);
232 uintptr_t addr = load_store_addr(emu, instr->control.src2) +
233 instr->control.uimm;
235 if (instr->control.flags == 0x4) {
236 uint32_t src2 = emu_get_gpr_reg(emu, instr->control.src2);
237 emu_set_gpr_reg(emu, instr->control.src2, src2 + instr->control.uimm);
238 } else if (instr->control.flags && !emu->quiet) {
239 printf("unhandled flags: %x\n", instr->control.flags);
242 uint32_t val = emu_get_gpr_reg(emu, instr->control.src1);
249 uint32_t off = emu->gpr_regs.pc + instr->br.ioff;
250 uint32_t src = emu_get_gpr_reg(emu, instr->br.src);
253 if (src != instr->br.bit_or_imm)
256 if (src == instr->br.bit_or_imm)
259 if (!(src & (1 << instr->br.bit_or_imm)))
262 if (src & (1 << instr->br.bit_or_imm))
284 emu->branch_target = instr->call.uoff;
314 afuc_instr *instr = (void *)&emu->instrs[emu->gpr_regs.pc];
326 afuc_get_opc(instr, &opc, &rep);
334 emu_instr(emu, instr);
344 emu_instr(emu, instr);