/* TODO:
SBB reg with itself
- is Iop_Neg* used?
MOVAPS fix (vg_to_ucode rev 1.143)
check flag settings for cmpxchg
FUCOMI(P): what happens to A and S flags? Currently are forced
|| op8 == Iop_Or8 || op8 == Iop_And8 || op8 == Iop_Xor8
|| op8 == Iop_Shl8 || op8 == Iop_Shr8 || op8 == Iop_Sar8
|| op8 == Iop_CmpEQ8 || op8 == Iop_CmpNE8
- || op8 == Iop_Not8 || op8 == Iop_Neg8 );
+ || op8 == Iop_Not8 );
adj = ty==Ity_I8 ? 0 : (ty==Ity_I16 ? 1 : 2);
return adj + op8;
}
str = "CmpEQ"; base = Iop_CmpEQ8; break;
case Iop_CmpNE8 ... Iop_CmpNE64:
str = "CmpNE"; base = Iop_CmpNE8; break;
- case Iop_Neg8 ... Iop_Neg64:
- str = "Neg"; base = Iop_Neg8; break;
case Iop_Not8 ... Iop_Not64:
str = "Not"; base = Iop_Not8; break;
/* other cases must explicitly "return;" */
case Iop_32Uto64: vex_printf("32Uto64"); return;
case Iop_32to8: vex_printf("32to8"); return;
- case Iop_And1: vex_printf("And1"); return;
- case Iop_Or1: vex_printf("Or1"); return;
case Iop_Not1: vex_printf("Not1"); return;
case Iop_32to1: vex_printf("32to1"); return;
case Iop_1Uto8: vex_printf("1Uto8"); return;
case Iop_Shl64: case Iop_Shr64: case Iop_Sar64:
BINARY(Ity_I64,Ity_I64,Ity_I8);
- case Iop_Not8: case Iop_Neg8:
- UNARY(Ity_I8,Ity_I8);
- case Iop_Not16: case Iop_Neg16:
- UNARY(Ity_I16,Ity_I16);
- case Iop_Not32: case Iop_Neg32:
- UNARY(Ity_I32,Ity_I32);
- case Iop_Not64: case Iop_Neg64:
- UNARY(Ity_I64,Ity_I64);
+ case Iop_Not8: UNARY(Ity_I8,Ity_I8);
+ case Iop_Not16: UNARY(Ity_I16,Ity_I16);
+ case Iop_Not32: UNARY(Ity_I32,Ity_I32);
+ case Iop_Not64: UNARY(Ity_I64,Ity_I64);
case Iop_CmpEQ8: case Iop_CmpNE8:
COMPARISON(Ity_I8);
case Iop_32HLto64:
BINARY(Ity_I64,Ity_I32,Ity_I32);
- case Iop_And1:
- case Iop_Or1: BINARY(Ity_Bit,Ity_Bit,Ity_Bit);
case Iop_Not1: UNARY(Ity_Bit,Ity_Bit);
case Iop_1Uto8: UNARY(Ity_I8,Ity_Bit);
case Iop_1Sto8: UNARY(Ity_I8,Ity_Bit);
Iop_CmpNE8, Iop_CmpNE16, Iop_CmpNE32, Iop_CmpNE64,
/* Tags for unary ops */
Iop_Not8, Iop_Not16, Iop_Not32, Iop_Not64,
- Iop_Neg8, Iop_Neg16, Iop_Neg32, Iop_Neg64,
/* Widening multiplies */
Iop_MullS8, Iop_MullS16, Iop_MullS32,
Iop_MullU8, Iop_MullU16, Iop_MullU32,
Iop_32HLto64, // :: (I32,I32) -> I64
/* 1-bit stuff */
Iop_Not1, /* :: Ity_Bit -> Ity_Bit */
- Iop_Or1, /* :: Ity_Bit, Ity_Bit -> Ity_Bit */
- Iop_And1, /* :: Ity_Bit, Ity_Bit -> Ity_Bit */
Iop_32to1, /* :: Ity_I32 -> Ity_Bit, just select bit[0] */
Iop_1Uto8, /* :: Ity_Bit -> Ity_I8, unsigned widen */
Iop_1Uto32, /* :: Ity_Bit -> Ity_I32, unsigned widen */