return binop( Iop_And32,
binop( Iop_Shr32,
unop(Iop_8Uto32, getCR321(n)),
- mkU8(3-off) ),
+ mkU8(toUChar(3-off)) ),
mkU32(1) );
}
}
binop(Iop_And32, unop(Iop_8Uto32, getCR321(n)),
mkU32(~(1 << off))),
/* new value in the right place */
- binop(Iop_Shl32, safe, mkU8(off))
+ binop(Iop_Shl32, safe, mkU8(toUChar(off)))
)
)
);
if ((mask & (1 << (7-cr))) == 0)
continue;
t = newTemp(Ity_I32);
- assign( t, binop(Iop_Shr32, w32, mkU8(4*(7-cr))) );
+ assign( t, binop(Iop_Shr32, w32, mkU8(toUChar(4*(7-cr)))) );
putCR0( cr, unop(Iop_32to8,
binop(Iop_And32, mkexpr(t), mkU32(1))) );
putCR321( cr, unop(Iop_32to8,
break;
default:
- vex_printf("set_XER_OV: op = %d\n", op);
+ vex_printf("set_XER_OV: op = %u\n", op);
vpanic("set_XER_OV(ppc32)");
}
break;
default:
- vex_printf("set_XER_CA: op = %d\n", op);
+ vex_printf("set_XER_CA: op = %u\n", op);
vpanic("set_XER_CA(ppc32)");
}
// li rD,val == addi rD,0,val
// la disp(rA) == addi rD,rA,disp
if ( Ra_addr == 0 ) {
- DIP("li r%d,%d\n", Rd_addr, EXTS_SIMM);
+ DIP("li r%d,%d\n", Rd_addr, (Int)EXTS_SIMM);
assign( Rd, mkU32(EXTS_SIMM) );
} else {
- DIP("addi r%d,r%d,0x%x\n", Rd_addr, Ra_addr, SIMM_16);
+ DIP("addi r%d,r%d,0x%x\n", Rd_addr, Ra_addr, (Int)SIMM_16);
assign( Rd, binop( Iop_Add32, mkexpr(Ra), mkU32(EXTS_SIMM) ) );
}
break;
case 0x0F: // addis (Add Immediate Shifted, PPC32 p353)
// lis rD,val == addis rD,0,val
if ( Ra_addr == 0 ) {
- DIP("lis r%d,%d\n", Rd_addr, SIMM_16);
+ DIP("lis r%d,%d\n", Rd_addr, (Int)SIMM_16);
assign( Rd, mkU32(SIMM_16 << 16) );
} else {
DIP("addis r%d,r%d,0x%x\n", Rd_addr, Ra_addr, SIMM_16);
switch (opc1) {
case 0x0B: // cmpi (Compare Immediate, PPC32 p368)
EXTS_SIMM = extend_s_16to32(UIMM_16);
- DIP("cmp cr%d,r%d,%d\n", crfD, Ra_addr, EXTS_SIMM);
+ DIP("cmp cr%d,r%d,%d\n", crfD, Ra_addr, (Int)EXTS_SIMM);
putCR321( crfD, unop(Iop_32to8,
binop(Iop_CmpORD32S, mkexpr(Ra),
mkU32(EXTS_SIMM))) );
switch (opc1) {
case 0x22: // lbz (Load B & Zero, PPC32 p433)
- DIP("lbz r%d,%d(r%d)\n", Rd_addr, exts_d_imm, Ra_addr);
+ DIP("lbz r%d,%d(r%d)\n", Rd_addr, (Int)exts_d_imm, Ra_addr);
putIReg( Rd_addr, unop(Iop_8Uto32,
loadBE(Ity_I8, mkexpr(EA_imm))) );
break;
vex_printf("dis_int_load(PPC32)(lbzu,Ra_addr|Rd_addr)\n");
return False;
}
- DIP("lbzu r%d,%d(r%d)\n", Rd_addr, exts_d_imm, Ra_addr);
+ DIP("lbzu r%d,%d(r%d)\n", Rd_addr, (Int)exts_d_imm, Ra_addr);
putIReg( Rd_addr, unop(Iop_8Uto32,
loadBE(Ity_I8, mkexpr(EA_imm))) );
putIReg( Ra_addr, mkexpr(EA_imm) );
break;
case 0x2A: // lha (Load HW Algebraic, PPC32 p445)
- DIP("lha r%d,%d(r%d)\n", Rd_addr, exts_d_imm, Ra_addr);
+ DIP("lha r%d,%d(r%d)\n", Rd_addr, (Int)exts_d_imm, Ra_addr);
putIReg( Rd_addr, unop(Iop_16Sto32,
loadBE(Ity_I16, mkexpr(EA_imm))) );
break;
vex_printf("dis_int_load(PPC32)(lhau,Ra_addr|Rd_addr)\n");
return False;
}
- DIP("lhau r%d,%d(r%d)\n", Rd_addr, (Int)d_imm, Ra_addr);
+ DIP("lhau r%d,%d(r%d)\n", Rd_addr, (Int)exts_d_imm, Ra_addr);
putIReg( Rd_addr, unop(Iop_16Sto32,
loadBE(Ity_I16, mkexpr(EA_imm))) );
putIReg( Ra_addr, mkexpr(EA_imm) );
break;
case 0x28: // lhz (Load HW & Zero, PPC32 p450)
- DIP("lhz r%d,%d(r%d)\n", Rd_addr, exts_d_imm, Ra_addr);
+ DIP("lhz r%d,%d(r%d)\n", Rd_addr, (Int)exts_d_imm, Ra_addr);
putIReg( Rd_addr, unop(Iop_16Uto32,
loadBE(Ity_I16, mkexpr(EA_imm))) );
break;
vex_printf("dis_int_load(PPC32)(lhzu,Ra_addr|Rd_addr)\n");
return False;
}
- DIP("lhzu r%d,%d(r%d)\n", Rd_addr, exts_d_imm, Ra_addr);
+ DIP("lhzu r%d,%d(r%d)\n", Rd_addr, (Int)exts_d_imm, Ra_addr);
putIReg( Rd_addr, unop(Iop_16Uto32,
loadBE(Ity_I16, mkexpr(EA_imm))) );
putIReg( Ra_addr, mkexpr(EA_imm) );
break;
case 0x20: // lwz (Load W & Zero, PPC32 p460)
- DIP("lwz r%d,%d(r%d)\n", Rd_addr, exts_d_imm, Ra_addr);
+ DIP("lwz r%d,%d(r%d)\n", Rd_addr, (Int)exts_d_imm, Ra_addr);
putIReg( Rd_addr, loadBE(Ity_I32, mkexpr(EA_imm)) );
break;
vex_printf("dis_int_load(PPC32)(lwzu,Ra_addr|Rd_addr)\n");
return False;
}
- DIP("lwzu r%d,%d(r%d)\n", Rd_addr, exts_d_imm, Ra_addr);
+ DIP("lwzu r%d,%d(r%d)\n", Rd_addr, (Int)exts_d_imm, Ra_addr);
putIReg( Rd_addr, loadBE(Ity_I32, mkexpr(EA_imm)) );
putIReg( Ra_addr, mkexpr(EA_imm) );
break;
switch (opc1) {
case 0x26: // stb (Store B, PPC32 p509)
- DIP("stb r%d,%d(r%d)\n", Rs_addr, simm16, Ra_addr);
+ DIP("stb r%u,%d(r%u)\n", Rs_addr, simm16, Ra_addr);
storeBE( mkexpr(EA_imm), unop(Iop_32to8, mkexpr(Rs)) );
break;
vex_printf("dis_int_store(PPC32)(stbu,Ra_addr)\n");
return False;
}
- DIP("stbu r%d,%d(r%d)\n", Rs_addr, simm16, Ra_addr);
+ DIP("stbu r%u,%d(r%u)\n", Rs_addr, simm16, Ra_addr);
putIReg( Ra_addr, mkexpr(EA_imm) );
storeBE( mkexpr(EA_imm), unop(Iop_32to8, mkexpr(Rs)) );
break;
case 0x2C: // sth (Store HW, PPC32 p522)
- DIP("sth r%d,%d(r%d)\n", Rs_addr, simm16, Ra_addr);
+ DIP("sth r%u,%d(r%u)\n", Rs_addr, simm16, Ra_addr);
storeBE( mkexpr(EA_imm), unop(Iop_32to16, mkexpr(Rs)) );
break;
vex_printf("dis_int_store(PPC32)(sthu,Ra_addr)\n");
return False;
}
- DIP("sthu r%d,%d(r%d)\n", Rs_addr, simm16, Ra_addr);
+ DIP("sthu r%u,%d(r%u)\n", Rs_addr, simm16, Ra_addr);
putIReg( Ra_addr, mkexpr(EA_imm) );
storeBE( mkexpr(EA_imm), unop(Iop_32to16, mkexpr(Rs)) );
break;
case 0x24: // stw (Store W, PPC32 p530)
- DIP("stw r%d,%d(r%d)\n", Rs_addr, simm16, Ra_addr);
+ DIP("stw r%u,%d(r%u)\n", Rs_addr, simm16, Ra_addr);
storeBE( mkexpr(EA_imm), mkexpr(Rs) );
break;
vex_printf("dis_int_store(PPC32)(stwu,Ra_addr)\n");
return False;
}
- DIP("stwu r%d,%d(r%d)\n", Rs_addr, simm16, Ra_addr);
+ DIP("stwu r%u,%d(r%u)\n", Rs_addr, simm16, Ra_addr);
putIReg( Ra_addr, mkexpr(EA_imm) );
storeBE( mkexpr(EA_imm), mkexpr(Rs) );
break;
vex_printf("dis_int_store(PPC32)(stbux,Ra_addr)\n");
return False;
}
- DIP("stbux r%d,r%d,r%d\n", Rs_addr, Ra_addr, Rb_addr);
+ DIP("stbux r%u,r%u,r%u\n", Rs_addr, Ra_addr, Rb_addr);
putIReg( Ra_addr, mkexpr(EA_reg) );
storeBE( mkexpr(EA_reg), unop(Iop_32to8, mkexpr(Rs)) );
break;
case 0x0D7: // stbx (Store B Indexed, PPC32 p512)
- DIP("stbx r%d,r%d,r%d\n", Rs_addr, Ra_addr, Rb_addr);
+ DIP("stbx r%u,r%u,r%u\n", Rs_addr, Ra_addr, Rb_addr);
storeBE( mkexpr(EA_reg), unop(Iop_32to8, mkexpr(Rs)) );
break;
vex_printf("dis_int_store(PPC32)(sthux,Ra_addr)\n");
return False;
}
- DIP("sthux r%d,r%d,r%d\n", Rs_addr, Ra_addr, Rb_addr);
+ DIP("sthux r%u,r%u,r%u\n", Rs_addr, Ra_addr, Rb_addr);
putIReg( Ra_addr, mkexpr(EA_reg) );
storeBE( mkexpr(EA_reg), unop(Iop_32to16, mkexpr(Rs)) );
break;
case 0x197: // sthx (Store HW Indexed, PPC32 p526)
- DIP("sthx r%d,r%d,r%d\n", Rs_addr, Ra_addr, Rb_addr);
+ DIP("sthx r%u,r%u,r%u\n", Rs_addr, Ra_addr, Rb_addr);
storeBE( mkexpr(EA_reg), unop(Iop_32to16, mkexpr(Rs)) );
break;
vex_printf("dis_int_store(PPC32)(stwux,Ra_addr)\n");
return False;
}
- DIP("stwux r%d,r%d,r%d\n", Rs_addr, Ra_addr, Rb_addr);
+ DIP("stwux r%u,r%u,r%u\n", Rs_addr, Ra_addr, Rb_addr);
putIReg( Ra_addr, mkexpr(EA_reg) );
storeBE( mkexpr(EA_reg), mkexpr(Rs) );
break;
case 0x097: // stwx (Store W Indexed, PPC32 p536)
- DIP("stwx r%d,r%d,r%d\n", Rs_addr, Ra_addr, Rb_addr);
+ DIP("stwx r%u,r%u,r%u\n", Rs_addr, Ra_addr, Rb_addr);
storeBE( mkexpr(EA_reg), mkexpr(Rs) );
break;
unop(Iop_8Uto32,
loadBE(Ity_I8,
binop(Iop_Add32, e_EA, mkU32(i)))),
- mkU8(shift))
+ mkU8(toUChar(shift)))
));
shift -= 8;
}
storeBE(
binop(Iop_Add32, e_EA, mkU32(i)),
unop(Iop_32to8,
- binop(Iop_Shr32, getIReg(rS), mkU8(shift)))
+ binop(Iop_Shr32, getIReg(rS), mkU8(toUChar(shift))))
);
shift -= 8;
}
//zz return False;
default:
- vex_printf("dis_proc_ctl(PPC32)(mtspr,SPR_flipped)(%d)\n",
+ vex_printf("dis_proc_ctl(PPC32)(mtspr,SPR_flipped)(%u)\n",
SPR_flipped);
return False;
}
}
- opc1 = ifieldOPC(theInstr);
+ opc1 = toUChar(ifieldOPC(theInstr));
opc2 = ifieldOPClo10(theInstr);
#if PPC32_TOIR_DEBUG
/* All decode failures end up here. */
vex_printf("disInstr(ppc32): unhandled instruction: "
"0x%x\n", theInstr);
- vex_printf(" primary %d(0x%x), secondary %d(0x%x)\n",
+ vex_printf(" primary %d(0x%x), secondary %u(0x%x)\n",
opc1, opc1, opc2, opc2);
#if PPC32_TOIR_DEBUG
{
HReg sp = StackFramePtr;
vassert(n > 0 && n < 256 && (n%16) == 0);
- addInstr(env, PPC32Instr_Alu32(Palu_ADD, sp, sp, PPC32RH_Imm(True,n)));
+ addInstr(env, PPC32Instr_Alu32(
+ Palu_ADD, sp, sp, PPC32RH_Imm(True,toUShort(n))));
}
static void sub_from_sp ( ISelEnv* env, Int n )
{
HReg sp = StackFramePtr;
vassert(n > 0 && n < 256 && (n%16) == 0);
- addInstr(env, PPC32Instr_Alu32(Palu_SUB, sp, sp, PPC32RH_Imm(True,n)));
+ addInstr(env, PPC32Instr_Alu32(
+ Palu_SUB, sp, sp, PPC32RH_Imm(True,toUShort(n))));
}
/* widen the left arg if needed */
if ((aluOp == Palu_SHR || aluOp == Palu_SAR)
&& (ty == Ity_I8 || ty == Ity_I16)) {
- PPC32RH* amt = PPC32RH_Imm(False, ty == Ity_I8 ? 24 : 16);
- HReg tmp = newVRegI(env);
+ PPC32RH* amt = PPC32RH_Imm(False, toUShort(ty == Ity_I8 ? 24 : 16));
+ HReg tmp = newVRegI(env);
addInstr(env, PPC32Instr_Alu32(Palu_SHL, tmp, r_srcL, amt));
addInstr(env, PPC32Instr_Alu32(aluOp, tmp, tmp, amt));
r_srcL = tmp;
/* El-mutanto 3-way compare? */
if (e->Iex.Binop.op == Iop_CmpORD32S
|| e->Iex.Binop.op == Iop_CmpORD32U) {
- Bool syned = e->Iex.Binop.op == Iop_CmpORD32S;
+ Bool syned = toBool(e->Iex.Binop.op == Iop_CmpORD32S);
HReg dst = newVRegI(env);
HReg srcL = iselIntExpr_R(env, e->Iex.Binop.arg1);
PPC32RH* srcR = iselIntExpr_RH(env, syned, e->Iex.Binop.arg2);
case Iop_8Uto16:
case Iop_8Uto32:
case Iop_16Uto32: {
- HReg r_dst = newVRegI(env);
- HReg r_src = iselIntExpr_R(env, e->Iex.Unop.arg);
- UInt mask = e->Iex.Unop.op==Iop_16Uto32 ? 0xFFFF : 0xFF;
- addInstr(env, PPC32Instr_Alu32(Palu_AND,r_dst,r_src,PPC32RH_Imm(False,mask)));
+ HReg r_dst = newVRegI(env);
+ HReg r_src = iselIntExpr_R(env, e->Iex.Unop.arg);
+ UShort mask = toUShort(e->Iex.Unop.op==Iop_16Uto32 ? 0xFFFF : 0xFF);
+ addInstr(env, PPC32Instr_Alu32(Palu_AND,r_dst,r_src,
+ PPC32RH_Imm(False,mask)));
return r_dst;
}
case Iop_8Sto16:
case Iop_8Sto32:
case Iop_16Sto32: {
- HReg r_dst = newVRegI(env);
- HReg r_src = iselIntExpr_R(env, e->Iex.Unop.arg);
- UInt amt = e->Iex.Unop.op==Iop_16Sto32 ? 16 : 24;
- addInstr(env, PPC32Instr_Alu32(Palu_SHL, r_dst, r_src, PPC32RH_Imm(False,amt)));
- addInstr(env, PPC32Instr_Alu32(Palu_SAR, r_dst, r_dst, PPC32RH_Imm(False,amt)));
+ HReg r_dst = newVRegI(env);
+ HReg r_src = iselIntExpr_R(env, e->Iex.Unop.arg);
+ UShort amt = toUShort(e->Iex.Unop.op==Iop_16Sto32 ? 16 : 24);
+ addInstr(env, PPC32Instr_Alu32(Palu_SHL, r_dst, r_src,
+ PPC32RH_Imm(False,amt)));
+ addInstr(env, PPC32Instr_Alu32(Palu_SAR, r_dst, r_dst,
+ PPC32RH_Imm(False,amt)));
return r_dst;
}
case Iop_Not8:
}
case Iop_16HIto8:
case Iop_32HIto16: {
- HReg r_dst = newVRegI(env);
- HReg r_src = iselIntExpr_R(env, e->Iex.Unop.arg);
- UInt shift = e->Iex.Unop.op == Iop_16HIto8 ? 8 : 16;
- addInstr(env, PPC32Instr_Alu32(Palu_SHR, r_dst, r_src, PPC32RH_Imm(False,shift)));
+ HReg r_dst = newVRegI(env);
+ HReg r_src = iselIntExpr_R(env, e->Iex.Unop.arg);
+ UShort shift = toUShort(e->Iex.Unop.op == Iop_16HIto8 ? 8 : 16);
+ addInstr(env, PPC32Instr_Alu32(Palu_SHR, r_dst, r_src,
+ PPC32RH_Imm(False,shift)));
return r_dst;
}
case Iop_1Uto32:
HReg r_dst = newVRegI(env);
PPC32CondCode cond = iselCondCode(env, e->Iex.Unop.arg);
addInstr(env, PPC32Instr_Set32(cond,r_dst));
- addInstr(env, PPC32Instr_Alu32(Palu_SHL, r_dst, r_dst, PPC32RH_Imm(False,31)));
- addInstr(env, PPC32Instr_Alu32(Palu_SAR, r_dst, r_dst, PPC32RH_Imm(False,31)));
+ addInstr(env, PPC32Instr_Alu32(Palu_SHL, r_dst, r_dst,
+ PPC32RH_Imm(False,31)));
+ addInstr(env, PPC32Instr_Alu32(Palu_SAR, r_dst, r_dst,
+ PPC32RH_Imm(False,31)));
return r_dst;
}
i = (Int)u;
/* Now figure out if it's representable. */
if (!syned && u <= 65535) {
- return PPC32RH_Imm(False/*unsigned*/, u & 0xFFFF);
+ return PPC32RH_Imm(False/*unsigned*/, toUShort(u & 0xFFFF));
}
if (syned && i >= -32767 && i <= 32767) {
- return PPC32RH_Imm(True/*signed*/, u & 0xFFFF);
+ return PPC32RH_Imm(True/*signed*/, toUShort(u & 0xFFFF));
}
/* no luck; use the Slow Way. */
}