Lines Matching refs:inst

26 void Interpreter::addi(UGeckoInstruction inst)  in addi()  argument
28 if (inst.RA) in addi()
29 rGPR[inst.RD] = rGPR[inst.RA] + inst.SIMM_16; in addi()
31 rGPR[inst.RD] = inst.SIMM_16; in addi()
34 void Interpreter::addic(UGeckoInstruction inst) in addic() argument
36 u32 a = rGPR[inst.RA]; in addic()
37 u32 imm = (u32)(s32)inst.SIMM_16; in addic()
39 rGPR[inst.RD] = a + imm; in addic()
43 void Interpreter::addic_rc(UGeckoInstruction inst) in addic_rc() argument
45 addic(inst); in addic_rc()
46 Helper_UpdateCR0(rGPR[inst.RD]); in addic_rc()
49 void Interpreter::addis(UGeckoInstruction inst) in addis() argument
51 if (inst.RA) in addis()
52 rGPR[inst.RD] = rGPR[inst.RA] + (inst.SIMM_16 << 16); in addis()
54 rGPR[inst.RD] = (inst.SIMM_16 << 16); in addis()
57 void Interpreter::andi_rc(UGeckoInstruction inst) in andi_rc() argument
59 rGPR[inst.RA] = rGPR[inst.RS] & inst.UIMM; in andi_rc()
60 Helper_UpdateCR0(rGPR[inst.RA]); in andi_rc()
63 void Interpreter::andis_rc(UGeckoInstruction inst) in andis_rc() argument
65 rGPR[inst.RA] = rGPR[inst.RS] & ((u32)inst.UIMM << 16); in andis_rc()
66 Helper_UpdateCR0(rGPR[inst.RA]); in andis_rc()
69 void Interpreter::cmpi(UGeckoInstruction inst) in cmpi() argument
71 const s32 a = static_cast<s32>(rGPR[inst.RA]); in cmpi()
72 const s32 b = inst.SIMM_16; in cmpi()
85 PowerPC::ppcState.cr.SetField(inst.CRFD, f); in cmpi()
88 void Interpreter::cmpli(UGeckoInstruction inst) in cmpli() argument
90 const u32 a = rGPR[inst.RA]; in cmpli()
91 const u32 b = inst.UIMM; in cmpli()
104 PowerPC::ppcState.cr.SetField(inst.CRFD, f); in cmpli()
107 void Interpreter::mulli(UGeckoInstruction inst) in mulli() argument
109 rGPR[inst.RD] = (s32)rGPR[inst.RA] * inst.SIMM_16; in mulli()
112 void Interpreter::ori(UGeckoInstruction inst) in ori() argument
114 rGPR[inst.RA] = rGPR[inst.RS] | inst.UIMM; in ori()
117 void Interpreter::oris(UGeckoInstruction inst) in oris() argument
119 rGPR[inst.RA] = rGPR[inst.RS] | (inst.UIMM << 16); in oris()
122 void Interpreter::subfic(UGeckoInstruction inst) in subfic() argument
124 s32 immediate = inst.SIMM_16; in subfic()
125 rGPR[inst.RD] = immediate - (int)rGPR[inst.RA]; in subfic()
126 PowerPC::SetCarry((rGPR[inst.RA] == 0) || (Helper_Carry(0 - rGPR[inst.RA], immediate))); in subfic()
129 void Interpreter::twi(UGeckoInstruction inst) in twi() argument
131 s32 a = rGPR[inst.RA]; in twi()
132 s32 b = inst.SIMM_16; in twi()
133 s32 TO = inst.TO; in twi()
146 void Interpreter::xori(UGeckoInstruction inst) in xori() argument
148 rGPR[inst.RA] = rGPR[inst.RS] ^ inst.UIMM; in xori()
151 void Interpreter::xoris(UGeckoInstruction inst) in xoris() argument
153 rGPR[inst.RA] = rGPR[inst.RS] ^ (inst.UIMM << 16); in xoris()
156 void Interpreter::rlwimix(UGeckoInstruction inst) in rlwimix() argument
158 const u32 mask = MakeRotationMask(inst.MB, inst.ME); in rlwimix()
159 rGPR[inst.RA] = (rGPR[inst.RA] & ~mask) | (Common::RotateLeft(rGPR[inst.RS], inst.SH) & mask); in rlwimix()
161 if (inst.Rc) in rlwimix()
162 Helper_UpdateCR0(rGPR[inst.RA]); in rlwimix()
165 void Interpreter::rlwinmx(UGeckoInstruction inst) in rlwinmx() argument
167 const u32 mask = MakeRotationMask(inst.MB, inst.ME); in rlwinmx()
168 rGPR[inst.RA] = Common::RotateLeft(rGPR[inst.RS], inst.SH) & mask; in rlwinmx()
170 if (inst.Rc) in rlwinmx()
171 Helper_UpdateCR0(rGPR[inst.RA]); in rlwinmx()
174 void Interpreter::rlwnmx(UGeckoInstruction inst) in rlwnmx() argument
176 const u32 mask = MakeRotationMask(inst.MB, inst.ME); in rlwnmx()
177 rGPR[inst.RA] = Common::RotateLeft(rGPR[inst.RS], rGPR[inst.RB] & 0x1F) & mask; in rlwnmx()
179 if (inst.Rc) in rlwnmx()
180 Helper_UpdateCR0(rGPR[inst.RA]); in rlwnmx()
183 void Interpreter::andx(UGeckoInstruction inst) in andx() argument
185 rGPR[inst.RA] = rGPR[inst.RS] & rGPR[inst.RB]; in andx()
187 if (inst.Rc) in andx()
188 Helper_UpdateCR0(rGPR[inst.RA]); in andx()
191 void Interpreter::andcx(UGeckoInstruction inst) in andcx() argument
193 rGPR[inst.RA] = rGPR[inst.RS] & ~rGPR[inst.RB]; in andcx()
195 if (inst.Rc) in andcx()
196 Helper_UpdateCR0(rGPR[inst.RA]); in andcx()
199 void Interpreter::cmp(UGeckoInstruction inst) in cmp() argument
201 const s32 a = static_cast<s32>(rGPR[inst.RA]); in cmp()
202 const s32 b = static_cast<s32>(rGPR[inst.RB]); in cmp()
215 PowerPC::ppcState.cr.SetField(inst.CRFD, temp); in cmp()
218 void Interpreter::cmpl(UGeckoInstruction inst) in cmpl() argument
220 const u32 a = rGPR[inst.RA]; in cmpl()
221 const u32 b = rGPR[inst.RB]; in cmpl()
234 PowerPC::ppcState.cr.SetField(inst.CRFD, temp); in cmpl()
237 void Interpreter::cntlzwx(UGeckoInstruction inst) in cntlzwx() argument
239 u32 val = rGPR[inst.RS]; in cntlzwx()
249 rGPR[inst.RA] = i; in cntlzwx()
251 if (inst.Rc) in cntlzwx()
252 Helper_UpdateCR0(rGPR[inst.RA]); in cntlzwx()
255 void Interpreter::eqvx(UGeckoInstruction inst) in eqvx() argument
257 rGPR[inst.RA] = ~(rGPR[inst.RS] ^ rGPR[inst.RB]); in eqvx()
259 if (inst.Rc) in eqvx()
260 Helper_UpdateCR0(rGPR[inst.RA]); in eqvx()
263 void Interpreter::extsbx(UGeckoInstruction inst) in extsbx() argument
265 rGPR[inst.RA] = (u32)(s32)(s8)rGPR[inst.RS]; in extsbx()
267 if (inst.Rc) in extsbx()
268 Helper_UpdateCR0(rGPR[inst.RA]); in extsbx()
271 void Interpreter::extshx(UGeckoInstruction inst) in extshx() argument
273 rGPR[inst.RA] = (u32)(s32)(s16)rGPR[inst.RS]; in extshx()
275 if (inst.Rc) in extshx()
276 Helper_UpdateCR0(rGPR[inst.RA]); in extshx()
287 void Interpreter::norx(UGeckoInstruction inst) in norx() argument
289 rGPR[inst.RA] = ~(rGPR[inst.RS] | rGPR[inst.RB]); in norx()
291 if (inst.Rc) in norx()
292 Helper_UpdateCR0(rGPR[inst.RA]); in norx()
295 void Interpreter::orx(UGeckoInstruction inst) in orx() argument
297 rGPR[inst.RA] = rGPR[inst.RS] | rGPR[inst.RB]; in orx()
299 if (inst.Rc) in orx()
300 Helper_UpdateCR0(rGPR[inst.RA]); in orx()
303 void Interpreter::orcx(UGeckoInstruction inst) in orcx() argument
305 rGPR[inst.RA] = rGPR[inst.RS] | (~rGPR[inst.RB]); in orcx()
307 if (inst.Rc) in orcx()
308 Helper_UpdateCR0(rGPR[inst.RA]); in orcx()
311 void Interpreter::slwx(UGeckoInstruction inst) in slwx() argument
313 u32 amount = rGPR[inst.RB]; in slwx()
314 rGPR[inst.RA] = (amount & 0x20) ? 0 : rGPR[inst.RS] << (amount & 0x1f); in slwx()
316 if (inst.Rc) in slwx()
317 Helper_UpdateCR0(rGPR[inst.RA]); in slwx()
320 void Interpreter::srawx(UGeckoInstruction inst) in srawx() argument
322 int rb = rGPR[inst.RB]; in srawx()
326 if (rGPR[inst.RS] & 0x80000000) in srawx()
328 rGPR[inst.RA] = 0xFFFFFFFF; in srawx()
333 rGPR[inst.RA] = 0x00000000; in srawx()
340 s32 rrs = rGPR[inst.RS]; in srawx()
341 rGPR[inst.RA] = rrs >> amount; in srawx()
346 if (inst.Rc) in srawx()
347 Helper_UpdateCR0(rGPR[inst.RA]); in srawx()
350 void Interpreter::srawix(UGeckoInstruction inst) in srawix() argument
352 int amount = inst.SH; in srawix()
354 s32 rrs = rGPR[inst.RS]; in srawix()
355 rGPR[inst.RA] = rrs >> amount; in srawix()
359 if (inst.Rc) in srawix()
360 Helper_UpdateCR0(rGPR[inst.RA]); in srawix()
363 void Interpreter::srwx(UGeckoInstruction inst) in srwx() argument
365 u32 amount = rGPR[inst.RB]; in srwx()
366 rGPR[inst.RA] = (amount & 0x20) ? 0 : (rGPR[inst.RS] >> (amount & 0x1f)); in srwx()
368 if (inst.Rc) in srwx()
369 Helper_UpdateCR0(rGPR[inst.RA]); in srwx()
372 void Interpreter::tw(UGeckoInstruction inst) in tw() argument
374 s32 a = rGPR[inst.RA]; in tw()
375 s32 b = rGPR[inst.RB]; in tw()
376 s32 TO = inst.TO; in tw()
389 void Interpreter::xorx(UGeckoInstruction inst) in xorx() argument
391 rGPR[inst.RA] = rGPR[inst.RS] ^ rGPR[inst.RB]; in xorx()
393 if (inst.Rc) in xorx()
394 Helper_UpdateCR0(rGPR[inst.RA]); in xorx()
404 void Interpreter::addx(UGeckoInstruction inst) in addx() argument
406 const u32 a = rGPR[inst.RA]; in addx()
407 const u32 b = rGPR[inst.RB]; in addx()
410 rGPR[inst.RD] = result; in addx()
412 if (inst.OE) in addx()
415 if (inst.Rc) in addx()
419 void Interpreter::addcx(UGeckoInstruction inst) in addcx() argument
421 const u32 a = rGPR[inst.RA]; in addcx()
422 const u32 b = rGPR[inst.RB]; in addcx()
425 rGPR[inst.RD] = result; in addcx()
428 if (inst.OE) in addcx()
431 if (inst.Rc) in addcx()
435 void Interpreter::addex(UGeckoInstruction inst) in addex() argument
438 const u32 a = rGPR[inst.RA]; in addex()
439 const u32 b = rGPR[inst.RB]; in addex()
442 rGPR[inst.RD] = result; in addex()
445 if (inst.OE) in addex()
448 if (inst.Rc) in addex()
452 void Interpreter::addmex(UGeckoInstruction inst) in addmex() argument
455 const u32 a = rGPR[inst.RA]; in addmex()
459 rGPR[inst.RD] = result; in addmex()
462 if (inst.OE) in addmex()
465 if (inst.Rc) in addmex()
469 void Interpreter::addzex(UGeckoInstruction inst) in addzex() argument
472 const u32 a = rGPR[inst.RA]; in addzex()
475 rGPR[inst.RD] = result; in addzex()
478 if (inst.OE) in addzex()
481 if (inst.Rc) in addzex()
485 void Interpreter::divwx(UGeckoInstruction inst) in divwx() argument
487 const s32 a = rGPR[inst.RA]; in divwx()
488 const s32 b = rGPR[inst.RB]; in divwx()
494 rGPR[inst.RD] = UINT32_MAX; in divwx()
496 rGPR[inst.RD] = 0; in divwx()
500 rGPR[inst.RD] = static_cast<u32>(a / b); in divwx()
503 if (inst.OE) in divwx()
506 if (inst.Rc) in divwx()
507 Helper_UpdateCR0(rGPR[inst.RD]); in divwx()
510 void Interpreter::divwux(UGeckoInstruction inst) in divwux() argument
512 const u32 a = rGPR[inst.RA]; in divwux()
513 const u32 b = rGPR[inst.RB]; in divwux()
518 rGPR[inst.RD] = 0; in divwux()
522 rGPR[inst.RD] = a / b; in divwux()
525 if (inst.OE) in divwux()
528 if (inst.Rc) in divwux()
529 Helper_UpdateCR0(rGPR[inst.RD]); in divwux()
532 void Interpreter::mulhwx(UGeckoInstruction inst) in mulhwx() argument
534 const s64 a = static_cast<s32>(rGPR[inst.RA]); in mulhwx()
535 const s64 b = static_cast<s32>(rGPR[inst.RB]); in mulhwx()
538 rGPR[inst.RD] = d; in mulhwx()
540 if (inst.Rc) in mulhwx()
544 void Interpreter::mulhwux(UGeckoInstruction inst) in mulhwux() argument
546 const u64 a = rGPR[inst.RA]; in mulhwux()
547 const u64 b = rGPR[inst.RB]; in mulhwux()
550 rGPR[inst.RD] = d; in mulhwux()
552 if (inst.Rc) in mulhwux()
556 void Interpreter::mullwx(UGeckoInstruction inst) in mullwx() argument
558 const s64 a = static_cast<s32>(rGPR[inst.RA]); in mullwx()
559 const s64 b = static_cast<s32>(rGPR[inst.RB]); in mullwx()
562 rGPR[inst.RD] = static_cast<u32>(result); in mullwx()
564 if (inst.OE) in mullwx()
567 if (inst.Rc) in mullwx()
568 Helper_UpdateCR0(rGPR[inst.RD]); in mullwx()
571 void Interpreter::negx(UGeckoInstruction inst) in negx() argument
573 const u32 a = rGPR[inst.RA]; in negx()
575 rGPR[inst.RD] = (~a) + 1; in negx()
577 if (inst.OE) in negx()
580 if (inst.Rc) in negx()
581 Helper_UpdateCR0(rGPR[inst.RD]); in negx()
584 void Interpreter::subfx(UGeckoInstruction inst) in subfx() argument
586 const u32 a = ~rGPR[inst.RA]; in subfx()
587 const u32 b = rGPR[inst.RB]; in subfx()
590 rGPR[inst.RD] = result; in subfx()
592 if (inst.OE) in subfx()
595 if (inst.Rc) in subfx()
599 void Interpreter::subfcx(UGeckoInstruction inst) in subfcx() argument
601 const u32 a = ~rGPR[inst.RA]; in subfcx()
602 const u32 b = rGPR[inst.RB]; in subfcx()
605 rGPR[inst.RD] = result; in subfcx()
608 if (inst.OE) in subfcx()
611 if (inst.Rc) in subfcx()
615 void Interpreter::subfex(UGeckoInstruction inst) in subfex() argument
617 const u32 a = ~rGPR[inst.RA]; in subfex()
618 const u32 b = rGPR[inst.RB]; in subfex()
622 rGPR[inst.RD] = result; in subfex()
625 if (inst.OE) in subfex()
628 if (inst.Rc) in subfex()
633 void Interpreter::subfmex(UGeckoInstruction inst) in subfmex() argument
635 const u32 a = ~rGPR[inst.RA]; in subfmex()
640 rGPR[inst.RD] = result; in subfmex()
643 if (inst.OE) in subfmex()
646 if (inst.Rc) in subfmex()
651 void Interpreter::subfzex(UGeckoInstruction inst) in subfzex() argument
653 const u32 a = ~rGPR[inst.RA]; in subfzex()
657 rGPR[inst.RD] = result; in subfzex()
660 if (inst.OE) in subfzex()
663 if (inst.Rc) in subfzex()