/* Return True iff pfx has any of 66, F2 and F3 set */
static Bool have66orF2orF3 ( Prefix pfx )
{
- return ! haveNo66noF2noF3(pfx);
+ return toBool( ! haveNo66noF2noF3(pfx) );
}
/* Clear all the segment-override bits in a prefix. */
return xmm_names[xmmreg];
}
-static HChar* nameMMXGran ( UChar gran )
+static HChar* nameMMXGran ( Int gran )
{
switch (gran) {
case 0: return "b";
Need to check ST(0)'s tag on read, but not on write.
*/
static
-void fp_do_op_mem_ST_0 ( IRTemp addr, UChar* op_txt, UChar* dis_buf,
+void fp_do_op_mem_ST_0 ( IRTemp addr, HChar* op_txt, HChar* dis_buf,
IROp op, Bool dbl )
{
DIP("f%s%c %s\n", op_txt, dbl?'l':'s', dis_buf);
case 0xC0 ... 0xC7: /* FCMOVB ST(i), ST(0) */
r_src = (UInt)modrm - 0xC0;
- DIP("fcmovb %%st(%d), %%st(0)\n", r_src);
+ DIP("fcmovb %%st(%u), %%st(0)\n", r_src);
put_ST_UNCHECKED(0,
IRExpr_Mux0X(
unop(Iop_1Uto8,
case 0xC0 ... 0xC7: /* FCMOVNB ST(i), ST(0) */
r_src = (UInt)modrm - 0xC0;
- DIP("fcmovnb %%st(%d), %%st(0)\n", r_src);
+ DIP("fcmovnb %%st(%u), %%st(0)\n", r_src);
put_ST_UNCHECKED(0,
IRExpr_Mux0X(
unop(Iop_1Uto8,
ULong dis_MMXop_regmem_to_reg ( Prefix pfx,
ULong delta,
UChar opc,
- Char* name,
+ HChar* name,
Bool show_granularity )
{
HChar dis_buf[50];
Bool invG = False;
IROp op = Iop_INVALID;
void* hAddr = NULL;
- Char* hName = NULL;
+ HChar* hName = NULL;
Bool eLeft = False;
# define XXX(_name) do { hAddr = &_name; hName = #_name; } while (0)
vassert(epartIsReg(rm));
vassert(gregLO3ofRM(rm) == 2
|| gregLO3ofRM(rm) == 4 || gregLO3ofRM(rm) == 6);
- amt = (Int)(getUChar(delta+1));
+ amt = getUChar(delta+1);
delta += 2;
DIP("%s $%d,%s\n", opname,
(Int)amt,
case 0x72:
case 0x73: {
/* (sz==4): PSLLgg/PSRAgg/PSRLgg mmxreg by imm8 */
- UChar byte1, byte2, subopc;
+ UChar byte2, subopc;
if (sz != 4)
goto mmx_decode_failure;
- byte1 = opc; /* 0x71/72/73 */
- byte2 = getUChar(delta); /* amode / sub-opcode */
- subopc = (byte2 >> 3) & 7;
+ byte2 = getUChar(delta); /* amode / sub-opcode */
+ subopc = toUChar( (byte2 >> 3) & 7 );
# define SHIFT_BY_IMM(_name,_op) \
do { delta = dis_MMX_shiftE_imm(delta,_name,_op); \
vassert(epartIsReg(rm));
vassert(gregLO3ofRM(rm) == 2
|| gregLO3ofRM(rm) == 4 || gregLO3ofRM(rm) == 6);
- amt = (Int)(getUChar(delta+1));
+ amt = getUChar(delta+1);
delta += 2;
DIP("%s $%d,%s\n", opname,
(Int)amt,
&& insn[0] == 0x0F && (insn[1] == 0x15 || insn[1] == 0x14)) {
IRTemp sV, dV;
IRTemp s3, s2, s1, s0, d3, d2, d1, d0;
- Bool hi = insn[1] == 0x15;
+ Bool hi = toBool(insn[1] == 0x15);
sV = newTemp(Ity_V128);
dV = newTemp(Ity_V128);
s3 = s2 = s1 = s0 = d3 = d2 = d1 = d0 = IRTemp_INVALID;
IRTemp rmode = newTemp(Ity_I32);
IRTemp f64lo = newTemp(Ity_F64);
IRTemp f64hi = newTemp(Ity_F64);
- Bool r2zero = insn[1] == 0x2C;
+ Bool r2zero = toBool(insn[1] == 0x2C);
do_MMX_preamble();
modrm = getUChar(delta+2);
return;
case Ain_Sse64Fx2:
vassert(i->Ain.Sse64Fx2.op != Asse_MOV);
- unary = i->Ain.Sse64Fx2.op == Asse_RCPF
- || i->Ain.Sse64Fx2.op == Asse_RSQRTF
- || i->Ain.Sse64Fx2.op == Asse_SQRTF;
+ unary = toBool( i->Ain.Sse64Fx2.op == Asse_RCPF
+ || i->Ain.Sse64Fx2.op == Asse_RSQRTF
+ || i->Ain.Sse64Fx2.op == Asse_SQRTF );
addHRegUse(u, HRmRead, i->Ain.Sse64Fx2.src);
addHRegUse(u, unary ? HRmWrite : HRmModify,
i->Ain.Sse64Fx2.dst);
p = doAMode_R(p, vreg2ireg(i->Ain.Sse64Fx2.dst),
vreg2ireg(i->Ain.Sse64Fx2.src) );
if (xtra & 0x100)
- *p++ = (UChar)(xtra & 0xFF);
+ *p++ = toUChar(xtra & 0xFF);
goto done;
case Ain_Sse32FLo: