]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Bug 361226 VEX part: s390x: risbgn (EC59) not implemented
authorChristian Borntraeger <borntraeger@de.ibm.com>
Thu, 7 Apr 2016 18:54:53 +0000 (18:54 +0000)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Thu, 7 Apr 2016 18:54:53 +0000 (18:54 +0000)
git-svn-id: svn://svn.valgrind.org/vex/trunk@3216

VEX/priv/guest_s390_toIR.c

index 5e6acd4412e013ffbd8c8f1fdfdd5e83ad5d52fd..a587d2e939843e05d07a310ef1e50fc09d3eb396 100644 (file)
@@ -7578,7 +7578,8 @@ s390_irgen_ROSBG(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5)
 }
 
 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 @@ s390_irgen_RISBG(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5)
       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 @@ s390_decode_6byte_and_irgen(const UChar *bytes)
                                                  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,