Lines Matching refs:rA
1658 /* Standard effective address calc: (rA + rB) */
1659 static IRExpr* ea_rA_idxd ( UInt rA, UInt rB )
1662 vassert(rA < 32);
1664 return binop(mkSzOp(ty, Iop_Add8), getIReg(rA), getIReg(rB));
1667 /* Standard effective address calc: (rA + simm) */
1668 static IRExpr* ea_rA_simm ( UInt rA, UInt simm16 )
1671 vassert(rA < 32);
1672 return binop(mkSzOp(ty, Iop_Add8), getIReg(rA),
1676 /* Standard effective address calc: (rA|0) */
1677 static IRExpr* ea_rAor0 ( UInt rA )
1680 vassert(rA < 32);
1681 if (rA == 0) {
1684 return getIReg(rA);
1688 /* Standard effective address calc: (rA|0) + rB */
1689 static IRExpr* ea_rAor0_idxd ( UInt rA, UInt rB )
1691 vassert(rA < 32);
1693 return (rA == 0) ? getIReg(rB) : ea_rA_idxd( rA, rB );
1696 /* Standard effective address calc: (rA|0) + simm16 */
1697 static IRExpr* ea_rAor0_simm ( UInt rA, UInt simm16 )
1700 vassert(rA < 32);
1701 if (rA == 0) {
1704 return ea_rA_simm( rA, simm16 );
3378 IRTemp rA = newTemp(ty);
3384 assign( rA, getIReg(rA_addr) );
3385 assign( rB, getIReg(rB_addr) ); // XO-Form: rD, rA, rB
3391 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3394 mkexpr(rD), mkexpr(rA), mkSzExtendS16(ty, uimm16),
3400 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3403 mkexpr(rD), mkexpr(rA), mkSzExtendS16(ty, uimm16),
3411 // la disp(rA) == addi rD,rA,disp
3417 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3429 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3438 binop(Iop_MullS64, mkexpr(rA),
3442 binop(Iop_MullS32, mkexpr(rA),
3448 // rD = simm16 - rA
3451 mkexpr(rA)) );
3453 mkexpr(rD), mkexpr(rA), mkSzExtendS16(ty, uimm16),
3467 mkexpr(rA), mkexpr(rB) ) );
3470 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3479 mkexpr(rA), mkexpr(rB)) );
3481 mkexpr(rD), mkexpr(rA), mkexpr(rB),
3485 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3494 // rD = rA + rB + XER[CA]
3496 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3500 mkexpr(rD), mkexpr(rA), mkexpr(rB),
3504 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3519 // rD = rA + (-1) + XER[CA]
3523 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3527 mkexpr(rD), mkexpr(rA), min_one,
3531 mkexpr(rD), mkexpr(rA), min_one );
3545 // rD = rA + (0) + XER[CA]
3549 mkexpr(rA), mkexpr(old_xer_ca)) );
3551 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0),
3555 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0) );
3572 IRExpr* dividend = mk64lo32Sto64( mkexpr(rA) );
3581 assign( rD, binop(Iop_DivS32, mkexpr(rA), mkexpr(rB)) );
3584 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3603 IRExpr* dividend = mk64lo32Uto64( mkexpr(rA) );
3612 assign( rD, binop(Iop_DivU32, mkexpr(rA), mkexpr(rB)) );
3615 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3633 mk64lo32Sto64( mkexpr(rA) ),
3639 mkexpr(rA), mkexpr(rB))) );
3655 mk64lo32Uto64( mkexpr(rA) ),
3661 mkexpr(rA), mkexpr(rB))) );
3672 IRExpr *a = unop(Iop_64to32, mkexpr(rA) );
3683 mkexpr(rA), mkexpr(rB))) );
3686 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3699 // rD = (~rA) + 1
3701 unop( mkSzOp(ty, Iop_Not8), mkexpr(rA) ),
3705 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3713 // rD = rB - rA
3715 mkexpr(rB), mkexpr(rA)) );
3718 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3726 // rD = rB - rA
3728 mkexpr(rB), mkexpr(rA)) );
3730 mkexpr(rD), mkexpr(rA), mkexpr(rB),
3734 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3743 // rD = (log not)rA + rB + XER[CA]
3746 unop( mkSzOp(ty, Iop_Not8), mkexpr(rA)),
3750 mkexpr(rD), mkexpr(rA), mkexpr(rB),
3754 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3769 // rD = (log not)rA + (-1) + XER[CA]
3774 unop( mkSzOp(ty, Iop_Not8), mkexpr(rA)),
3778 mkexpr(rD), mkexpr(rA), min_one,
3782 mkexpr(rD), mkexpr(rA), min_one );
3796 // rD = (log not)rA + (0) + XER[CA]
3801 mkexpr(rA)), mkexpr(old_xer_ca)) );
3803 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0),
3807 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0) );
3823 mkexpr(rA), mkexpr(rB))) );
3836 mkexpr(rA), mkexpr(rB))) );
3843 assign( rD, binop(Iop_Mul64, mkexpr(rA), mkexpr(rB)) );
3846 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3854 assign( rD, binop(Iop_DivS64, mkexpr(rA), mkexpr(rB)) );
3857 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3869 assign( rD, binop(Iop_DivU64, mkexpr(rA), mkexpr(rB)) );
3872 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3892 dividend = unop( Iop_64to32, mkexpr( rA ) );
3897 dividend = mkexpr( rA );
3927 dividend = unop( Iop_64to32, mkexpr( rA ) );
3932 dividend = mkexpr( rA );
3958 assign( rD, binop(Iop_DivS64E, mkexpr(rA), mkexpr(rB)) );
3961 mkexpr( rA ), mkexpr( rB ) );
3970 assign( rD, binop(Iop_DivU64E, mkexpr(rA), mkexpr(rB)) );
3973 mkexpr( rA ), mkexpr( rB ) );
4134 IRTemp rA = newTemp(ty);
4145 assign( rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
4153 assign( rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
4161 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
4167 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
4173 assign( rA, binop( mkSzOp(ty, Iop_Xor8), mkexpr(rS),
4179 assign( rA, binop( mkSzOp(ty, Iop_Xor8), mkexpr(rS),
4191 assign(rA, binop( mkSzOp(ty, Iop_And8),
4198 assign(rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
4217 assign(rA, mkWidenFrom32(ty,
4223 // TODO: alternatively: assign(rA, verbose_Clz32(rS));
4230 assign( rA, unop( mkSzOp(ty, Iop_Not8),
4243 assign( rA, unop(Iop_8Sto64, unop(Iop_64to8, mkexpr(rS))) );
4245 assign( rA, unop(Iop_8Sto32, unop(Iop_32to8, mkexpr(rS))) );
4256 assign( rA, unop(Iop_16Sto64,
4259 assign( rA, unop(Iop_16Sto32,
4266 assign( rA, unop( mkSzOp(ty, Iop_Not8),
4274 assign( rA, unop( mkSzOp(ty, Iop_Not8),
4282 assign( rA, mkexpr(rS) );
4286 assign( rA, binop( mkSzOp(ty, Iop_Or8),
4294 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
4301 assign( rA, binop( mkSzOp(ty, Iop_Xor8),
4313 assign(rA, unop(Iop_32Sto64, unop(Iop_64to32, mkexpr(rS))));
4325 assign(rA, IRExpr_ITE( irx,
4328 // TODO: alternatively: assign(rA, verbose_Clz64(rS));
4335 assign( rA, unop( Iop_V128to64,
4341 assign( rA, unop( Iop_V128to32,
4354 assign( rA, unop( Iop_ReinterpF64asI64, mkexpr(frB)) );
4356 assign( rA, unop( Iop_64to32, unop( Iop_ReinterpF64asI64, mkexpr(frB))) );
4358 putIReg( rS_addr, mkexpr(rA));
4488 putIReg( rA_addr, mkexpr(rA) );
4491 set_CR0( mkexpr(rA) );
4511 IRTemp rA = newTemp(ty);
4572 assign( rA, unop(Iop_32Uto64,
4575 assign( rA, mkexpr(iTot4) );
4610 assign( rA, binop(Iop_32HLto64, mkexpr(iHi), mkexpr(iLo)) );
4612 assign( rA, binop(Iop_Or32, mkU32(0), mkexpr(iLo)) );
4619 putIReg( rA_addr, mkexpr(rA) );
4645 IRTemp rA = newTemp(ty);
4662 // rA = ((tmp32 || tmp32) & mask64) | (rA & ~mask64)
4668 assign( rA,
4674 // rA = (ROTL(rS, Imm) & mask) | (rA & ~mask);
4677 assign( rA,
4697 // rA = ((tmp32 || tmp32) & mask64)
4704 assign( rA, binop(Iop_And64, mkexpr(rot), mkU64(mask64)) );
4712 assign( rA, binop(Iop_Shl32, mkexpr(rS), mkU8(sh_imm)) );
4719 assign( rA, binop(Iop_Shr32, mkexpr(rS), mkU8(MaskBeg)) );
4726 // rA = ROTL(rS, Imm) & mask
4727 assign( rA, binop(Iop_And32,
4743 rA = ((tmp32 || tmp32) & mask64)
4750 assign( rA, binop(Iop_And64, mkexpr(rot), mkU64(mask64)) );
4753 // rA = ROTL(rS, rB[0-4]) & mask
4755 assign( rA, binop(Iop_And32,
4781 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4787 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4797 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4804 assign(rA, r & m);
4814 assign( rA, binop(Iop_Shr64, mkexpr(rS), mkU8(msk_imm)) );
4820 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4831 assign( rA, binop(Iop_Shl64, mkexpr(rS), mkU8(sh_imm)) );
4837 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4848 assign( rA, binop(Iop_Or64,
4866 putIReg( rA_addr, mkexpr(rA) );
4869 set_CR0( mkexpr(rA) );
6671 IRTemp rA = newTemp(ty);
6689 /* rA = rS << rB */
6706 assign( rA, mkWidenFrom32(ty, e_tmp, /* Signed */False) );
6716 rA = Sar32( rS, amt > 31 ? 31 : amt )
6729 assign( rA, mkWidenFrom32(ty, e_tmp, /* Signed */True) );
6732 mkexpr(rA),
6744 assign( rA, binop(Iop_Sar64,
6749 assign( rA, binop(Iop_Sar32, mkexpr(rS_lo32),
6754 mkexpr(rA),
6763 /* rA = rS >>u rB */
6782 assign( rA, mkWidenFrom32(ty, e_tmp, /* Signed */False) );
6790 /* rA = rS << rB */
6796 assign( rA,
6814 rA = Sar64( rS, amt > 63 ? 63 : amt )
6820 assign( rA,
6829 mkexpr(rA), mkexpr(rS), mkexpr(sh_amt),
6839 assign( rA, binop(Iop_Sar64, getIReg(rS_addr), mkU8(sh_imm)) );
6842 mkexpr(rA),
6851 /* rA = rS >>u rB */
6857 assign( rA,
6879 putIReg( rA_addr, mkexpr(rA) );
6882 set_CR0( mkexpr(rA) );
7347 IRTemp rA = newTemp(ty);
7356 assign( rA, getIReg(rA_addr) );
7359 putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( rA ), mkU64( 0 ) ) );
7364 mkexpr( rA ) ),
7373 IRTemp rA = newTemp( Ity_I32 );
7383 assign( rA, unop( Iop_64to32, getIReg( rA_addr ) ) );
7385 assign( rA, getIReg(rA_addr) );
7388 unop( Iop_32Sto64, mkexpr( rA ) ),
7397 IRTemp rA = newTemp( Ity_I32 );
7407 assign( rA, unop( Iop_64to32, getIReg( rA_addr ) ) );
7409 assign( rA, getIReg(rA_addr) );
7412 binop( Iop_32HLto64, mkU32( 0 ), mkexpr ( rA ) ),
7504 /* Clear all bytes in cache block at (rA|0) + rB. */
7548 block at (rA|0) + rB. */
7742 IRTemp rA = newTemp(ty);
7747 assign( rA, getIReg(rA_addr) );
7881 IRTemp rA = newTemp(ty);
7885 assign( rA, getIReg(rA_addr) );
19959 UInt rA = ifieldRegA( theInstr );
19965 rA == 0 ? (mode64 ? mkU64(0) : mkU32(0))
19966 : getIReg(rA),
19970 DIP("isel r%u,r%u,r%u,crb%u\n", rT,rA,rB,bi);