Lines Matching defs:rA
1550 /* Standard effective address calc: (rA + rB) */
1551 static IRExpr* ea_rA_idxd ( UInt rA, UInt rB )
1554 vassert(rA < 32);
1556 return binop(mkSzOp(ty, Iop_Add8), getIReg(rA), getIReg(rB));
1559 /* Standard effective address calc: (rA + simm) */
1560 static IRExpr* ea_rA_simm ( UInt rA, UInt simm16 )
1563 vassert(rA < 32);
1564 return binop(mkSzOp(ty, Iop_Add8), getIReg(rA),
1568 /* Standard effective address calc: (rA|0) */
1569 static IRExpr* ea_rAor0 ( UInt rA )
1572 vassert(rA < 32);
1573 if (rA == 0) {
1576 return getIReg(rA);
1580 /* Standard effective address calc: (rA|0) + rB */
1581 static IRExpr* ea_rAor0_idxd ( UInt rA, UInt rB )
1583 vassert(rA < 32);
1585 return (rA == 0) ? getIReg(rB) : ea_rA_idxd( rA, rB );
1588 /* Standard effective address calc: (rA|0) + simm16 */
1589 static IRExpr* ea_rAor0_simm ( UInt rA, UInt simm16 )
1592 vassert(rA < 32);
1593 if (rA == 0) {
1596 return ea_rA_simm( rA, simm16 );
3222 IRTemp rA = newTemp(ty);
3228 assign( rA, getIReg(rA_addr) );
3229 assign( rB, getIReg(rB_addr) ); // XO-Form: rD, rA, rB
3235 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3238 mkexpr(rD), mkexpr(rA), mkSzExtendS16(ty, uimm16),
3244 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3247 mkexpr(rD), mkexpr(rA), mkSzExtendS16(ty, uimm16),
3255 // la disp(rA) == addi rD,rA,disp
3261 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3273 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3282 binop(Iop_MullS64, mkexpr(rA),
3286 binop(Iop_MullS32, mkexpr(rA),
3292 // rD = simm16 - rA
3295 mkexpr(rA)) );
3297 mkexpr(rD), mkexpr(rA), mkSzExtendS16(ty, uimm16),
3311 mkexpr(rA), mkexpr(rB) ) );
3314 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3323 mkexpr(rA), mkexpr(rB)) );
3325 mkexpr(rD), mkexpr(rA), mkexpr(rB),
3329 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3338 // rD = rA + rB + XER[CA]
3340 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3344 mkexpr(rD), mkexpr(rA), mkexpr(rB),
3348 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3363 // rD = rA + (-1) + XER[CA]
3367 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3371 mkexpr(rD), mkexpr(rA), min_one,
3375 mkexpr(rD), mkexpr(rA), min_one );
3389 // rD = rA + (0) + XER[CA]
3393 mkexpr(rA), mkexpr(old_xer_ca)) );
3395 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0),
3399 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0) );
3416 IRExpr* dividend = mk64lo32Sto64( mkexpr(rA) );
3425 assign( rD, binop(Iop_DivS32, mkexpr(rA), mkexpr(rB)) );
3428 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3447 IRExpr* dividend = mk64lo32Uto64( mkexpr(rA) );
3456 assign( rD, binop(Iop_DivU32, mkexpr(rA), mkexpr(rB)) );
3459 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3477 mk64lo32Sto64( mkexpr(rA) ),
3483 mkexpr(rA), mkexpr(rB))) );
3499 mk64lo32Uto64( mkexpr(rA) ),
3505 mkexpr(rA), mkexpr(rB))) );
3516 IRExpr *a = unop(Iop_64to32, mkexpr(rA) );
3527 mkexpr(rA), mkexpr(rB))) );
3530 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3543 // rD = (~rA) + 1
3545 unop( mkSzOp(ty, Iop_Not8), mkexpr(rA) ),
3549 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3557 // rD = rB - rA
3559 mkexpr(rB), mkexpr(rA)) );
3562 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3570 // rD = rB - rA
3572 mkexpr(rB), mkexpr(rA)) );
3574 mkexpr(rD), mkexpr(rA), mkexpr(rB),
3578 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3587 // rD = (log not)rA + rB + XER[CA]
3590 unop( mkSzOp(ty, Iop_Not8), mkexpr(rA)),
3594 mkexpr(rD), mkexpr(rA), mkexpr(rB),
3598 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3613 // rD = (log not)rA + (-1) + XER[CA]
3618 unop( mkSzOp(ty, Iop_Not8), mkexpr(rA)),
3622 mkexpr(rD), mkexpr(rA), min_one,
3626 mkexpr(rD), mkexpr(rA), min_one );
3640 // rD = (log not)rA + (0) + XER[CA]
3645 mkexpr(rA)), mkexpr(old_xer_ca)) );
3647 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0),
3651 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0) );
3667 mkexpr(rA), mkexpr(rB))) );
3680 mkexpr(rA), mkexpr(rB))) );
3687 assign( rD, binop(Iop_Mul64, mkexpr(rA), mkexpr(rB)) );
3690 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3698 assign( rD, binop(Iop_DivS64, mkexpr(rA), mkexpr(rB)) );
3701 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3713 assign( rD, binop(Iop_DivU64, mkexpr(rA), mkexpr(rB)) );
3716 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3736 dividend = unop( Iop_64to32, mkexpr( rA ) );
3741 dividend = mkexpr( rA );
3771 dividend = unop( Iop_64to32, mkexpr( rA ) );
3776 dividend = mkexpr( rA );
3802 assign( rD, binop(Iop_DivS64E, mkexpr(rA), mkexpr(rB)) );
3805 mkexpr( rA ), mkexpr( rB ) );
3814 assign( rD, binop(Iop_DivU64E, mkexpr(rA), mkexpr(rB)) );
3817 mkexpr( rA ), mkexpr( rB ) );
3978 IRTemp rA = newTemp(ty);
3989 assign( rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
3997 assign( rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
4005 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
4011 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
4017 assign( rA, binop( mkSzOp(ty, Iop_Xor8), mkexpr(rS),
4023 assign( rA, binop( mkSzOp(ty, Iop_Xor8), mkexpr(rS),
4035 assign(rA, binop( mkSzOp(ty, Iop_And8),
4042 assign(rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
4061 assign(rA, mkWidenFrom32(ty,
4067 // TODO: alternatively: assign(rA, verbose_Clz32(rS));
4074 assign( rA, unop( mkSzOp(ty, Iop_Not8),
4087 assign( rA, unop(Iop_8Sto64, unop(Iop_64to8, mkexpr(rS))) );
4089 assign( rA, unop(Iop_8Sto32, unop(Iop_32to8, mkexpr(rS))) );
4100 assign( rA, unop(Iop_16Sto64,
4103 assign( rA, unop(Iop_16Sto32,
4110 assign( rA, unop( mkSzOp(ty, Iop_Not8),
4118 assign( rA, unop( mkSzOp(ty, Iop_Not8),
4126 assign( rA, mkexpr(rS) );
4130 assign( rA, binop( mkSzOp(ty, Iop_Or8),
4138 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
4145 assign( rA, binop( mkSzOp(ty, Iop_Xor8),
4157 assign(rA, unop(Iop_32Sto64, unop(Iop_64to32, mkexpr(rS))));
4169 assign(rA, IRExpr_ITE( irx,
4172 // TODO: alternatively: assign(rA, verbose_Clz64(rS));
4179 assign( rA, unop( Iop_V128to64,
4185 assign( rA, unop( Iop_V128to32,
4198 assign( rA, unop( Iop_ReinterpF64asI64, mkexpr(frB)) );
4200 assign( rA, unop( Iop_64to32, unop( Iop_ReinterpF64asI64, mkexpr(frB))) );
4202 putIReg( rS_addr, mkexpr(rA));
4332 putIReg( rA_addr, mkexpr(rA) );
4335 set_CR0( mkexpr(rA) );
4355 IRTemp rA = newTemp(ty);
4416 assign( rA, unop(Iop_32Uto64,
4419 assign( rA, mkexpr(iTot4) );
4454 assign( rA, binop(Iop_32HLto64, mkexpr(iHi), mkexpr(iLo)) );
4456 assign( rA, binop(Iop_Or32, mkU32(0), mkexpr(iLo)) );
4463 putIReg( rA_addr, mkexpr(rA) );
4489 IRTemp rA = newTemp(ty);
4506 // rA = ((tmp32 || tmp32) & mask64) | (rA & ~mask64)
4512 assign( rA,
4518 // rA = (ROTL(rS, Imm) & mask) | (rA & ~mask);
4521 assign( rA,
4541 // rA = ((tmp32 || tmp32) & mask64)
4548 assign( rA, binop(Iop_And64, mkexpr(rot), mkU64(mask64)) );
4556 assign( rA, binop(Iop_Shl32, mkexpr(rS), mkU8(sh_imm)) );
4563 assign( rA, binop(Iop_Shr32, mkexpr(rS), mkU8(MaskBeg)) );
4570 // rA = ROTL(rS, Imm) & mask
4571 assign( rA, binop(Iop_And32,
4587 rA = ((tmp32 || tmp32) & mask64)
4594 assign( rA, binop(Iop_And64, mkexpr(rot), mkU64(mask64)) );
4597 // rA = ROTL(rS, rB[0-4]) & mask
4599 assign( rA, binop(Iop_And32,
4625 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4631 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4641 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4648 assign(rA, r & m);
4658 assign( rA, binop(Iop_Shr64, mkexpr(rS), mkU8(msk_imm)) );
4664 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4675 assign( rA, binop(Iop_Shl64, mkexpr(rS), mkU8(sh_imm)) );
4681 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4692 assign( rA, binop(Iop_Or64,
4710 putIReg( rA_addr, mkexpr(rA) );
4713 set_CR0( mkexpr(rA) );
6387 IRTemp rA = newTemp(ty);
6405 /* rA = rS << rB */
6422 assign( rA, mkWidenFrom32(ty, e_tmp, /* Signed */False) );
6432 rA = Sar32( rS, amt > 31 ? 31 : amt )
6445 assign( rA, mkWidenFrom32(ty, e_tmp, /* Signed */True) );
6448 mkexpr(rA),
6460 assign( rA, binop(Iop_Sar64,
6465 assign( rA, binop(Iop_Sar32, mkexpr(rS_lo32),
6470 mkexpr(rA),
6479 /* rA = rS >>u rB */
6498 assign( rA, mkWidenFrom32(ty, e_tmp, /* Signed */False) );
6506 /* rA = rS << rB */
6512 assign( rA,
6530 rA = Sar64( rS, amt > 63 ? 63 : amt )
6536 assign( rA,
6545 mkexpr(rA), mkexpr(rS), mkexpr(sh_amt),
6555 assign( rA, binop(Iop_Sar64, getIReg(rS_addr), mkU8(sh_imm)) );
6558 mkexpr(rA),
6567 /* rA = rS >>u rB */
6573 assign( rA,
6595 putIReg( rA_addr, mkexpr(rA) );
6598 set_CR0( mkexpr(rA) );
7055 IRTemp rA = newTemp(ty);
7064 assign( rA, getIReg(rA_addr) );
7067 putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( rA ), mkU64( 0 ) ) );
7072 mkexpr( rA ) ),
7081 IRTemp rA = newTemp( Ity_I32 );
7091 assign( rA, unop( Iop_64to32, getIReg( rA_addr ) ) );
7093 assign( rA, getIReg(rA_addr) );
7096 unop( Iop_32Sto64, mkexpr( rA ) ),
7105 IRTemp rA = newTemp( Ity_I32 );
7115 assign( rA, unop( Iop_64to32, getIReg( rA_addr ) ) );
7117 assign( rA, getIReg(rA_addr) );
7120 binop( Iop_32HLto64, mkU32( 0 ), mkexpr ( rA ) ),
7212 /* Clear all bytes in cache block at (rA|0) + rB. */
7256 block at (rA|0) + rB. */
7450 IRTemp rA = newTemp(ty);
7455 assign( rA, getIReg(rA_addr) );
7589 IRTemp rA = newTemp(ty);
7593 assign( rA, getIReg(rA_addr) );
19568 UInt rA = ifieldRegA( theInstr );
19574 rA == 0 ? (mode64 ? mkU64(0) : mkU32(0))
19575 : getIReg(rA),
19579 DIP("isel r%u,r%u,r%u,crb%u\n", rT,rA,rB,bi);