Home | History | Annotate | Download | only in priv

Lines Matching refs:rA

286 /* Extract RA (1st source register) field, instr[20:16] */
1444 /* Standard effective address calc: (rA + rB) */
1445 static IRExpr* ea_rA_idxd ( UInt rA, UInt rB )
1448 vassert(rA < 32);
1450 return binop(mkSzOp(ty, Iop_Add8), getIReg(rA), getIReg(rB));
1453 /* Standard effective address calc: (rA + simm) */
1454 static IRExpr* ea_rA_simm ( UInt rA, UInt simm16 )
1457 vassert(rA < 32);
1458 return binop(mkSzOp(ty, Iop_Add8), getIReg(rA),
1462 /* Standard effective address calc: (rA|0) */
1463 static IRExpr* ea_rAor0 ( UInt rA )
1466 vassert(rA < 32);
1467 if (rA == 0) {
1470 return getIReg(rA);
1474 /* Standard effective address calc: (rA|0) + rB */
1475 static IRExpr* ea_rAor0_idxd ( UInt rA, UInt rB )
1477 vassert(rA < 32);
1479 return (rA == 0) ? getIReg(rB) : ea_rA_idxd( rA, rB );
1482 /* Standard effective address calc: (rA|0) + simm16 */
1483 static IRExpr* ea_rAor0_simm ( UInt rA, UInt simm16 )
1486 vassert(rA < 32);
1487 if (rA == 0) {
1490 return ea_rA_simm( rA, simm16 );
3004 IRTemp rA = newTemp(ty);
3010 assign( rA, getIReg(rA_addr) );
3011 assign( rB, getIReg(rB_addr) ); // XO-Form: rD, rA, rB
3017 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3020 mkexpr(rD), mkexpr(rA), mkSzExtendS16(ty, uimm16),
3026 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3029 mkexpr(rD), mkexpr(rA), mkSzExtendS16(ty, uimm16),
3037 // la disp(rA) == addi rD,rA,disp
3043 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3055 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3064 binop(Iop_MullS64, mkexpr(rA),
3068 binop(Iop_MullS32, mkexpr(rA),
3074 // rD = simm16 - rA
3077 mkexpr(rA)) );
3079 mkexpr(rD), mkexpr(rA), mkSzExtendS16(ty, uimm16),
3093 mkexpr(rA), mkexpr(rB) ) );
3096 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3105 mkexpr(rA), mkexpr(rB)) );
3107 mkexpr(rD), mkexpr(rA), mkexpr(rB),
3111 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3120 // rD = rA + rB + XER[CA]
3122 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3126 mkexpr(rD), mkexpr(rA), mkexpr(rB),
3130 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3145 // rD = rA + (-1) + XER[CA]
3149 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3153 mkexpr(rD), mkexpr(rA), min_one,
3157 mkexpr(rD), mkexpr(rA), min_one );
3171 // rD = rA + (0) + XER[CA]
3175 mkexpr(rA), mkexpr(old_xer_ca)) );
3177 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0),
3181 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0) );
3198 IRExpr* dividend = mk64lo32Sto64( mkexpr(rA) );
3207 assign( rD, binop(Iop_DivS32, mkexpr(rA), mkexpr(rB)) );
3210 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3229 IRExpr* dividend = mk64lo32Uto64( mkexpr(rA) );
3238 assign( rD, binop(Iop_DivU32, mkexpr(rA), mkexpr(rB)) );
3241 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3259 mk64lo32Sto64( mkexpr(rA) ),
3265 mkexpr(rA), mkexpr(rB))) );
3281 mk64lo32Uto64( mkexpr(rA) ),
3287 mkexpr(rA), mkexpr(rB))) );
3298 IRExpr *a = unop(Iop_64to32, mkexpr(rA) );
3309 mkexpr(rA), mkexpr(rB))) );
3312 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3325 // rD = (~rA) + 1
3327 unop( mkSzOp(ty, Iop_Not8), mkexpr(rA) ),
3331 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3339 // rD = rB - rA
3341 mkexpr(rB), mkexpr(rA)) );
3344 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3352 // rD = rB - rA
3354 mkexpr(rB), mkexpr(rA)) );
3356 mkexpr(rD), mkexpr(rA), mkexpr(rB),
3360 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3369 // rD = (log not)rA + rB + XER[CA]
3372 unop( mkSzOp(ty, Iop_Not8), mkexpr(rA)),
3376 mkexpr(rD), mkexpr(rA), mkexpr(rB),
3380 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3395 // rD = (log not)rA + (-1) + XER[CA]
3400 unop( mkSzOp(ty, Iop_Not8), mkexpr(rA)),
3404 mkexpr(rD), mkexpr(rA), min_one,
3408 mkexpr(rD), mkexpr(rA), min_one );
3422 // rD = (log not)rA + (0) + XER[CA]
3427 mkexpr(rA)), mkexpr(old_xer_ca)) );
3429 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0),
3433 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0) );
3449 mkexpr(rA), mkexpr(rB))) );
3462 mkexpr(rA), mkexpr(rB))) );
3469 assign( rD, binop(Iop_Mul64, mkexpr(rA), mkexpr(rB)) );
3472 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3480 assign( rD, binop(Iop_DivS64, mkexpr(rA), mkexpr(rB)) );
3483 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3495 assign( rD, binop(Iop_DivU64, mkexpr(rA), mkexpr(rB)) );
3498 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3506 * If (RA) >= (RB), or if an attempt is made to perform the division
3518 dividend = unop( Iop_64to32, mkexpr( rA ) );
3523 dividend = mkexpr( rA );
3553 dividend = unop( Iop_64to32, mkexpr( rA ) );
3558 dividend = mkexpr( rA );
3584 assign( rD, binop(Iop_DivS64E, mkexpr(rA), mkexpr(rB)) );
3587 mkexpr( rA ), mkexpr( rB ) );
3596 assign( rD, binop(Iop_DivU64E, mkexpr(rA), mkexpr(rB)) );
3599 mkexpr( rA ), mkexpr( rB ) );
3760 IRTemp rA = newTemp(ty);
3771 assign( rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
3779 assign( rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
3787 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
3793 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
3799 assign( rA, binop( mkSzOp(ty, Iop_Xor8), mkexpr(rS),
3805 assign( rA, binop( mkSzOp(ty, Iop_Xor8), mkexpr(rS),
3817 assign(rA, binop( mkSzOp(ty, Iop_And8),
3824 assign(rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
3843 assign(rA, mkWidenFrom32(ty,
3849 // TODO: alternatively: assign(rA, verbose_Clz32(rS));
3856 assign( rA, unop( mkSzOp(ty, Iop_Not8),
3869 assign( rA, unop(Iop_8Sto64, unop(Iop_64to8, mkexpr(rS))) );
3871 assign( rA, unop(Iop_8Sto32, unop(Iop_32to8, mkexpr(rS))) );
3882 assign( rA, unop(Iop_16Sto64,
3885 assign( rA, unop(Iop_16Sto32,
3892 assign( rA, unop( mkSzOp(ty, Iop_Not8),
3900 assign( rA, unop( mkSzOp(ty, Iop_Not8),
3908 assign( rA, mkexpr(rS) );
3912 assign( rA, binop( mkSzOp(ty, Iop_Or8),
3920 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
3927 assign( rA, binop( mkSzOp(ty, Iop_Xor8),
3939 assign(rA, unop(Iop_32Sto64, unop(Iop_64to32, mkexpr(rS))));
3951 assign(rA, IRExpr_Mux0X( unop(Iop_1Uto8, irx),
3954 // TODO: alternatively: assign(rA, verbose_Clz64(rS));
3961 assign( rA, unop( Iop_V128to64,
3967 assign( rA, unop( Iop_V128to32,
3980 assign( rA, unop( Iop_ReinterpF64asI64, mkexpr(frB)) );
3982 assign( rA, unop( Iop_64to32, unop( Iop_ReinterpF64asI64, mkexpr(frB))) );
3984 putIReg( rS_addr, mkexpr(rA));
4114 putIReg( rA_addr, mkexpr(rA) );
4117 set_CR0( mkexpr(rA) );
4137 IRTemp rA = newTemp(ty);
4198 assign( rA, unop(Iop_32Uto64,
4201 assign( rA, mkexpr(iTot4) );
4236 assign( rA, binop(Iop_32HLto64, mkexpr(iHi), mkexpr(iLo)) );
4238 assign( rA, binop(Iop_Or32, mkU32(0), mkexpr(iLo)) );
4245 putIReg( rA_addr, mkexpr(rA) );
4271 IRTemp rA = newTemp(ty);
4288 // rA = ((tmp32 || tmp32) & mask64) | (rA & ~mask64)
4294 assign( rA,
4300 // rA = (ROTL(rS, Imm) & mask) | (rA & ~mask);
4303 assign( rA,
4323 // rA = ((tmp32 || tmp32) & mask64)
4330 assign( rA, binop(Iop_And64, mkexpr(rot), mkU64(mask64)) );
4338 assign( rA, binop(Iop_Shl32, mkexpr(rS), mkU8(sh_imm)) );
4345 assign( rA, binop(Iop_Shr32, mkexpr(rS), mkU8(MaskBeg)) );
4352 // rA = ROTL(rS, Imm) & mask
4353 assign( rA, binop(Iop_And32,
4369 rA = ((tmp32 || tmp32) & mask64)
4376 assign( rA, binop(Iop_And64, mkexpr(rot), mkU64(mask64)) );
4379 // rA = ROTL(rS, rB[0-4]) & mask
4381 assign( rA, binop(Iop_And32,
4407 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4413 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4423 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4430 assign(rA, r & m);
4440 assign( rA, binop(Iop_Shr64, mkexpr(rS), mkU8(msk_imm)) );
4446 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4457 assign( rA, binop(Iop_Shl64, mkexpr(rS), mkU8(sh_imm)) );
4463 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4474 assign( rA, binop(Iop_Or64,
4492 putIReg( rA_addr, mkexpr(rA) );
4495 set_CR0( mkexpr(rA) );
5116 /* NB: does not reject the case where RA is in the range of
5137 /* NB: does not reject the case where RA is in the range of
6029 IRTemp rA = newTemp(ty);
6047 /* rA = rS << rB */
6064 assign( rA, mkWidenFrom32(ty, e_tmp, /* Signed */False) );
6074 rA = Sar32( rS, amt > 31 ? 31 : amt )
6089 assign( rA, mkWidenFrom32(ty, e_tmp, /* Signed */True) );
6092 mkexpr(rA),
6104 assign( rA, binop(Iop_Sar64,
6109 assign( rA, binop(Iop_Sar32, mkexpr(rS_lo32),
6114 mkexpr(rA),
6123 /* rA = rS >>u rB */
6142 assign( rA, mkWidenFrom32(ty, e_tmp, /* Signed */False) );
6150 /* rA = rS << rB */
6156 assign( rA,
6174 rA = Sar64( rS, amt > 63 ? 63 : amt )
6182 assign( rA,
6191 mkexpr(rA), mkexpr(rS), mkexpr(sh_amt),
6201 assign( rA, binop(Iop_Sar64, getIReg(rS_addr), mkU8(sh_imm)) );
6204 mkexpr(rA),
6213 /* rA = rS >>u rB */
6219 assign( rA,
6241 putIReg( rA_addr, mkexpr(rA) );
6244 set_CR0( mkexpr(rA) );
6709 /* Clear all bytes in cache block at (rA|0) + rB. */
6753 block at (rA|0) + rB. */
6947 IRTemp rA = newTemp(ty);
6952 assign( rA, getIReg(rA_addr) );
7086 IRTemp rA = newTemp(ty);
7090 assign( rA, getIReg(rA_addr) );
17469 UInt rA = ifieldRegA( theInstr );
17476 rA == 0 ? (mode64 ? mkU64(0) : mkU32(0))
17477 : getIReg(rA) )
17479 DIP("isel r%u,r%u,r%u,crb%u\n", rT,rA,rB,bi);