DIP("cmpxchg%c %s,%s\n", nameISize(size),
nameIReg(size,gregOfRM(rm)),
nameIReg(size,eregOfRM(rm)) );
- vassert(0);
} else {
addr = disAMode ( &len, sorb, delta0, dis_buf );
assign( dest, loadLE(ty, mkexpr(addr)) );
/* =-=-=-=-=-=-=-=-=- CMPXCHG -=-=-=-=-=-=-=-=-=-= */
-//-- case 0xB0: /* CMPXCHG Gb,Eb */
-//-- eip = dis_cmpxchg_G_E ( cb, sorb, 1, eip );
-//-- break;
+ case 0xB0: /* CMPXCHG Gb,Eb */
+ delta = dis_cmpxchg_G_E ( sorb, 1, delta );
+ break;
case 0xB1: /* CMPXCHG Gv,Ev */
delta = dis_cmpxchg_G_E ( sorb, sz, delta );
break;
/* --------- MULTIPLEX --------- */
case Iex_Mux0X: {
- if (ty == Ity_I32
+ if ((ty == Ity_I32 || ty == Ity_I16 || ty == Ity_I8)
&& typeOfIRExpr(env->type_env,e->Iex.Mux0X.cond) == Ity_I8) {
HReg r8;
HReg rX = iselIntExpr_R(env, e->Iex.Mux0X.exprX);