|
From: <sv...@va...> - 2016-04-07 18:55:00
|
Author: cborntra
Date: Thu Apr 7 19:54:53 2016
New Revision: 3216
Log:
Bug 361226 VEX part: s390x: risbgn (EC59) not implemented
Modified:
trunk/priv/guest_s390_toIR.c
Modified: trunk/priv/guest_s390_toIR.c
==============================================================================
--- trunk/priv/guest_s390_toIR.c (original)
+++ trunk/priv/guest_s390_toIR.c Thu Apr 7 19:54:53 2016
@@ -7578,7 +7578,8 @@
}
static const HChar *
-s390_irgen_RISBG(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5)
+s390_irgen_RISBGx(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5,
+ Bool set_cc)
{
UChar from;
UChar to;
@@ -7612,9 +7613,24 @@
put_gpr_dw0(r1, binop(Iop_And64, mkexpr(op2), mkU64(mask)));
}
assign(result, get_gpr_dw0(r1));
- s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, result);
+ if (set_cc) {
+ s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, result);
+ return "risbg";
+ }
+
+ return "risbgn";
+}
+
+static const HChar *
+s390_irgen_RISBG(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5)
+{
+ return s390_irgen_RISBGx(r1, r2, i3, i4, i5, True);
+}
- return "risbg";
+static const HChar *
+s390_irgen_RISBGN(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5)
+{
+ return s390_irgen_RISBGx(r1, r2, i3, i4, i5, False);
}
static const HChar *
@@ -16059,7 +16075,13 @@
ovl.fmt.RIE_RRUUU.i4,
ovl.fmt.RIE_RRUUU.i5);
goto ok;
- case 0xec0000000059ULL: /* RISBGN */ goto unimplemented;
+ case 0xec0000000059ULL: s390_format_RIE_RRUUU(s390_irgen_RISBGN,
+ ovl.fmt.RIE_RRUUU.r1,
+ ovl.fmt.RIE_RRUUU.r2,
+ ovl.fmt.RIE_RRUUU.i3,
+ ovl.fmt.RIE_RRUUU.i4,
+ ovl.fmt.RIE_RRUUU.i5);
+ goto ok;
case 0xec000000005dULL: /* RISBHG */ goto unimplemented;
case 0xec0000000064ULL: s390_format_RIE_RRPU(s390_irgen_CGRJ,
ovl.fmt.RIE_RRPU.r1,
|