Home | History | Annotate | Download | only in priv

Lines Matching refs:rD

278 /* Extract RD (destination register) field, instr[25:21] */
323 /* Extract RC (3rd source register) field, instr[10:6] */
328 /* Extract XC (3rd source register) field, instr[3,10:6] */
3224 IRTemp rD = newTemp(ty);
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),
3254 // li rD,val == addi rD,0,val
3255 // la disp(rA) == addi rD,rA,disp
3258 assign( rD, mkSzExtendS16(ty, uimm16) );
3261 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3267 // lis rD,val == addis rD,0,val
3270 assign( rD, mkSzExtendS32(ty, uimm16 << 16) );
3273 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3281 assign( rD, unop(Iop_128to64,
3285 assign( rD, unop(Iop_64to32,
3292 // rD = simm16 - rA
3293 assign( rD, binop( mkSzOp(ty, Iop_Sub8),
3297 mkexpr(rD), mkexpr(rA), mkSzExtendS16(ty, uimm16),
3310 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3314 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3322 assign( rD, binop( mkSzOp(ty, Iop_Add8),
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]
3392 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3395 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0),
3399 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0) );
3414 /* rD[hi32] are undefined: setting them to sign of lo32
3418 assign( rD, mk64lo32Uto64( binop(Iop_DivS64, dividend,
3422 mkexpr(rD), dividend, divisor );
3425 assign( rD, binop(Iop_DivS32, mkexpr(rA), mkexpr(rB)) );
3428 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3433 => rD=undef, if(flag_rC) CR7=undef, if(flag_OE) XER_OV=1
3449 assign( rD, mk64lo32Uto64( binop(Iop_DivU64, dividend,
3453 mkexpr(rD), dividend, divisor );
3456 assign( rD, binop(Iop_DivU32, mkexpr(rA), mkexpr(rB)) );
3459 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3473 /* rD[hi32] are undefined: setting them to sign of lo32
3475 assign( rD, binop(Iop_Sar64,
3481 assign( rD, unop(Iop_64HIto32,
3495 /* rD[hi32] are undefined: setting them to sign of lo32
3497 assign( rD, binop(Iop_Sar64,
3503 assign( rD, unop(Iop_64HIto32,
3514 /* rD[hi32] are undefined: setting them to sign of lo32
3518 assign( rD, binop(Iop_MullS32, a, b) );
3521 mkexpr(rD),
3525 assign( rD, unop(Iop_64to32,
3530 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3543 // rD = (~rA) + 1
3544 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3549 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3557 // rD = rB - rA
3558 assign( rD, binop( mkSzOp(ty, Iop_Sub8),
3562 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3570 // rD = rB - rA
3571 assign( rD, binop( mkSzOp(ty, Iop_Sub8),
3574 mkexpr(rD), mkexpr(rA), mkexpr(rB),
3578 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3587 // rD = (log not)rA + rB + XER[CA]
3589 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3594 mkexpr(rD), mkexpr(rA), mkexpr(rB),
3598 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3613 // rD = (log not)rA + (-1) + XER[CA]
3617 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3622 mkexpr(rD), mkexpr(rA), min_one,
3626 mkexpr(rD), mkexpr(rA), min_one );
3640 // rD = (log not)rA + (0) + XER[CA]
3643 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3647 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0),
3651 mkexpr(rD), mkexpr(rA), mkSzImm(ty, 0) );
3665 assign( rD, unop(Iop_128HIto64,
3678 assign( rD, unop(Iop_128HIto64,
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) );
3706 => rD=undef, if(flag_rC) CR7=undef, if(flag_OE) XER_OV=1
3713 assign( rD, binop(Iop_DivU64, mkexpr(rA), mkexpr(rB)) );
3716 mkexpr(rD), mkexpr(rA), mkexpr(rB) );
3726 * then the contents of register RD are undefined as are (if Rc=1) the contents of
3739 assign( rD, binop( Iop_32HLto64, mkU32( 0 ), mkexpr( res ) ) );
3744 assign( rD, mkexpr( res) );
3760 * then the contents of register RD are undefined as are (if
3774 assign( rD, binop( Iop_32HLto64, mkU32( 0 ), mkexpr( res ) ) );
3779 assign( rD, mkexpr( res) );
3795 * then the contents of register RD are undefined as are (if
3802 assign( rD, binop(Iop_DivS64E, mkexpr(rA), mkexpr(rB)) );
3804 set_XER_OV_64( PPCG_FLAG_OP_DIVDE, mkexpr( rD ),
3814 assign( rD, binop(Iop_DivU64E, mkexpr(rA), mkexpr(rB)) );
3816 set_XER_OV_64( PPCG_FLAG_OP_DIVDEU, mkexpr( rD ),
3832 putIReg( rD_addr, mkexpr(rD) );
3835 set_CR0( mkexpr(rD) );
5289 Int rD, // first dst register
5297 vassert(rD >= 0 && rD < 32);
5298 rD--; if (rD < 0) rD = 31;
5307 rD++; if (rD == 32) rD = 0;
5308 putIReg(rD, mkSzImm(ty, 0));
5311 /* rD |= (8Uto32(*(EA+i))) << shift */
5314 rD,
5319 mkNarrowTo32(ty, getIReg(rD)),
5405 /* rD = Mem[EA]; (rD+1)%32 = Mem[EA+4] */
5441 /* Mem[EA] = rD; Mem[EA+4] = (rD+1)%32 */