return mkU32(0);
}
+ if (cond == 15) return mkU32(1);
+
if (cond == 8) {
return unop(Iop_1Uto32, binop(Iop_CmpEQ64,
binop(Iop_And64, cc_dep1, cc_dep2),
binop(Iop_And64, cc_dep1, mkU64(msb)),
mkU64(0)));
}
+ if (cond == 13) { /* cc == 0 || cc == 1 || cc == 3 */
+ IRExpr *c01, *c3;
+
+ c01 = binop(Iop_CmpEQ64, binop(Iop_And64, cc_dep1, mkU64(msb)),
+ mkU64(0));
+ c3 = binop(Iop_CmpEQ64, binop(Iop_And64, cc_dep1, cc_dep2),
+ mkU64(mask16));
+ return binop(Iop_Or32, unop(Iop_1Uto32, c01),
+ unop(Iop_1Uto32, c3));
+ }
+ // fixs390: handle cond = 5,6,9,10 (the missing cases)
// vex_printf("TUM mask = 0x%llx\n", mask16);
goto missed;
}
goto missed;
}
- /* --------- Specialising "s390_calculate_cond" --------- */
+ /* --------- Specialising "s390_calculate_cc" --------- */
if (vex_streq(function_name, "s390_calculate_cc")) {
IRExpr *cc_op_expr, *cc_dep1;