Int adj;
vassert(ty == Ity_I8 || ty == Ity_I16 || ty == Ity_I32);
vassert(op8 == Iop_Add8 || op8 == Iop_Sub8
- || op8 == Iop_Adc8 || op8 == Iop_Sbb8
+ // || op8 == Iop_Adc8 || op8 == Iop_Sbb8
|| op8 == Iop_Mul8
|| op8 == Iop_Or8 || op8 == Iop_And8 || op8 == Iop_Xor8
|| op8 == Iop_Shl8 || op8 == Iop_Shr8 || op8 == Iop_Sar8
UInt delta, UChar modrm,
Int am_sz, Int d_sz, Int sz, UInt d32 )
{
- IROp op8;
Int len;
UChar dis_buf[50];
IRType ty = szToITy(sz);
IRTemp src = newTemp(ty);
IRTemp dst0 = newTemp(ty);
IRTemp addr = INVALID_IRTEMP;
+ IROp op8 = Iop_INVALID;
switch (gregOfRM(modrm)) {
case 0: op8 = Iop_Add8; break; case 1: op8 = Iop_Or8; break;
- case 2: op8 = Iop_Adc8; break; //case 3: op8 = Iop_Sbb8; break;
+ case 2: break; // ADC
+ case 3: break; // SBB
case 4: op8 = Iop_And8; break; case 5: op8 = Iop_Sub8; break;
case 6: op8 = Iop_Xor8; break; case 7: op8 = Iop_Sub8; break;
default: vpanic("dis_Grp1: unhandled case");
if (epartIsReg(modrm)) {
vassert(am_sz == 1);
- vassert(op8 != Iop_Adc8 && op8 != Iop_Sbb8);
+ vassert(op8 != Iop_INVALID);
assign(dst0, getIReg(sz,eregOfRM(modrm)));
assign(src, mkU(ty,d32));
assign(dst0, loadLE(ty,mkexpr(addr)));
assign(src, mkU(ty,d32));
- if (op8 == Iop_Adc8) {
+ if (gregOfRM(modrm) == 2 /* ADC */) {
helper_ADC( sz, dst1, dst0, src );
} else
- if (op8 == Iop_Sbb8) {
+ if (gregOfRM(modrm) == 3 /* SBB */) {
vassert(0);
} else {
assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
*t_arg1 = Ity_INVALID;
*t_arg2 = Ity_INVALID;
switch (op) {
- case Iop_Add8: case Iop_Sub8: case Iop_Adc8: case Iop_Sbb8:
+ case Iop_Add8: case Iop_Sub8: //case Iop_Adc8: case Iop_Sbb8:
case Iop_Mul8: case Iop_Or8: case Iop_And8: case Iop_Xor8:
BINARY(Ity_I8,Ity_I8,Ity_I8);
- case Iop_Add16: case Iop_Sub16: case Iop_Adc16: case Iop_Sbb16:
+ case Iop_Add16: case Iop_Sub16: //case Iop_Adc16: case Iop_Sbb16:
case Iop_Mul16: case Iop_Or16: case Iop_And16: case Iop_Xor16:
BINARY(Ity_I16,Ity_I16,Ity_I16);
- case Iop_Add32: case Iop_Sub32: case Iop_Adc32: case Iop_Sbb32:
+ case Iop_Add32: case Iop_Sub32: //case Iop_Adc32: case Iop_Sbb32:
case Iop_Mul32: case Iop_Or32: case Iop_And32: case Iop_Xor32:
BINARY(Ity_I32,Ity_I32,Ity_I32);
- case Iop_Add64: case Iop_Sub64: case Iop_Adc64: case Iop_Sbb64:
+ case Iop_Add64: case Iop_Sub64: //case Iop_Adc64: case Iop_Sbb64:
case Iop_Mul64: case Iop_Or64: case Iop_And64: case Iop_Xor64:
BINARY(Ity_I64,Ity_I64,Ity_I64);
enum {
/* Do not change this ordering. The IR generators
rely on (eg) Iop_Add64 == IopAdd8 + 3. */
- Iop_Add8=0x13000,
- Iop_Add16, Iop_Add32, Iop_Add64,
+ Iop_INVALID=0x13000,
+ Iop_Add8, Iop_Add16, Iop_Add32, Iop_Add64,
Iop_Sub8, Iop_Sub16, Iop_Sub32, Iop_Sub64,
- Iop_Adc8, Iop_Adc16, Iop_Adc32, Iop_Adc64,
- Iop_Sbb8, Iop_Sbb16, Iop_Sbb32, Iop_Sbb64,
+//Iop_Adc8, Iop_Adc16, Iop_Adc32, Iop_Adc64,
+//Iop_Sbb8, Iop_Sbb16, Iop_Sbb32, Iop_Sbb64,
/* Signless mul. MullS/MullU is elsewhere. */
Iop_Mul8, Iop_Mul16, Iop_Mul32, Iop_Mul64,
Iop_Or8, Iop_Or16, Iop_Or32, Iop_Or64,