]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Bug 405403 - s390x: Allow using disInstr_S390 on little-endian hosts
authorIlya Leoshkevich <iii@linux.ibm.com>
Tue, 12 Mar 2019 18:23:55 +0000 (19:23 +0100)
committerAndreas Arnez <arnez@linux.ibm.com>
Fri, 15 Mar 2019 14:00:30 +0000 (15:00 +0100)
Certain projects, e.g. https://angr.io, use VEX as an intermediate
representation for the binary code analysis. In order to make it
possible to use them to analyze S/390 code on Intel, this patch
resolves the following issues in the disassembler:

- Bit fields, which are used to describe instruction formats, map to
  different bits on different hosts. This patch replaces them with
  macros, e.g. SS.l bit field becomes SS_l macro. Most bit field usages
  are replaced using the following perl script:

    perl -p -i \
         -e 's/\(&ovl\.value\)/&ovl/g;' \
         -e 's/ovl\.value/ovl/g;' \
         -e 's/ovl\.fmt\.([a-zA-Z\d_]+)\.([a-z\d]+)/$1_$2(ovl)/g' \
         priv/guest_s390_toIR.c

  Since after that there are no more structs, #pragma pack is also
  removed.

- Instructions are loaded from memory as words, which behaves
  differently depending on host endianness. Such loads are replaced by
  assembly of words from separately loaded bytes. This affects regular
  disassembly functions, and also s390_irgen_EXRL(), which loads
  last_execute_target this way.

- disInstr_S390() explicitly prohibits little-endian hosts with an
  assert, which is removed in this patch.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
NEWS
VEX/priv/guest_s390_toIR.c

diff --git a/NEWS b/NEWS
index 981f69c2f5e14357ec3cfbd31918d09b71510f27..5bc357e45366f14a2f601788d07b7517e32654d8 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -109,6 +109,7 @@ where XXXXXX is the bug number as listed below.
 403552  s390x: wrong facility bit checked for vector facility
 404054  memcheck powerpc subfe x, x, x initializes x to 0 or -1 based on CA
 405079  unhandled ppc64le-linux syscall: 131 (quotactl)
+405403  s390x disassembler cannot be used on x86
 
 n-i-bz  add syswrap for PTRACE_GET|SET_THREAD_AREA on amd64.
 n-i-bz  Fix callgrind_annotate non deterministic order for equal total
index d657238869a555f754056e9ccbf6479468ba5786..b4b8e3d412738b87c00b45da9a38253bd73976bc 100644 (file)
@@ -91,6 +91,171 @@ typedef enum {
 } s390_decode_t;
 
 
+/*------------------------------------------------------------*/
+/*--- Instruction formats.                                 ---*/
+/*------------------------------------------------------------*/
+
+#define I_i(insn) ((insn) & 0xff)
+#define RR_r1(insn) (((insn) >> 4) & 0xf)
+#define RR_r2(insn) ((insn) & 0xf)
+#define RI_r1(insn) (((insn) >> 20) & 0xf)
+#define RI_i2(insn) ((insn) & 0xffff)
+#define RRE_r1(insn) (((insn) >> 4) & 0xf)
+#define RRE_r2(insn) ((insn) & 0xf)
+#define RRF_r1(insn) (((insn) >> 12) & 0xf)
+#define RRF_r3(insn) (((insn) >> 4) & 0xf)
+#define RRF_r2(insn) ((insn) & 0xf)
+#define RRF2_m3(insn) (((insn) >> 12) & 0xf)
+#define RRF2_m4(insn) (((insn) >> 8) & 0xf)
+#define RRF2_r1(insn) (((insn) >> 4) & 0xf)
+#define RRF2_r2(insn) ((insn) & 0xf)
+#define RRF3_r3(insn) (((insn) >> 12) & 0xf)
+#define RRF3_r1(insn) (((insn) >> 4) & 0xf)
+#define RRF3_r2(insn) ((insn) & 0xf)
+#define RRF4_r3(insn) (((insn) >> 12) & 0xf)
+#define RRF4_m4(insn) (((insn) >> 8) & 0xf)
+#define RRF4_r1(insn) (((insn) >> 4) & 0xf)
+#define RRF4_r2(insn) ((insn) & 0xf)
+#define RRF5_m4(insn) (((insn) >> 8) & 0xf)
+#define RRF5_r1(insn) (((insn) >> 4) & 0xf)
+#define RRF5_r2(insn) ((insn) & 0xf)
+#define RS_r1(insn) (((insn) >> 20) & 0xf)
+#define RS_r3(insn) (((insn) >> 16) & 0xf)
+#define RS_b2(insn) (((insn) >> 12) & 0xf)
+#define RS_d2(insn) ((insn) & 0xfff)
+#define RSI_r1(insn) (((insn) >> 20) & 0xf)
+#define RSI_r3(insn) (((insn) >> 16) & 0xf)
+#define RSI_i2(insn) ((insn) & 0xffff)
+#define RX_r1(insn) (((insn) >> 20) & 0xf)
+#define RX_x2(insn) (((insn) >> 16) & 0xf)
+#define RX_b2(insn) (((insn) >> 12) & 0xf)
+#define RX_d2(insn) ((insn) & 0xfff)
+#define S_b2(insn) (((insn) >> 12) & 0xf)
+#define S_d2(insn) ((insn) & 0xfff)
+#define SI_i2(insn) (((insn) >> 16) & 0xff)
+#define SI_b1(insn) (((insn) >> 12) & 0xf)
+#define SI_d1(insn) ((insn) & 0xfff)
+#define RIE_r1(insn) (((insn) >> 52) & 0xf)
+#define RIE_r3(insn) (((insn) >> 48) & 0xf)
+#define RIE_i2(insn) (((insn) >> 32) & 0xffff)
+#define RIE_RRUUU_r1(insn) (((insn) >> 52) & 0xf)
+#define RIE_RRUUU_r2(insn) (((insn) >> 48) & 0xf)
+#define RIE_RRUUU_i3(insn) (((insn) >> 40) & 0xff)
+#define RIE_RRUUU_i4(insn) (((insn) >> 32) & 0xff)
+#define RIE_RRUUU_i5(insn) (((insn) >> 24) & 0xff)
+#define RIEv1_r1(insn) (((insn) >> 52) & 0xf)
+#define RIEv1_i2(insn) (((insn) >> 32) & 0xffff)
+#define RIEv1_m3(insn) (((insn) >> 28) & 0xf)
+#define RIE_RRPU_r1(insn) (((insn) >> 52) & 0xf)
+#define RIE_RRPU_r2(insn) (((insn) >> 48) & 0xf)
+#define RIE_RRPU_i4(insn) (((insn) >> 32) & 0xffff)
+#define RIE_RRPU_m3(insn) (((insn) >> 28) & 0xf)
+#define RIEv3_r1(insn) (((insn) >> 52) & 0xf)
+#define RIEv3_m3(insn) (((insn) >> 48) & 0xf)
+#define RIEv3_i4(insn) (((insn) >> 32) & 0xffff)
+#define RIEv3_i2(insn) (((insn) >> 24) & 0xff)
+#define RIL_r1(insn) (((insn) >> 52) & 0xf)
+#define RIL_i2(insn) (((insn) >> 16) & 0xffffffff)
+#define RIS_r1(insn) (((insn) >> 52) & 0xf)
+#define RIS_m3(insn) (((insn) >> 48) & 0xf)
+#define RIS_b4(insn) (((insn) >> 44) & 0xf)
+#define RIS_d4(insn) (((insn) >> 32) & 0xfff)
+#define RIS_i2(insn) (((insn) >> 24) & 0xff)
+#define RRS_r1(insn) (((insn) >> 52) & 0xf)
+#define RRS_r2(insn) (((insn) >> 48) & 0xf)
+#define RRS_b4(insn) (((insn) >> 44) & 0xf)
+#define RRS_d4(insn) (((insn) >> 32) & 0xfff)
+#define RRS_m3(insn) (((insn) >> 28) & 0xf)
+#define RSY_r1(insn) (((insn) >> 52) & 0xf)
+#define RSY_r3(insn) (((insn) >> 48) & 0xf)
+#define RSY_b2(insn) (((insn) >> 44) & 0xf)
+#define RSY_dl2(insn) (((insn) >> 32) & 0xfff)
+#define RSY_dh2(insn) (((insn) >> 24) & 0xff)
+#define RXE_r1(insn) (((insn) >> 52) & 0xf)
+#define RXE_x2(insn) (((insn) >> 48) & 0xf)
+#define RXE_b2(insn) (((insn) >> 44) & 0xf)
+#define RXE_d2(insn) (((insn) >> 32) & 0xfff)
+#define RXE_m3(insn) (((insn) >> 28) & 0xf)
+#define RXF_r3(insn) (((insn) >> 52) & 0xf)
+#define RXF_x2(insn) (((insn) >> 48) & 0xf)
+#define RXF_b2(insn) (((insn) >> 44) & 0xf)
+#define RXF_d2(insn) (((insn) >> 32) & 0xfff)
+#define RXF_r1(insn) (((insn) >> 28) & 0xf)
+#define RXY_r1(insn) (((insn) >> 52) & 0xf)
+#define RXY_x2(insn) (((insn) >> 48) & 0xf)
+#define RXY_b2(insn) (((insn) >> 44) & 0xf)
+#define RXY_dl2(insn) (((insn) >> 32) & 0xfff)
+#define RXY_dh2(insn) (((insn) >> 24) & 0xff)
+#define SIY_i2(insn) (((insn) >> 48) & 0xff)
+#define SIY_b1(insn) (((insn) >> 44) & 0xf)
+#define SIY_dl1(insn) (((insn) >> 32) & 0xfff)
+#define SIY_dh1(insn) (((insn) >> 24) & 0xff)
+#define SS_l(insn) (((insn) >> 48) & 0xff)
+#define SS_b1(insn) (((insn) >> 44) & 0xf)
+#define SS_d1(insn) (((insn) >> 32) & 0xfff)
+#define SS_b2(insn) (((insn) >> 28) & 0xf)
+#define SS_d2(insn) (((insn) >> 16) & 0xfff)
+#define SIL_b1(insn) (((insn) >> 44) & 0xf)
+#define SIL_d1(insn) (((insn) >> 32) & 0xfff)
+#define SIL_i2(insn) (((insn) >> 16) & 0xffff)
+#define VRX_v1(insn) (((insn) >> 52) & 0xf)
+#define VRX_x2(insn) (((insn) >> 48) & 0xf)
+#define VRX_b2(insn) (((insn) >> 44) & 0xf)
+#define VRX_d2(insn) (((insn) >> 32) & 0xfff)
+#define VRX_m3(insn) (((insn) >> 28) & 0xf)
+#define VRX_rxb(insn) (((insn) >> 24) & 0xf)
+#define VRR_v1(insn) (((insn) >> 52) & 0xf)
+#define VRR_v2(insn) (((insn) >> 48) & 0xf)
+#define VRR_r3(insn) (((insn) >> 44) & 0xf)
+#define VRR_m5(insn) (((insn) >> 36) & 0xf)
+#define VRR_m4(insn) (((insn) >> 28) & 0xf)
+#define VRR_rxb(insn) (((insn) >> 24) & 0xf)
+#define VRRa_v1(insn) (((insn) >> 52) & 0xf)
+#define VRRa_v2(insn) (((insn) >> 48) & 0xf)
+#define VRRa_v3(insn) (((insn) >> 44) & 0xf)
+#define VRRa_m5(insn) (((insn) >> 36) & 0xf)
+#define VRRa_m4(insn) (((insn) >> 32) & 0xf)
+#define VRRa_m3(insn) (((insn) >> 28) & 0xf)
+#define VRRa_rxb(insn) (((insn) >> 24) & 0xf)
+#define VRRd_v1(insn) (((insn) >> 52) & 0xf)
+#define VRRd_v2(insn) (((insn) >> 48) & 0xf)
+#define VRRd_v3(insn) (((insn) >> 44) & 0xf)
+#define VRRd_m5(insn) (((insn) >> 40) & 0xf)
+#define VRRd_m6(insn) (((insn) >> 36) & 0xf)
+#define VRRd_v4(insn) (((insn) >> 28) & 0xf)
+#define VRRd_rxb(insn) (((insn) >> 24) & 0xf)
+#define VRRe_v1(insn) (((insn) >> 52) & 0xf)
+#define VRRe_v2(insn) (((insn) >> 48) & 0xf)
+#define VRRe_v3(insn) (((insn) >> 44) & 0xf)
+#define VRRe_m6(insn) (((insn) >> 40) & 0xf)
+#define VRRe_m5(insn) (((insn) >> 32) & 0xf)
+#define VRRe_v4(insn) (((insn) >> 28) & 0xf)
+#define VRRe_rxb(insn) (((insn) >> 24) & 0xf)
+#define VRI_v1(insn) (((insn) >> 52) & 0xf)
+#define VRI_v3(insn) (((insn) >> 48) & 0xf)
+#define VRI_i2(insn) (((insn) >> 32) & 0xffff)
+#define VRI_m3(insn) (((insn) >> 28) & 0xf)
+#define VRI_rxb(insn) (((insn) >> 24) & 0xf)
+#define VRId_v1(insn) (((insn) >> 52) & 0xf)
+#define VRId_v2(insn) (((insn) >> 48) & 0xf)
+#define VRId_v3(insn) (((insn) >> 44) & 0xf)
+#define VRId_i4(insn) (((insn) >> 32) & 0xff)
+#define VRId_m5(insn) (((insn) >> 28) & 0xf)
+#define VRId_rxb(insn) (((insn) >> 24) & 0xf)
+#define VRIe_v1(insn) (((insn) >> 52) & 0xf)
+#define VRIe_v2(insn) (((insn) >> 48) & 0xf)
+#define VRIe_i3(insn) (((insn) >> 36) & 0xfff)
+#define VRIe_m5(insn) (((insn) >> 32) & 0xf)
+#define VRIe_m4(insn) (((insn) >> 28) & 0xf)
+#define VRIe_rxb(insn) (((insn) >> 24) & 0xf)
+#define VRS_v1(insn) (((insn) >> 52) & 0xf)
+#define VRS_v3(insn) (((insn) >> 48) & 0xf)
+#define VRS_b2(insn) (((insn) >> 44) & 0xf)
+#define VRS_d2(insn) (((insn) >> 32) & 0xfff)
+#define VRS_m4(insn) (((insn) >> 28) & 0xf)
+#define VRS_rxb(insn) (((insn) >> 24) & 0xf)
+
+
 /*------------------------------------------------------------*/
 /*--- Helpers for constructing IR.                         ---*/
 /*------------------------------------------------------------*/
@@ -12577,21 +12742,10 @@ s390_irgen_EX_SS(UChar r, IRTemp addr2,
                  void (*irgen)(IRTemp length, IRTemp start1, IRTemp start2),
                  UInt lensize)
 {
-   struct SS {
-      unsigned int op :  8;
-      unsigned int l  :  8;
-      unsigned int b1 :  4;
-      unsigned int d1 : 12;
-      unsigned int b2 :  4;
-      unsigned int d2 : 12;
-   };
-   union {
-      struct SS dec;
-      unsigned long bytes;
-   } ss;
    IRTemp cond;
    IRDirty *d;
    IRTemp torun;
+   unsigned long ovl;
 
    IRTemp start1 = newTemp(Ity_I64);
    IRTemp start2 = newTemp(Ity_I64);
@@ -12614,14 +12768,13 @@ s390_irgen_EX_SS(UChar r, IRTemp addr2,
    stmt(IRStmt_Put(S390X_GUEST_OFFSET(guest_CMLEN), mkU64(4)));
    restart_if(mkexpr(cond));
 
-   ss.dec.op = ss.dec.l = ss.dec.b1 = ss.dec.d1 = ss.dec.b2 = ss.dec.d2 = 0;
-   ss.bytes = last_execute_target;
-   assign(start1, binop(Iop_Add64, mkU64(ss.dec.d1),
-          ss.dec.b1 != 0 ? get_gpr_dw0(ss.dec.b1) : mkU64(0)));
-   assign(start2, binop(Iop_Add64, mkU64(ss.dec.d2),
-          ss.dec.b2 != 0 ? get_gpr_dw0(ss.dec.b2) : mkU64(0)));
+   ovl = last_execute_target;
+   assign(start1, binop(Iop_Add64, mkU64(SS_d1(ovl)),
+          SS_b1(ovl) != 0 ? get_gpr_dw0(SS_b1(ovl)) : mkU64(0)));
+   assign(start2, binop(Iop_Add64, mkU64(SS_d2(ovl)),
+          SS_b2(ovl) != 0 ? get_gpr_dw0(SS_b2(ovl)) : mkU64(0)));
    assign(len, unop(lensize == 64 ? Iop_8Uto64 : Iop_8Uto32, binop(Iop_Or8,
-          r != 0 ? get_gpr_b7(r): mkU8(0), mkU8(ss.dec.l))));
+          r != 0 ? get_gpr_b7(r): mkU8(0), mkU8(SS_l(ovl)))));
    irgen(len, start1, start2);
 
    last_execute_target = 0;
@@ -12741,11 +12894,14 @@ static const HChar *
 s390_irgen_EXRL(UChar r1, UInt offset)
 {
    IRTemp addr = newTemp(Ity_I64);
+   Addr64 bytes_addr = guest_IA_curr_instr + offset * 2UL;
+   UChar *bytes = (UChar *)(HWord)bytes_addr;
    /* we might save one round trip because we know the target */
    if (!last_execute_target)
-      last_execute_target = *(ULong *)(HWord)
-                             (guest_IA_curr_instr + offset * 2UL);
-   assign(addr, mkU64(guest_IA_curr_instr + offset * 2UL));
+      last_execute_target = ((ULong)bytes[0] << 56) | ((ULong)bytes[1] << 48) |
+                            ((ULong)bytes[2] << 40) | ((ULong)bytes[3] << 32) |
+                            ((ULong)bytes[4] << 24) | ((ULong)bytes[5] << 16);
+   assign(addr, mkU64(bytes_addr));
    s390_irgen_EX(r1, addr);
    return "exrl";
 }
@@ -18637,38 +18793,12 @@ s390_irgen_call_noredir(void)
    dis_res->jk_StopHere = Ijk_NoRedir;
 }
 
-/* Force proper alignment for the structures below. */
-#pragma pack(1)
-
-
 static s390_decode_t
 s390_decode_2byte_and_irgen(const UChar *bytes)
 {
-   typedef union {
-      struct {
-         unsigned int op : 16;
-      } E;
-      struct {
-         unsigned int op :  8;
-         unsigned int i  :  8;
-      } I;
-      struct {
-         unsigned int op :  8;
-         unsigned int r1 :  4;
-         unsigned int r2 :  4;
-      } RR;
-   } formats;
-   union {
-      formats fmt;
-      UShort value;
-   } ovl;
-
-   vassert(sizeof(formats) == 2);
-
-   ((UChar *)(&ovl.value))[0] = bytes[0];
-   ((UChar *)(&ovl.value))[1] = bytes[1];
-
-   switch (ovl.value & 0xffff) {
+   UShort ovl = ((UShort)bytes[0] << 8) | (UShort)bytes[1];
+
+   switch (ovl & 0xffff) {
    case 0x0101: /* PR */ goto unimplemented;
    case 0x0102: /* UPT */ goto unimplemented;
    case 0x0104: /* PTFF */ goto unimplemented;
@@ -18681,53 +18811,53 @@ s390_decode_2byte_and_irgen(const UChar *bytes)
    case 0x01ff: /* TRAP2 */ goto unimplemented;
    }
 
-   switch ((ovl.value & 0xff00) >> 8) {
+   switch ((ovl & 0xff00) >> 8) {
    case 0x04: /* SPM */ goto unimplemented;
    case 0x05: /* BALR */ goto unimplemented;
-   case 0x06: s390_format_RR_RR(s390_irgen_BCTR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x06: s390_format_RR_RR(s390_irgen_BCTR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x07: s390_format_RR(s390_irgen_BCR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x07: s390_format_RR(s390_irgen_BCR, RR_r1(ovl), RR_r2(ovl));
                              goto ok;
-   case 0x0a: s390_format_I(s390_irgen_SVC, ovl.fmt.I.i);  goto ok;
+   case 0x0a: s390_format_I(s390_irgen_SVC, I_i(ovl));  goto ok;
    case 0x0b: /* BSM */ goto unimplemented;
    case 0x0c: /* BASSM */ goto unimplemented;
-   case 0x0d: s390_format_RR_RR(s390_irgen_BASR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x0d: s390_format_RR_RR(s390_irgen_BASR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x0e: s390_format_RR(s390_irgen_MVCL, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x0e: s390_format_RR(s390_irgen_MVCL, RR_r1(ovl), RR_r2(ovl));
                              goto ok;
-   case 0x0f: s390_format_RR(s390_irgen_CLCL, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x0f: s390_format_RR(s390_irgen_CLCL, RR_r1(ovl), RR_r2(ovl));
                              goto ok;
-   case 0x10: s390_format_RR_RR(s390_irgen_LPR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x10: s390_format_RR_RR(s390_irgen_LPR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x11: s390_format_RR_RR(s390_irgen_LNR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x11: s390_format_RR_RR(s390_irgen_LNR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x12: s390_format_RR_RR(s390_irgen_LTR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x12: s390_format_RR_RR(s390_irgen_LTR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x13: s390_format_RR_RR(s390_irgen_LCR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x13: s390_format_RR_RR(s390_irgen_LCR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x14: s390_format_RR_RR(s390_irgen_NR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x14: s390_format_RR_RR(s390_irgen_NR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x15: s390_format_RR_RR(s390_irgen_CLR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x15: s390_format_RR_RR(s390_irgen_CLR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x16: s390_format_RR_RR(s390_irgen_OR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x16: s390_format_RR_RR(s390_irgen_OR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x17: s390_format_RR_RR(s390_irgen_XR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x17: s390_format_RR_RR(s390_irgen_XR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x18: s390_format_RR_RR(s390_irgen_LR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x18: s390_format_RR_RR(s390_irgen_LR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x19: s390_format_RR_RR(s390_irgen_CR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x19: s390_format_RR_RR(s390_irgen_CR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x1a: s390_format_RR_RR(s390_irgen_AR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x1a: s390_format_RR_RR(s390_irgen_AR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x1b: s390_format_RR_RR(s390_irgen_SR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x1b: s390_format_RR_RR(s390_irgen_SR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x1c: s390_format_RR_RR(s390_irgen_MR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x1c: s390_format_RR_RR(s390_irgen_MR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x1d: s390_format_RR_RR(s390_irgen_DR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x1d: s390_format_RR_RR(s390_irgen_DR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x1e: s390_format_RR_RR(s390_irgen_ALR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x1e: s390_format_RR_RR(s390_irgen_ALR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
-   case 0x1f: s390_format_RR_RR(s390_irgen_SLR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x1f: s390_format_RR_RR(s390_irgen_SLR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
    case 0x20: /* LPDR */ goto unimplemented;
    case 0x21: /* LNDR */ goto unimplemented;
@@ -18737,7 +18867,7 @@ s390_decode_2byte_and_irgen(const UChar *bytes)
    case 0x25: /* LDXR */ goto unimplemented;
    case 0x26: /* MXR */ goto unimplemented;
    case 0x27: /* MXDR */ goto unimplemented;
-   case 0x28: s390_format_RR_FF(s390_irgen_LDR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x28: s390_format_RR_FF(s390_irgen_LDR, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
    case 0x29: /* CDR */ goto unimplemented;
    case 0x2a: /* ADR */ goto unimplemented;
@@ -18754,7 +18884,7 @@ s390_decode_2byte_and_irgen(const UChar *bytes)
    case 0x35: /* LEDR */ goto unimplemented;
    case 0x36: /* AXR */ goto unimplemented;
    case 0x37: /* SXR */ goto unimplemented;
-   case 0x38: s390_format_RR_FF(s390_irgen_LER, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+   case 0x38: s390_format_RR_FF(s390_irgen_LER, RR_r1(ovl), RR_r2(ovl));
                                 goto ok;
    case 0x39: /* CER */ goto unimplemented;
    case 0x3a: /* AER */ goto unimplemented;
@@ -18777,179 +18907,83 @@ unimplemented:
 static s390_decode_t
 s390_decode_4byte_and_irgen(const UChar *bytes)
 {
-   typedef union {
-      struct {
-         unsigned int op1 :  8;
-         unsigned int r1  :  4;
-         unsigned int op2 :  4;
-         unsigned int i2  : 16;
-      } RI;
-      struct {
-         unsigned int op : 16;
-         unsigned int    :  8;
-         unsigned int r1 :  4;
-         unsigned int r2 :  4;
-      } RRE;
-      struct {
-         unsigned int op : 16;
-         unsigned int r1 :  4;
-         unsigned int    :  4;
-         unsigned int r3 :  4;
-         unsigned int r2 :  4;
-      } RRF;
-      struct {
-         unsigned int op : 16;
-         unsigned int m3 :  4;
-         unsigned int m4 :  4;
-         unsigned int r1 :  4;
-         unsigned int r2 :  4;
-      } RRF2;
-      struct {
-         unsigned int op : 16;
-         unsigned int r3 :  4;
-         unsigned int    :  4;
-         unsigned int r1 :  4;
-         unsigned int r2 :  4;
-      } RRF3;
-      struct {
-         unsigned int op : 16;
-         unsigned int r3 :  4;
-         unsigned int    :  4;
-         unsigned int r1 :  4;
-         unsigned int r2 :  4;
-      } RRR;
-      struct {
-         unsigned int op : 16;
-         unsigned int r3 :  4;
-         unsigned int m4 :  4;
-         unsigned int r1 :  4;
-         unsigned int r2 :  4;
-      } RRF4;
-      struct {
-         unsigned int op : 16;
-         unsigned int    :  4;
-         unsigned int m4 :  4;
-         unsigned int r1 :  4;
-         unsigned int r2 :  4;
-      } RRF5;
-      struct {
-         unsigned int op :  8;
-         unsigned int r1 :  4;
-         unsigned int r3 :  4;
-         unsigned int b2 :  4;
-         unsigned int d2 : 12;
-      } RS;
-      struct {
-         unsigned int op :  8;
-         unsigned int r1 :  4;
-         unsigned int r3 :  4;
-         unsigned int i2 : 16;
-      } RSI;
-      struct {
-         unsigned int op :  8;
-         unsigned int r1 :  4;
-         unsigned int x2 :  4;
-         unsigned int b2 :  4;
-         unsigned int d2 : 12;
-      } RX;
-      struct {
-         unsigned int op : 16;
-         unsigned int b2 :  4;
-         unsigned int d2 : 12;
-      } S;
-      struct {
-         unsigned int op :  8;
-         unsigned int i2 :  8;
-         unsigned int b1 :  4;
-         unsigned int d1 : 12;
-      } SI;
-   } formats;
-   union {
-      formats fmt;
-      UInt value;
-   } ovl;
-
-   vassert(sizeof(formats) == 4);
-
-   ((UChar *)(&ovl.value))[0] = bytes[0];
-   ((UChar *)(&ovl.value))[1] = bytes[1];
-   ((UChar *)(&ovl.value))[2] = bytes[2];
-   ((UChar *)(&ovl.value))[3] = bytes[3];
-
-   switch ((ovl.value & 0xff0f0000) >> 16) {
-   case 0xa500: s390_format_RI_RU(s390_irgen_IIHH, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa501: s390_format_RI_RU(s390_irgen_IIHL, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa502: s390_format_RI_RU(s390_irgen_IILH, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa503: s390_format_RI_RU(s390_irgen_IILL, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa504: s390_format_RI_RU(s390_irgen_NIHH, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa505: s390_format_RI_RU(s390_irgen_NIHL, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa506: s390_format_RI_RU(s390_irgen_NILH, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa507: s390_format_RI_RU(s390_irgen_NILL, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa508: s390_format_RI_RU(s390_irgen_OIHH, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa509: s390_format_RI_RU(s390_irgen_OIHL, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa50a: s390_format_RI_RU(s390_irgen_OILH, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa50b: s390_format_RI_RU(s390_irgen_OILL, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa50c: s390_format_RI_RU(s390_irgen_LLIHH, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa50d: s390_format_RI_RU(s390_irgen_LLIHL, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa50e: s390_format_RI_RU(s390_irgen_LLILH, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa50f: s390_format_RI_RU(s390_irgen_LLILL, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa700: s390_format_RI_RU(s390_irgen_TMLH, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa701: s390_format_RI_RU(s390_irgen_TMLL, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa702: s390_format_RI_RU(s390_irgen_TMHH, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa703: s390_format_RI_RU(s390_irgen_TMHL, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa704: s390_format_RI(s390_irgen_BRC, ovl.fmt.RI.r1, ovl.fmt.RI.i2);
+   UInt ovl = ((UInt)bytes[0] << 24) | ((UInt)bytes[1] << 16) |
+              ((UInt)bytes[2] << 8) | (UInt)bytes[3];
+
+   switch ((ovl & 0xff0f0000) >> 16) {
+   case 0xa500: s390_format_RI_RU(s390_irgen_IIHH, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa501: s390_format_RI_RU(s390_irgen_IIHL, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa502: s390_format_RI_RU(s390_irgen_IILH, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa503: s390_format_RI_RU(s390_irgen_IILL, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa504: s390_format_RI_RU(s390_irgen_NIHH, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa505: s390_format_RI_RU(s390_irgen_NIHL, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa506: s390_format_RI_RU(s390_irgen_NILH, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa507: s390_format_RI_RU(s390_irgen_NILL, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa508: s390_format_RI_RU(s390_irgen_OIHH, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa509: s390_format_RI_RU(s390_irgen_OIHL, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa50a: s390_format_RI_RU(s390_irgen_OILH, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa50b: s390_format_RI_RU(s390_irgen_OILL, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa50c: s390_format_RI_RU(s390_irgen_LLIHH, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa50d: s390_format_RI_RU(s390_irgen_LLIHL, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa50e: s390_format_RI_RU(s390_irgen_LLILH, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa50f: s390_format_RI_RU(s390_irgen_LLILL, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa700: s390_format_RI_RU(s390_irgen_TMLH, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa701: s390_format_RI_RU(s390_irgen_TMLL, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa702: s390_format_RI_RU(s390_irgen_TMHH, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa703: s390_format_RI_RU(s390_irgen_TMHL, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa704: s390_format_RI(s390_irgen_BRC, RI_r1(ovl), RI_i2(ovl));
                                goto ok;
-   case 0xa705: s390_format_RI_RP(s390_irgen_BRAS, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa706: s390_format_RI_RP(s390_irgen_BRCT, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa707: s390_format_RI_RP(s390_irgen_BRCTG, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa708: s390_format_RI_RI(s390_irgen_LHI, ovl.fmt.RI.r1, ovl.fmt.RI.i2);
+   case 0xa705: s390_format_RI_RP(s390_irgen_BRAS, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa706: s390_format_RI_RP(s390_irgen_BRCT, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa707: s390_format_RI_RP(s390_irgen_BRCTG, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa708: s390_format_RI_RI(s390_irgen_LHI, RI_r1(ovl), RI_i2(ovl));
                                   goto ok;
-   case 0xa709: s390_format_RI_RI(s390_irgen_LGHI, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa70a: s390_format_RI_RI(s390_irgen_AHI, ovl.fmt.RI.r1, ovl.fmt.RI.i2);
+   case 0xa709: s390_format_RI_RI(s390_irgen_LGHI, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa70a: s390_format_RI_RI(s390_irgen_AHI, RI_r1(ovl), RI_i2(ovl));
                                   goto ok;
-   case 0xa70b: s390_format_RI_RI(s390_irgen_AGHI, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa70c: s390_format_RI_RI(s390_irgen_MHI, ovl.fmt.RI.r1, ovl.fmt.RI.i2);
+   case 0xa70b: s390_format_RI_RI(s390_irgen_AGHI, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa70c: s390_format_RI_RI(s390_irgen_MHI, RI_r1(ovl), RI_i2(ovl));
                                   goto ok;
-   case 0xa70d: s390_format_RI_RI(s390_irgen_MGHI, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
-   case 0xa70e: s390_format_RI_RI(s390_irgen_CHI, ovl.fmt.RI.r1, ovl.fmt.RI.i2);
+   case 0xa70d: s390_format_RI_RI(s390_irgen_MGHI, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
+   case 0xa70e: s390_format_RI_RI(s390_irgen_CHI, RI_r1(ovl), RI_i2(ovl));
                                   goto ok;
-   case 0xa70f: s390_format_RI_RI(s390_irgen_CGHI, ovl.fmt.RI.r1,
-                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa70f: s390_format_RI_RI(s390_irgen_CGHI, RI_r1(ovl),
+                                  RI_i2(ovl));  goto ok;
    }
 
-   switch ((ovl.value & 0xffff0000) >> 16) {
+   switch ((ovl & 0xffff0000) >> 16) {
    case 0x8000: /* SSM */ goto unimplemented;
    case 0x8200: /* LPSW */ goto unimplemented;
    case 0x9300: /* TS */ goto unimplemented;
    case 0xb202: /* STIDP */ goto unimplemented;
    case 0xb204: /* SCK */ goto unimplemented;
-   case 0xb205: s390_format_S_RD(s390_irgen_STCK, ovl.fmt.S.b2, ovl.fmt.S.d2);
+   case 0xb205: s390_format_S_RD(s390_irgen_STCK, S_b2(ovl), S_d2(ovl));
                 goto ok;
    case 0xb206: /* SCKC */ goto unimplemented;
    case 0xb207: /* STCKC */ goto unimplemented;
@@ -18966,7 +19000,7 @@ s390_decode_4byte_and_irgen(const UChar *bytes)
    case 0xb219: /* SAC */ goto unimplemented;
    case 0xb21a: /* CFC */ goto unimplemented;
    case 0xb221: /* IPTE */ goto unimplemented;
-   case 0xb222: s390_format_RRE_R0(s390_irgen_IPM, ovl.fmt.RRE.r1);  goto ok;
+   case 0xb222: s390_format_RRE_R0(s390_irgen_IPM, RRE_r1(ovl));  goto ok;
    case 0xb223: /* IVSK */ goto unimplemented;
    case 0xb224: /* IAC */ goto unimplemented;
    case 0xb225: /* SSAR */ goto unimplemented;
@@ -18994,8 +19028,8 @@ s390_decode_4byte_and_irgen(const UChar *bytes)
    case 0xb23b: /* RCHP */ goto unimplemented;
    case 0xb23c: /* SCHM */ goto unimplemented;
    case 0xb240: /* BAKR */ goto unimplemented;
-   case 0xb241: s390_format_RRE(s390_irgen_CKSM, ovl.fmt.RRE.r1,
-                                ovl.fmt.RRE.r2);  goto ok;
+   case 0xb241: s390_format_RRE(s390_irgen_CKSM, RRE_r1(ovl),
+                                RRE_r2(ovl));  goto ok;
    case 0xb244: /* SQDR */ goto unimplemented;
    case 0xb245: /* SQER */ goto unimplemented;
    case 0xb246: /* STURA */ goto unimplemented;
@@ -19005,32 +19039,32 @@ s390_decode_4byte_and_irgen(const UChar *bytes)
    case 0xb24a: /* ESTA */ goto unimplemented;
    case 0xb24b: /* LURA */ goto unimplemented;
    case 0xb24c: /* TAR */ goto unimplemented;
-   case 0xb24d: s390_format_RRE(s390_irgen_CPYA, ovl.fmt.RRE.r1,
-                                ovl.fmt.RRE.r2);  goto ok;
-   case 0xb24e: s390_format_RRE(s390_irgen_SAR, ovl.fmt.RRE.r1, ovl.fmt.RRE.r2);
+   case 0xb24d: s390_format_RRE(s390_irgen_CPYA, RRE_r1(ovl),
+                                RRE_r2(ovl));  goto ok;
+   case 0xb24e: s390_format_RRE(s390_irgen_SAR, RRE_r1(ovl), RRE_r2(ovl));
                                 goto ok;
-   case 0xb24f: s390_format_RRE(s390_irgen_EAR, ovl.fmt.RRE.r1, ovl.fmt.RRE.r2);
+   case 0xb24f: s390_format_RRE(s390_irgen_EAR, RRE_r1(ovl), RRE_r2(ovl));
                                 goto ok;
    case 0xb250: /* CSP */ goto unimplemented;
-   case 0xb252: s390_format_RRE_RR(s390_irgen_MSR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb252: s390_format_RRE_RR(s390_irgen_MSR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb254: /* MVPG */ goto unimplemented;
-   case 0xb255: s390_format_RRE_RR(s390_irgen_MVST, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb255: s390_format_RRE_RR(s390_irgen_MVST, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb257: /* CUSE */ goto unimplemented;
    case 0xb258: /* BSG */ goto unimplemented;
    case 0xb25a: /* BSA */ goto unimplemented;
-   case 0xb25d: s390_format_RRE_RR(s390_irgen_CLST, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb25e: s390_format_RRE_RR(s390_irgen_SRST, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb25d: s390_format_RRE_RR(s390_irgen_CLST, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb25e: s390_format_RRE_RR(s390_irgen_SRST, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb263: /* CMPSC */ goto unimplemented;
    case 0xb274: /* SIGA */ goto unimplemented;
    case 0xb276: /* XSCH */ goto unimplemented;
    case 0xb277: /* RP */ goto unimplemented;
-   case 0xb278: s390_format_S_RD(s390_irgen_STCKE, ovl.fmt.S.b2, ovl.fmt.S.d2);goto ok;
+   case 0xb278: s390_format_S_RD(s390_irgen_STCKE, S_b2(ovl), S_d2(ovl));goto ok;
    case 0xb279: /* SACF */ goto unimplemented;
-   case 0xb27c: s390_format_S_RD(s390_irgen_STCKF, ovl.fmt.S.b2, ovl.fmt.S.d2);goto ok;
+   case 0xb27c: s390_format_S_RD(s390_irgen_STCKF, S_b2(ovl), S_d2(ovl));goto ok;
    case 0xb27d: /* STSI */ goto unimplemented;
    case 0xb280: /* LPP */ goto unimplemented;
    case 0xb284: /* LCCTL */ goto unimplemented;
@@ -19038,26 +19072,26 @@ s390_decode_4byte_and_irgen(const UChar *bytes)
    case 0xb286: /* QSI */ goto unimplemented;
    case 0xb287: /* LSCTL */ goto unimplemented;
    case 0xb28e: /* QCTRI */ goto unimplemented;
-   case 0xb299: s390_format_S_RD(s390_irgen_SRNM, ovl.fmt.S.b2, ovl.fmt.S.d2);
+   case 0xb299: s390_format_S_RD(s390_irgen_SRNM, S_b2(ovl), S_d2(ovl));
                                  goto ok;
-   case 0xb29c: s390_format_S_RD(s390_irgen_STFPC, ovl.fmt.S.b2, ovl.fmt.S.d2);
+   case 0xb29c: s390_format_S_RD(s390_irgen_STFPC, S_b2(ovl), S_d2(ovl));
                                  goto ok;
-   case 0xb29d: s390_format_S_RD(s390_irgen_LFPC, ovl.fmt.S.b2, ovl.fmt.S.d2);
+   case 0xb29d: s390_format_S_RD(s390_irgen_LFPC, S_b2(ovl), S_d2(ovl));
                                  goto ok;
-   case 0xb2a5: s390_format_RRE_FF(s390_irgen_TRE, ovl.fmt.RRE.r1, ovl.fmt.RRE.r2);  goto ok;
-   case 0xb2a6: s390_format_RRF_M0RERE(s390_irgen_CU21, ovl.fmt.RRF3.r3,
-                                       ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);
+   case 0xb2a5: s390_format_RRE_FF(s390_irgen_TRE, RRE_r1(ovl), RRE_r2(ovl));  goto ok;
+   case 0xb2a6: s390_format_RRF_M0RERE(s390_irgen_CU21, RRF3_r3(ovl),
+                                       RRF3_r1(ovl), RRF3_r2(ovl));
       goto ok;
-   case 0xb2a7: s390_format_RRF_M0RERE(s390_irgen_CU12, ovl.fmt.RRF3.r3,
-                                       ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);
+   case 0xb2a7: s390_format_RRF_M0RERE(s390_irgen_CU12, RRF3_r3(ovl),
+                                       RRF3_r1(ovl), RRF3_r2(ovl));
       goto ok;
-   case 0xb2b0: s390_format_S_RD(s390_irgen_STFLE, ovl.fmt.S.b2, ovl.fmt.S.d2);
+   case 0xb2b0: s390_format_S_RD(s390_irgen_STFLE, S_b2(ovl), S_d2(ovl));
                                  goto ok;
    case 0xb2b1: /* STFL */ goto unimplemented;
    case 0xb2b2: /* LPSWE */ goto unimplemented;
-   case 0xb2b8: s390_irgen_srnmb_wrapper(ovl.fmt.S.b2, ovl.fmt.S.d2);
+   case 0xb2b8: s390_irgen_srnmb_wrapper(S_b2(ovl), S_d2(ovl));
       goto ok;
-   case 0xb2b9: s390_format_S_RD(s390_irgen_SRNMT, ovl.fmt.S.b2, ovl.fmt.S.d2);
+   case 0xb2b9: s390_format_S_RD(s390_irgen_SRNMT, S_b2(ovl), S_d2(ovl));
       goto ok;
    case 0xb2bd: /* LFAS */ goto unimplemented;
    case 0xb2e0: /* SCCTR */ goto unimplemented;
@@ -19071,68 +19105,68 @@ s390_decode_4byte_and_irgen(const UChar *bytes)
    case 0xb2fa: /* NIAI */ goto unimplemented;
    case 0xb2fc: /* TABORT */ goto unimplemented;
    case 0xb2ff: /* TRAP4 */ goto unimplemented;
-   case 0xb300: s390_format_RRE_FF(s390_irgen_LPEBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb301: s390_format_RRE_FF(s390_irgen_LNEBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb302: s390_format_RRE_FF(s390_irgen_LTEBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb303: s390_format_RRE_FF(s390_irgen_LCEBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb304: s390_format_RRE_FF(s390_irgen_LDEBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb305: s390_format_RRE_FF(s390_irgen_LXDBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb306: s390_format_RRE_FF(s390_irgen_LXEBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb300: s390_format_RRE_FF(s390_irgen_LPEBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb301: s390_format_RRE_FF(s390_irgen_LNEBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb302: s390_format_RRE_FF(s390_irgen_LTEBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb303: s390_format_RRE_FF(s390_irgen_LCEBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb304: s390_format_RRE_FF(s390_irgen_LDEBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb305: s390_format_RRE_FF(s390_irgen_LXDBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb306: s390_format_RRE_FF(s390_irgen_LXEBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb307: /* MXDBR */ goto unimplemented;
    case 0xb308: /* KEBR */ goto unimplemented;
-   case 0xb309: s390_format_RRE_FF(s390_irgen_CEBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb30a: s390_format_RRE_FF(s390_irgen_AEBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb30b: s390_format_RRE_FF(s390_irgen_SEBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb309: s390_format_RRE_FF(s390_irgen_CEBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb30a: s390_format_RRE_FF(s390_irgen_AEBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb30b: s390_format_RRE_FF(s390_irgen_SEBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb30c: /* MDEBR */ goto unimplemented;
-   case 0xb30d: s390_format_RRE_FF(s390_irgen_DEBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb30e: s390_format_RRF_F0FF(s390_irgen_MAEBR, ovl.fmt.RRF.r1,
-                                     ovl.fmt.RRF.r3, ovl.fmt.RRF.r2);  goto ok;
-   case 0xb30f: s390_format_RRF_F0FF(s390_irgen_MSEBR, ovl.fmt.RRF.r1,
-                                     ovl.fmt.RRF.r3, ovl.fmt.RRF.r2);  goto ok;
-   case 0xb310: s390_format_RRE_FF(s390_irgen_LPDBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb311: s390_format_RRE_FF(s390_irgen_LNDBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb312: s390_format_RRE_FF(s390_irgen_LTDBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb313: s390_format_RRE_FF(s390_irgen_LCDBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb314: s390_format_RRE_FF(s390_irgen_SQEBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb315: s390_format_RRE_FF(s390_irgen_SQDBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb316: s390_format_RRE_FF(s390_irgen_SQXBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb317: s390_format_RRE_FF(s390_irgen_MEEBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb30d: s390_format_RRE_FF(s390_irgen_DEBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb30e: s390_format_RRF_F0FF(s390_irgen_MAEBR, RRF_r1(ovl),
+                                     RRF_r3(ovl), RRF_r2(ovl));  goto ok;
+   case 0xb30f: s390_format_RRF_F0FF(s390_irgen_MSEBR, RRF_r1(ovl),
+                                     RRF_r3(ovl), RRF_r2(ovl));  goto ok;
+   case 0xb310: s390_format_RRE_FF(s390_irgen_LPDBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb311: s390_format_RRE_FF(s390_irgen_LNDBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb312: s390_format_RRE_FF(s390_irgen_LTDBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb313: s390_format_RRE_FF(s390_irgen_LCDBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb314: s390_format_RRE_FF(s390_irgen_SQEBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb315: s390_format_RRE_FF(s390_irgen_SQDBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb316: s390_format_RRE_FF(s390_irgen_SQXBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb317: s390_format_RRE_FF(s390_irgen_MEEBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb318: /* KDBR */ goto unimplemented;
-   case 0xb319: s390_format_RRE_FF(s390_irgen_CDBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb31a: s390_format_RRE_FF(s390_irgen_ADBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb31b: s390_format_RRE_FF(s390_irgen_SDBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb31c: s390_format_RRE_FF(s390_irgen_MDBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb31d: s390_format_RRE_FF(s390_irgen_DDBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb31e: s390_format_RRF_F0FF(s390_irgen_MADBR, ovl.fmt.RRF.r1,
-                                     ovl.fmt.RRF.r3, ovl.fmt.RRF.r2);  goto ok;
-   case 0xb31f: s390_format_RRF_F0FF(s390_irgen_MSDBR, ovl.fmt.RRF.r1,
-                                     ovl.fmt.RRF.r3, ovl.fmt.RRF.r2);  goto ok;
-   case 0xb324: s390_format_RRE_FF(s390_irgen_LDER, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2); goto ok;
+   case 0xb319: s390_format_RRE_FF(s390_irgen_CDBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb31a: s390_format_RRE_FF(s390_irgen_ADBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb31b: s390_format_RRE_FF(s390_irgen_SDBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb31c: s390_format_RRE_FF(s390_irgen_MDBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb31d: s390_format_RRE_FF(s390_irgen_DDBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb31e: s390_format_RRF_F0FF(s390_irgen_MADBR, RRF_r1(ovl),
+                                     RRF_r3(ovl), RRF_r2(ovl));  goto ok;
+   case 0xb31f: s390_format_RRF_F0FF(s390_irgen_MSDBR, RRF_r1(ovl),
+                                     RRF_r3(ovl), RRF_r2(ovl));  goto ok;
+   case 0xb324: s390_format_RRE_FF(s390_irgen_LDER, RRE_r1(ovl),
+                                   RRE_r2(ovl)); goto ok;
    case 0xb325: /* LXDR */ goto unimplemented;
    case 0xb326: /* LXER */ goto unimplemented;
    case 0xb32e: /* MAER */ goto unimplemented;
@@ -19147,325 +19181,325 @@ s390_decode_4byte_and_irgen(const UChar *bytes)
    case 0xb33d: /* MYHR */ goto unimplemented;
    case 0xb33e: /* MADR */ goto unimplemented;
    case 0xb33f: /* MSDR */ goto unimplemented;
-   case 0xb340: s390_format_RRE_FF(s390_irgen_LPXBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb341: s390_format_RRE_FF(s390_irgen_LNXBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb342: s390_format_RRE_FF(s390_irgen_LTXBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb343: s390_format_RRE_FF(s390_irgen_LCXBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb344: s390_format_RRF_UUFF(s390_irgen_LEDBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb345: s390_format_RRF_UUFF(s390_irgen_LDXBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb346: s390_format_RRF_UUFF(s390_irgen_LEXBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb347: s390_format_RRF_UUFF(s390_irgen_FIXBRA, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
+   case 0xb340: s390_format_RRE_FF(s390_irgen_LPXBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb341: s390_format_RRE_FF(s390_irgen_LNXBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb342: s390_format_RRE_FF(s390_irgen_LTXBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb343: s390_format_RRE_FF(s390_irgen_LCXBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb344: s390_format_RRF_UUFF(s390_irgen_LEDBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb345: s390_format_RRF_UUFF(s390_irgen_LDXBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb346: s390_format_RRF_UUFF(s390_irgen_LEXBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb347: s390_format_RRF_UUFF(s390_irgen_FIXBRA, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
    case 0xb348: /* KXBR */ goto unimplemented;
-   case 0xb349: s390_format_RRE_FF(s390_irgen_CXBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb34a: s390_format_RRE_FF(s390_irgen_AXBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb34b: s390_format_RRE_FF(s390_irgen_SXBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb34c: s390_format_RRE_FF(s390_irgen_MXBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb34d: s390_format_RRE_FF(s390_irgen_DXBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb349: s390_format_RRE_FF(s390_irgen_CXBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb34a: s390_format_RRE_FF(s390_irgen_AXBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb34b: s390_format_RRE_FF(s390_irgen_SXBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb34c: s390_format_RRE_FF(s390_irgen_MXBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb34d: s390_format_RRE_FF(s390_irgen_DXBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb350: /* TBEDR */ goto unimplemented;
    case 0xb351: /* TBDR */ goto unimplemented;
    case 0xb353: /* DIEBR */ goto unimplemented;
-   case 0xb357: s390_format_RRF_UUFF(s390_irgen_FIEBRA, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
+   case 0xb357: s390_format_RRF_UUFF(s390_irgen_FIEBRA, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
    case 0xb358: /* THDER */ goto unimplemented;
    case 0xb359: /* THDR */ goto unimplemented;
    case 0xb35b: /* DIDBR */ goto unimplemented;
-   case 0xb35f: s390_format_RRF_UUFF(s390_irgen_FIDBRA, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
+   case 0xb35f: s390_format_RRF_UUFF(s390_irgen_FIDBRA, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
    case 0xb360: /* LPXR */ goto unimplemented;
    case 0xb361: /* LNXR */ goto unimplemented;
    case 0xb362: /* LTXR */ goto unimplemented;
    case 0xb363: /* LCXR */ goto unimplemented;
-   case 0xb365: s390_format_RRE_FF(s390_irgen_LXR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb365: s390_format_RRE_FF(s390_irgen_LXR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb366: /* LEXR */ goto unimplemented;
    case 0xb367: /* FIXR */ goto unimplemented;
    case 0xb369: /* CXR */ goto unimplemented;
-   case 0xb370: s390_format_RRE_FF(s390_irgen_LPDFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb371: s390_format_RRE_FF(s390_irgen_LNDFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb372: s390_format_RRF_F0FF2(s390_irgen_CPSDR, ovl.fmt.RRF3.r3,
-                                      ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);
+   case 0xb370: s390_format_RRE_FF(s390_irgen_LPDFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb371: s390_format_RRE_FF(s390_irgen_LNDFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb372: s390_format_RRF_F0FF2(s390_irgen_CPSDR, RRF3_r3(ovl),
+                                      RRF3_r1(ovl), RRF3_r2(ovl));
                                       goto ok;
-   case 0xb373: s390_format_RRE_FF(s390_irgen_LCDFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb374: s390_format_RRE_F0(s390_irgen_LZER, ovl.fmt.RRE.r1);  goto ok;
-   case 0xb375: s390_format_RRE_F0(s390_irgen_LZDR, ovl.fmt.RRE.r1);  goto ok;
-   case 0xb376: s390_format_RRE_F0(s390_irgen_LZXR, ovl.fmt.RRE.r1);  goto ok;
+   case 0xb373: s390_format_RRE_FF(s390_irgen_LCDFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb374: s390_format_RRE_F0(s390_irgen_LZER, RRE_r1(ovl));  goto ok;
+   case 0xb375: s390_format_RRE_F0(s390_irgen_LZDR, RRE_r1(ovl));  goto ok;
+   case 0xb376: s390_format_RRE_F0(s390_irgen_LZXR, RRE_r1(ovl));  goto ok;
    case 0xb377: /* FIER */ goto unimplemented;
    case 0xb37f: /* FIDR */ goto unimplemented;
-   case 0xb384: s390_format_RRE_R0(s390_irgen_SFPC, ovl.fmt.RRE.r1);  goto ok;
+   case 0xb384: s390_format_RRE_R0(s390_irgen_SFPC, RRE_r1(ovl));  goto ok;
    case 0xb385: /* SFASR */ goto unimplemented;
-   case 0xb38c: s390_format_RRE_R0(s390_irgen_EFPC, ovl.fmt.RRE.r1);  goto ok;
-   case 0xb390: s390_format_RRF_UUFR(s390_irgen_CELFBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb391: s390_format_RRF_UUFR(s390_irgen_CDLFBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb392: s390_format_RRF_UUFR(s390_irgen_CXLFBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb394: s390_format_RRF_UUFR(s390_irgen_CEFBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb395: s390_format_RRF_UUFR(s390_irgen_CDFBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb396: s390_format_RRF_UUFR(s390_irgen_CXFBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb398: s390_format_RRF_UURF(s390_irgen_CFEBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb399: s390_format_RRF_UURF(s390_irgen_CFDBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb39a: s390_format_RRF_UURF(s390_irgen_CFXBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb39c: s390_format_RRF_UURF(s390_irgen_CLFEBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb39d: s390_format_RRF_UURF(s390_irgen_CLFDBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb39e: s390_format_RRF_UURF(s390_irgen_CLFXBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb3a0: s390_format_RRF_UUFR(s390_irgen_CELGBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb3a1: s390_format_RRF_UUFR(s390_irgen_CDLGBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb3a2: s390_format_RRF_UUFR(s390_irgen_CXLGBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb3a4: s390_format_RRF_UUFR(s390_irgen_CEGBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb3a5: s390_format_RRF_UUFR(s390_irgen_CDGBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb3a6: s390_format_RRF_UUFR(s390_irgen_CXGBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb3a8: s390_format_RRF_UURF(s390_irgen_CGEBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb3a9: s390_format_RRF_UURF(s390_irgen_CGDBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb3aa: s390_format_RRF_UURF(s390_irgen_CGXBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb3ac: s390_format_RRF_UURF(s390_irgen_CLGEBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb3ad: s390_format_RRF_UURF(s390_irgen_CLGDBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb3ae: s390_format_RRF_UURF(s390_irgen_CLGXBR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
+   case 0xb38c: s390_format_RRE_R0(s390_irgen_EFPC, RRE_r1(ovl));  goto ok;
+   case 0xb390: s390_format_RRF_UUFR(s390_irgen_CELFBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb391: s390_format_RRF_UUFR(s390_irgen_CDLFBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb392: s390_format_RRF_UUFR(s390_irgen_CXLFBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb394: s390_format_RRF_UUFR(s390_irgen_CEFBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb395: s390_format_RRF_UUFR(s390_irgen_CDFBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb396: s390_format_RRF_UUFR(s390_irgen_CXFBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb398: s390_format_RRF_UURF(s390_irgen_CFEBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb399: s390_format_RRF_UURF(s390_irgen_CFDBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb39a: s390_format_RRF_UURF(s390_irgen_CFXBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb39c: s390_format_RRF_UURF(s390_irgen_CLFEBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb39d: s390_format_RRF_UURF(s390_irgen_CLFDBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb39e: s390_format_RRF_UURF(s390_irgen_CLFXBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb3a0: s390_format_RRF_UUFR(s390_irgen_CELGBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb3a1: s390_format_RRF_UUFR(s390_irgen_CDLGBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb3a2: s390_format_RRF_UUFR(s390_irgen_CXLGBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb3a4: s390_format_RRF_UUFR(s390_irgen_CEGBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb3a5: s390_format_RRF_UUFR(s390_irgen_CDGBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb3a6: s390_format_RRF_UUFR(s390_irgen_CXGBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb3a8: s390_format_RRF_UURF(s390_irgen_CGEBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb3a9: s390_format_RRF_UURF(s390_irgen_CGDBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb3aa: s390_format_RRF_UURF(s390_irgen_CGXBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb3ac: s390_format_RRF_UURF(s390_irgen_CLGEBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb3ad: s390_format_RRF_UURF(s390_irgen_CLGDBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb3ae: s390_format_RRF_UURF(s390_irgen_CLGXBR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
    case 0xb3b4: /* CEFR */ goto unimplemented;
    case 0xb3b5: /* CDFR */ goto unimplemented;
    case 0xb3b6: /* CXFR */ goto unimplemented;
    case 0xb3b8: /* CFER */ goto unimplemented;
    case 0xb3b9: /* CFDR */ goto unimplemented;
    case 0xb3ba: /* CFXR */ goto unimplemented;
-   case 0xb3c1: s390_format_RRE_FR(s390_irgen_LDGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb3c1: s390_format_RRE_FR(s390_irgen_LDGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb3c4: /* CEGR */ goto unimplemented;
    case 0xb3c5: /* CDGR */ goto unimplemented;
    case 0xb3c6: /* CXGR */ goto unimplemented;
    case 0xb3c8: /* CGER */ goto unimplemented;
    case 0xb3c9: /* CGDR */ goto unimplemented;
    case 0xb3ca: /* CGXR */ goto unimplemented;
-   case 0xb3cd: s390_format_RRE_RF(s390_irgen_LGDR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb3d0: s390_format_RRF_FUFF2(s390_irgen_MDTRA, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.m4, ovl.fmt.RRF4.r1,
-                                      ovl.fmt.RRF4.r2); goto ok;
-   case 0xb3d1: s390_format_RRF_FUFF2(s390_irgen_DDTRA, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.m4, ovl.fmt.RRF4.r1,
-                                      ovl.fmt.RRF4.r2); goto ok;
-   case 0xb3d2: s390_format_RRF_FUFF2(s390_irgen_ADTRA, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.m4, ovl.fmt.RRF4.r1,
-                                      ovl.fmt.RRF4.r2); goto ok;
-   case 0xb3d3: s390_format_RRF_FUFF2(s390_irgen_SDTRA, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.m4, ovl.fmt.RRF4.r1,
-                                      ovl.fmt.RRF4.r2); goto ok;
-   case 0xb3d4: s390_format_RRF_0UFF(s390_irgen_LDETR, ovl.fmt.RRF5.m4,
-                                     ovl.fmt.RRF5.r1, ovl.fmt.RRF5.r2); goto ok;
-   case 0xb3d5: s390_format_RRF_UUFF(s390_irgen_LEDTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb3d6: s390_format_RRE_FF(s390_irgen_LTDTR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb3cd: s390_format_RRE_RF(s390_irgen_LGDR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb3d0: s390_format_RRF_FUFF2(s390_irgen_MDTRA, RRF4_r3(ovl),
+                                      RRF4_m4(ovl), RRF4_r1(ovl),
+                                      RRF4_r2(ovl)); goto ok;
+   case 0xb3d1: s390_format_RRF_FUFF2(s390_irgen_DDTRA, RRF4_r3(ovl),
+                                      RRF4_m4(ovl), RRF4_r1(ovl),
+                                      RRF4_r2(ovl)); goto ok;
+   case 0xb3d2: s390_format_RRF_FUFF2(s390_irgen_ADTRA, RRF4_r3(ovl),
+                                      RRF4_m4(ovl), RRF4_r1(ovl),
+                                      RRF4_r2(ovl)); goto ok;
+   case 0xb3d3: s390_format_RRF_FUFF2(s390_irgen_SDTRA, RRF4_r3(ovl),
+                                      RRF4_m4(ovl), RRF4_r1(ovl),
+                                      RRF4_r2(ovl)); goto ok;
+   case 0xb3d4: s390_format_RRF_0UFF(s390_irgen_LDETR, RRF5_m4(ovl),
+                                     RRF5_r1(ovl), RRF5_r2(ovl)); goto ok;
+   case 0xb3d5: s390_format_RRF_UUFF(s390_irgen_LEDTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb3d6: s390_format_RRE_FF(s390_irgen_LTDTR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb3d7: /* FIDTR */ goto unimplemented;
-   case 0xb3d8: s390_format_RRF_FUFF2(s390_irgen_MXTRA, ovl.fmt.RRF4.r3,
-                                     ovl.fmt.RRF4.m4, ovl.fmt.RRF4.r1,
-                                     ovl.fmt.RRF4.r2); goto ok;
-   case 0xb3d9: s390_format_RRF_FUFF2(s390_irgen_DXTRA, ovl.fmt.RRF4.r3,
-                                     ovl.fmt.RRF4.m4, ovl.fmt.RRF4.r1,
-                                     ovl.fmt.RRF4.r2); goto ok;
-   case 0xb3da: s390_format_RRF_FUFF2(s390_irgen_AXTRA, ovl.fmt.RRF4.r3,
-                                     ovl.fmt.RRF4.m4, ovl.fmt.RRF4.r1,
-                                     ovl.fmt.RRF4.r2); goto ok;
-   case 0xb3db: s390_format_RRF_FUFF2(s390_irgen_SXTRA, ovl.fmt.RRF4.r3,
-                                     ovl.fmt.RRF4.m4, ovl.fmt.RRF4.r1,
-                                     ovl.fmt.RRF4.r2); goto ok;
-   case 0xb3dc: s390_format_RRF_0UFF(s390_irgen_LXDTR, ovl.fmt.RRF5.m4,
-                                     ovl.fmt.RRF5.r1, ovl.fmt.RRF5.r2); goto ok;
-   case 0xb3dd: s390_format_RRF_UUFF(s390_irgen_LDXTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb3de: s390_format_RRE_FF(s390_irgen_LTXTR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb3d8: s390_format_RRF_FUFF2(s390_irgen_MXTRA, RRF4_r3(ovl),
+                                     RRF4_m4(ovl), RRF4_r1(ovl),
+                                     RRF4_r2(ovl)); goto ok;
+   case 0xb3d9: s390_format_RRF_FUFF2(s390_irgen_DXTRA, RRF4_r3(ovl),
+                                     RRF4_m4(ovl), RRF4_r1(ovl),
+                                     RRF4_r2(ovl)); goto ok;
+   case 0xb3da: s390_format_RRF_FUFF2(s390_irgen_AXTRA, RRF4_r3(ovl),
+                                     RRF4_m4(ovl), RRF4_r1(ovl),
+                                     RRF4_r2(ovl)); goto ok;
+   case 0xb3db: s390_format_RRF_FUFF2(s390_irgen_SXTRA, RRF4_r3(ovl),
+                                     RRF4_m4(ovl), RRF4_r1(ovl),
+                                     RRF4_r2(ovl)); goto ok;
+   case 0xb3dc: s390_format_RRF_0UFF(s390_irgen_LXDTR, RRF5_m4(ovl),
+                                     RRF5_r1(ovl), RRF5_r2(ovl)); goto ok;
+   case 0xb3dd: s390_format_RRF_UUFF(s390_irgen_LDXTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb3de: s390_format_RRE_FF(s390_irgen_LTXTR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb3df: /* FIXTR */ goto unimplemented;
    case 0xb3e0: /* KDTR */ goto unimplemented;
-   case 0xb3e1: s390_format_RRF_UURF(s390_irgen_CGDTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
+   case 0xb3e1: s390_format_RRF_UURF(s390_irgen_CGDTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
    case 0xb3e2: /* CUDTR */ goto unimplemented;
    case 0xb3e3: /* CSDTR */ goto unimplemented;
-   case 0xb3e4: s390_format_RRE_FF(s390_irgen_CDTR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb3e5: s390_format_RRE_RF(s390_irgen_EEDTR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb3e7: s390_format_RRE_RF(s390_irgen_ESDTR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb3e4: s390_format_RRE_FF(s390_irgen_CDTR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb3e5: s390_format_RRE_RF(s390_irgen_EEDTR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb3e7: s390_format_RRE_RF(s390_irgen_ESDTR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb3e8: /* KXTR */ goto unimplemented;
-   case 0xb3e9: s390_format_RRF_UURF(s390_irgen_CGXTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
+   case 0xb3e9: s390_format_RRF_UURF(s390_irgen_CGXTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
    case 0xb3ea: /* CUXTR */ goto unimplemented;
    case 0xb3eb: /* CSXTR */ goto unimplemented;
-   case 0xb3ec: s390_format_RRE_FF(s390_irgen_CXTR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb3ed: s390_format_RRE_RF(s390_irgen_EEXTR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb3ef: s390_format_RRE_RF(s390_irgen_ESXTR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb3f1: s390_format_RRF_UUFR(s390_irgen_CDGTRA, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
+   case 0xb3ec: s390_format_RRE_FF(s390_irgen_CXTR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb3ed: s390_format_RRE_RF(s390_irgen_EEXTR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb3ef: s390_format_RRE_RF(s390_irgen_ESXTR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb3f1: s390_format_RRF_UUFR(s390_irgen_CDGTRA, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
    case 0xb3f2: /* CDUTR */ goto unimplemented;
    case 0xb3f3: /* CDSTR */ goto unimplemented;
-   case 0xb3f4: s390_format_RRE_FF(s390_irgen_CEDTR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb3f5: s390_format_RRF_FUFF(s390_irgen_QADTR, ovl.fmt.RRF4.r3,
-                                     ovl.fmt.RRF4.m4, ovl.fmt.RRF4.r1,
-                                     ovl.fmt.RRF4.r2); goto ok;
-   case 0xb3f6: s390_format_RRF_F0FR(s390_irgen_IEDTR, ovl.fmt.RRF3.r3,
-                                     ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2); goto ok;
-   case 0xb3f7: s390_format_RRF_FFRU(s390_irgen_RRDTR, ovl.fmt.RRF4.r3,
-                                     ovl.fmt.RRF4.m4, ovl.fmt.RRF4.r1,
-                                     ovl.fmt.RRF4.r2); goto ok;
-   case 0xb3f9: s390_format_RRF_UUFR(s390_irgen_CXGTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
+   case 0xb3f4: s390_format_RRE_FF(s390_irgen_CEDTR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb3f5: s390_format_RRF_FUFF(s390_irgen_QADTR, RRF4_r3(ovl),
+                                     RRF4_m4(ovl), RRF4_r1(ovl),
+                                     RRF4_r2(ovl)); goto ok;
+   case 0xb3f6: s390_format_RRF_F0FR(s390_irgen_IEDTR, RRF3_r3(ovl),
+                                     RRF3_r1(ovl), RRF3_r2(ovl)); goto ok;
+   case 0xb3f7: s390_format_RRF_FFRU(s390_irgen_RRDTR, RRF4_r3(ovl),
+                                     RRF4_m4(ovl), RRF4_r1(ovl),
+                                     RRF4_r2(ovl)); goto ok;
+   case 0xb3f9: s390_format_RRF_UUFR(s390_irgen_CXGTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
    case 0xb3fa: /* CXUTR */ goto unimplemented;
    case 0xb3fb: /* CXSTR */ goto unimplemented;
-   case 0xb3fc: s390_format_RRE_FF(s390_irgen_CEXTR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb3fd: s390_format_RRF_FUFF(s390_irgen_QAXTR, ovl.fmt.RRF4.r3,
-                                     ovl.fmt.RRF4.m4, ovl.fmt.RRF4.r1,
-                                     ovl.fmt.RRF4.r2); goto ok;
-   case 0xb3fe: s390_format_RRF_F0FR(s390_irgen_IEXTR, ovl.fmt.RRF3.r3,
-                                     ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2); goto ok;
-   case 0xb3ff: s390_format_RRF_FFRU(s390_irgen_RRXTR, ovl.fmt.RRF4.r3,
-                                     ovl.fmt.RRF4.m4, ovl.fmt.RRF4.r1,
-                                     ovl.fmt.RRF4.r2); goto ok;
-   case 0xb900: s390_format_RRE_RR(s390_irgen_LPGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb901: s390_format_RRE_RR(s390_irgen_LNGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb902: s390_format_RRE_RR(s390_irgen_LTGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb903: s390_format_RRE_RR(s390_irgen_LCGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb904: s390_format_RRE_RR(s390_irgen_LGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb3fc: s390_format_RRE_FF(s390_irgen_CEXTR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb3fd: s390_format_RRF_FUFF(s390_irgen_QAXTR, RRF4_r3(ovl),
+                                     RRF4_m4(ovl), RRF4_r1(ovl),
+                                     RRF4_r2(ovl)); goto ok;
+   case 0xb3fe: s390_format_RRF_F0FR(s390_irgen_IEXTR, RRF3_r3(ovl),
+                                     RRF3_r1(ovl), RRF3_r2(ovl)); goto ok;
+   case 0xb3ff: s390_format_RRF_FFRU(s390_irgen_RRXTR, RRF4_r3(ovl),
+                                     RRF4_m4(ovl), RRF4_r1(ovl),
+                                     RRF4_r2(ovl)); goto ok;
+   case 0xb900: s390_format_RRE_RR(s390_irgen_LPGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb901: s390_format_RRE_RR(s390_irgen_LNGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb902: s390_format_RRE_RR(s390_irgen_LTGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb903: s390_format_RRE_RR(s390_irgen_LCGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb904: s390_format_RRE_RR(s390_irgen_LGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb905: /* LURAG */ goto unimplemented;
-   case 0xb906: s390_format_RRE_RR(s390_irgen_LGBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb907: s390_format_RRE_RR(s390_irgen_LGHR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb908: s390_format_RRE_RR(s390_irgen_AGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb909: s390_format_RRE_RR(s390_irgen_SGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb90a: s390_format_RRE_RR(s390_irgen_ALGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb90b: s390_format_RRE_RR(s390_irgen_SLGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb90c: s390_format_RRE_RR(s390_irgen_MSGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb90d: s390_format_RRE_RR(s390_irgen_DSGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb906: s390_format_RRE_RR(s390_irgen_LGBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb907: s390_format_RRE_RR(s390_irgen_LGHR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb908: s390_format_RRE_RR(s390_irgen_AGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb909: s390_format_RRE_RR(s390_irgen_SGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb90a: s390_format_RRE_RR(s390_irgen_ALGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb90b: s390_format_RRE_RR(s390_irgen_SLGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb90c: s390_format_RRE_RR(s390_irgen_MSGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb90d: s390_format_RRE_RR(s390_irgen_DSGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb90e: /* EREGG */ goto unimplemented;
-   case 0xb90f: s390_format_RRE_RR(s390_irgen_LRVGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb910: s390_format_RRE_RR(s390_irgen_LPGFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb911: s390_format_RRE_RR(s390_irgen_LNGFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb912: s390_format_RRE_RR(s390_irgen_LTGFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb913: s390_format_RRE_RR(s390_irgen_LCGFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb914: s390_format_RRE_RR(s390_irgen_LGFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb916: s390_format_RRE_RR(s390_irgen_LLGFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb917: s390_format_RRE_RR(s390_irgen_LLGTR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb918: s390_format_RRE_RR(s390_irgen_AGFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb919: s390_format_RRE_RR(s390_irgen_SGFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb91a: s390_format_RRE_RR(s390_irgen_ALGFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb91b: s390_format_RRE_RR(s390_irgen_SLGFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb91c: s390_format_RRE_RR(s390_irgen_MSGFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb91d: s390_format_RRE_RR(s390_irgen_DSGFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb90f: s390_format_RRE_RR(s390_irgen_LRVGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb910: s390_format_RRE_RR(s390_irgen_LPGFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb911: s390_format_RRE_RR(s390_irgen_LNGFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb912: s390_format_RRE_RR(s390_irgen_LTGFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb913: s390_format_RRE_RR(s390_irgen_LCGFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb914: s390_format_RRE_RR(s390_irgen_LGFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb916: s390_format_RRE_RR(s390_irgen_LLGFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb917: s390_format_RRE_RR(s390_irgen_LLGTR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb918: s390_format_RRE_RR(s390_irgen_AGFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb919: s390_format_RRE_RR(s390_irgen_SGFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb91a: s390_format_RRE_RR(s390_irgen_ALGFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb91b: s390_format_RRE_RR(s390_irgen_SLGFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb91c: s390_format_RRE_RR(s390_irgen_MSGFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb91d: s390_format_RRE_RR(s390_irgen_DSGFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb91e: /* KMAC */ goto unimplemented;
-   case 0xb91f: s390_format_RRE_RR(s390_irgen_LRVR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb920: s390_format_RRE_RR(s390_irgen_CGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb921: s390_format_RRE_RR(s390_irgen_CLGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb91f: s390_format_RRE_RR(s390_irgen_LRVR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb920: s390_format_RRE_RR(s390_irgen_CGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb921: s390_format_RRE_RR(s390_irgen_CLGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb925: /* STURG */ goto unimplemented;
-   case 0xb926: s390_format_RRE_RR(s390_irgen_LBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb927: s390_format_RRE_RR(s390_irgen_LHR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb926: s390_format_RRE_RR(s390_irgen_LBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb927: s390_format_RRE_RR(s390_irgen_LHR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb928: /* PCKMO */ goto unimplemented;
    case 0xb929: /* KMA */ goto unimplemented;
    case 0xb92a: /* KMF */ goto unimplemented;
@@ -19474,108 +19508,108 @@ s390_decode_4byte_and_irgen(const UChar *bytes)
    case 0xb92d: /* KMCTR */ goto unimplemented;
    case 0xb92e: /* KM */ goto unimplemented;
    case 0xb92f: /* KMC */ goto unimplemented;
-   case 0xb930: s390_format_RRE_RR(s390_irgen_CGFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb931: s390_format_RRE_RR(s390_irgen_CLGFR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb93c: s390_format_RRE_RR(s390_irgen_PPNO, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb930: s390_format_RRE_RR(s390_irgen_CGFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb931: s390_format_RRE_RR(s390_irgen_CLGFR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb93c: s390_format_RRE_RR(s390_irgen_PPNO, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb93e: /* KIMD */ goto unimplemented;
    case 0xb93f: /* KLMD */ goto unimplemented;
-   case 0xb941: s390_format_RRF_UURF(s390_irgen_CFDTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb942: s390_format_RRF_UURF(s390_irgen_CLGDTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb943: s390_format_RRF_UURF(s390_irgen_CLFDTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb946: s390_format_RRE_RR(s390_irgen_BCTGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb949: s390_format_RRF_UURF(s390_irgen_CFXTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb94a: s390_format_RRF_UURF(s390_irgen_CLGXTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb94b: s390_format_RRF_UURF(s390_irgen_CLFXTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb951: s390_format_RRF_UUFR(s390_irgen_CDFTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb952: s390_format_RRF_UUFR(s390_irgen_CDLGTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb953: s390_format_RRF_UUFR(s390_irgen_CDLFTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb959: s390_format_RRF_UUFR(s390_irgen_CXFTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb95a: s390_format_RRF_UUFR(s390_irgen_CXLGTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb95b: s390_format_RRF_UUFR(s390_irgen_CXLFTR, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
-                                     ovl.fmt.RRF2.r2);  goto ok;
-   case 0xb960: s390_format_RRF_U0RR(s390_irgen_CGRT, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.r1, ovl.fmt.RRF2.r2,
+   case 0xb941: s390_format_RRF_UURF(s390_irgen_CFDTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb942: s390_format_RRF_UURF(s390_irgen_CLGDTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb943: s390_format_RRF_UURF(s390_irgen_CLFDTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb946: s390_format_RRE_RR(s390_irgen_BCTGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb949: s390_format_RRF_UURF(s390_irgen_CFXTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb94a: s390_format_RRF_UURF(s390_irgen_CLGXTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb94b: s390_format_RRF_UURF(s390_irgen_CLFXTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb951: s390_format_RRF_UUFR(s390_irgen_CDFTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb952: s390_format_RRF_UUFR(s390_irgen_CDLGTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb953: s390_format_RRF_UUFR(s390_irgen_CDLFTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb959: s390_format_RRF_UUFR(s390_irgen_CXFTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb95a: s390_format_RRF_UUFR(s390_irgen_CXLGTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb95b: s390_format_RRF_UUFR(s390_irgen_CXLFTR, RRF2_m3(ovl),
+                                     RRF2_m4(ovl), RRF2_r1(ovl),
+                                     RRF2_r2(ovl));  goto ok;
+   case 0xb960: s390_format_RRF_U0RR(s390_irgen_CGRT, RRF2_m3(ovl),
+                                     RRF2_r1(ovl), RRF2_r2(ovl),
                                      S390_XMNM_CAB); goto ok;
-   case 0xb961: s390_format_RRF_U0RR(s390_irgen_CLGRT, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.r1, ovl.fmt.RRF2.r2,
+   case 0xb961: s390_format_RRF_U0RR(s390_irgen_CLGRT, RRF2_m3(ovl),
+                                     RRF2_r1(ovl), RRF2_r2(ovl),
                                      S390_XMNM_CAB); goto ok;
-   case 0xb972: s390_format_RRF_U0RR(s390_irgen_CRT, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.r1, ovl.fmt.RRF2.r2,
+   case 0xb972: s390_format_RRF_U0RR(s390_irgen_CRT, RRF2_m3(ovl),
+                                     RRF2_r1(ovl), RRF2_r2(ovl),
                                      S390_XMNM_CAB); goto ok;
-   case 0xb973: s390_format_RRF_U0RR(s390_irgen_CLRT, ovl.fmt.RRF2.m3,
-                                     ovl.fmt.RRF2.r1, ovl.fmt.RRF2.r2,
+   case 0xb973: s390_format_RRF_U0RR(s390_irgen_CLRT, RRF2_m3(ovl),
+                                     RRF2_r1(ovl), RRF2_r2(ovl),
                                      S390_XMNM_CAB); goto ok;
-   case 0xb980: s390_format_RRE_RR(s390_irgen_NGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb981: s390_format_RRE_RR(s390_irgen_OGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb982: s390_format_RRE_RR(s390_irgen_XGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb983: s390_format_RRE_RR(s390_irgen_FLOGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb984: s390_format_RRE_RR(s390_irgen_LLGCR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb985: s390_format_RRE_RR(s390_irgen_LLGHR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb986: s390_format_RRE_RR(s390_irgen_MLGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb987: s390_format_RRE_RR(s390_irgen_DLGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb988: s390_format_RRE_RR(s390_irgen_ALCGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb989: s390_format_RRE_RR(s390_irgen_SLBGR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb980: s390_format_RRE_RR(s390_irgen_NGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb981: s390_format_RRE_RR(s390_irgen_OGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb982: s390_format_RRE_RR(s390_irgen_XGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb983: s390_format_RRE_RR(s390_irgen_FLOGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb984: s390_format_RRE_RR(s390_irgen_LLGCR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb985: s390_format_RRE_RR(s390_irgen_LLGHR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb986: s390_format_RRE_RR(s390_irgen_MLGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb987: s390_format_RRE_RR(s390_irgen_DLGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb988: s390_format_RRE_RR(s390_irgen_ALCGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb989: s390_format_RRE_RR(s390_irgen_SLBGR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb98a: /* CSPG */ goto unimplemented;
    case 0xb98d: /* EPSW */ goto unimplemented;
    case 0xb98e: /* IDTE */ goto unimplemented;
    case 0xb98f: /* CRDTE */ goto unimplemented;
-   case 0xb990: s390_format_RRF_M0RERE(s390_irgen_TRTT, ovl.fmt.RRF3.r3,
-                                   ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);  goto ok;
-   case 0xb991: s390_format_RRF_M0RERE(s390_irgen_TRTO, ovl.fmt.RRF3.r3,
-                                   ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);  goto ok;
-   case 0xb992: s390_format_RRF_M0RERE(s390_irgen_TROT, ovl.fmt.RRF3.r3,
-                                   ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);  goto ok;
-   case 0xb993: s390_format_RRF_M0RERE(s390_irgen_TROO, ovl.fmt.RRF3.r3,
-                                   ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);  goto ok;
-   case 0xb994: s390_format_RRE_RR(s390_irgen_LLCR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb995: s390_format_RRE_RR(s390_irgen_LLHR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb996: s390_format_RRE_RR(s390_irgen_MLR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb997: s390_format_RRE_RR(s390_irgen_DLR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb998: s390_format_RRE_RR(s390_irgen_ALCR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb999: s390_format_RRE_RR(s390_irgen_SLBR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb990: s390_format_RRF_M0RERE(s390_irgen_TRTT, RRF3_r3(ovl),
+                                   RRF3_r1(ovl), RRF3_r2(ovl));  goto ok;
+   case 0xb991: s390_format_RRF_M0RERE(s390_irgen_TRTO, RRF3_r3(ovl),
+                                   RRF3_r1(ovl), RRF3_r2(ovl));  goto ok;
+   case 0xb992: s390_format_RRF_M0RERE(s390_irgen_TROT, RRF3_r3(ovl),
+                                   RRF3_r1(ovl), RRF3_r2(ovl));  goto ok;
+   case 0xb993: s390_format_RRF_M0RERE(s390_irgen_TROO, RRF3_r3(ovl),
+                                   RRF3_r1(ovl), RRF3_r2(ovl));  goto ok;
+   case 0xb994: s390_format_RRE_RR(s390_irgen_LLCR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb995: s390_format_RRE_RR(s390_irgen_LLHR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb996: s390_format_RRE_RR(s390_irgen_MLR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb997: s390_format_RRE_RR(s390_irgen_DLR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb998: s390_format_RRE_RR(s390_irgen_ALCR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb999: s390_format_RRE_RR(s390_irgen_SLBR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb99a: /* EPAIR */ goto unimplemented;
    case 0xb99b: /* ESAIR */ goto unimplemented;
    case 0xb99d: /* ESEA */ goto unimplemented;
@@ -19585,174 +19619,174 @@ s390_decode_4byte_and_irgen(const UChar *bytes)
    case 0xb9aa: /* LPTEA */ goto unimplemented;
    case 0xb9ae: /* RRBM */ goto unimplemented;
    case 0xb9af: /* PFMF */ goto unimplemented;
-   case 0xb9b0: s390_format_RRF_M0RERE(s390_irgen_CU14, ovl.fmt.RRF3.r3,
-                                       ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);
+   case 0xb9b0: s390_format_RRF_M0RERE(s390_irgen_CU14, RRF3_r3(ovl),
+                                       RRF3_r1(ovl), RRF3_r2(ovl));
       goto ok;
-   case 0xb9b1: s390_format_RRF_M0RERE(s390_irgen_CU24, ovl.fmt.RRF3.r3,
-                                       ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);
+   case 0xb9b1: s390_format_RRF_M0RERE(s390_irgen_CU24, RRF3_r3(ovl),
+                                       RRF3_r1(ovl), RRF3_r2(ovl));
       goto ok;
-   case 0xb9b2: s390_format_RRE_RR(s390_irgen_CU41, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb9b3: s390_format_RRE_RR(s390_irgen_CU42, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb9b2: s390_format_RRE_RR(s390_irgen_CU41, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb9b3: s390_format_RRE_RR(s390_irgen_CU42, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
    case 0xb9bd: /* TRTRE */ goto unimplemented;
    case 0xb9be: /* SRSTU */ goto unimplemented;
    case 0xb9bf: /* TRTE */ goto unimplemented;
-   case 0xb9c8: s390_format_RRF_R0RR2(s390_irgen_AHHHR, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9c8: s390_format_RRF_R0RR2(s390_irgen_AHHHR, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9c9: s390_format_RRF_R0RR2(s390_irgen_SHHHR, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9c9: s390_format_RRF_R0RR2(s390_irgen_SHHHR, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9ca: s390_format_RRF_R0RR2(s390_irgen_ALHHHR, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9ca: s390_format_RRF_R0RR2(s390_irgen_ALHHHR, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9cb: s390_format_RRF_R0RR2(s390_irgen_SLHHHR, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9cb: s390_format_RRF_R0RR2(s390_irgen_SLHHHR, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9cd: s390_format_RRE_RR(s390_irgen_CHHR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb9cf: s390_format_RRE_RR(s390_irgen_CLHHR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb9d8: s390_format_RRF_R0RR2(s390_irgen_AHHLR, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9cd: s390_format_RRE_RR(s390_irgen_CHHR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb9cf: s390_format_RRE_RR(s390_irgen_CLHHR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb9d8: s390_format_RRF_R0RR2(s390_irgen_AHHLR, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9d9: s390_format_RRF_R0RR2(s390_irgen_SHHLR, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9d9: s390_format_RRF_R0RR2(s390_irgen_SHHLR, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9da: s390_format_RRF_R0RR2(s390_irgen_ALHHLR, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9da: s390_format_RRF_R0RR2(s390_irgen_ALHHLR, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9db: s390_format_RRF_R0RR2(s390_irgen_SLHHLR, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9db: s390_format_RRF_R0RR2(s390_irgen_SLHHLR, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9dd: s390_format_RRE_RR(s390_irgen_CHLR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb9df: s390_format_RRE_RR(s390_irgen_CLHLR, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb9e0: s390_format_RRF_U0RR(s390_irgen_LOCFHR, ovl.fmt.RRF3.r3,
-                                     ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2,
+   case 0xb9dd: s390_format_RRE_RR(s390_irgen_CHLR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb9df: s390_format_RRE_RR(s390_irgen_CLHLR, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb9e0: s390_format_RRF_U0RR(s390_irgen_LOCFHR, RRF3_r3(ovl),
+                                     RRF3_r1(ovl), RRF3_r2(ovl),
                                      S390_XMNM_LOCFHR);  goto ok;
-   case 0xb9e1: s390_format_RRE_RR(s390_irgen_POPCNT, ovl.fmt.RRE.r1,
-                                   ovl.fmt.RRE.r2);  goto ok;
-   case 0xb9e2: s390_format_RRF_U0RR(s390_irgen_LOCGR, ovl.fmt.RRF3.r3,
-                                     ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2,
+   case 0xb9e1: s390_format_RRE_RR(s390_irgen_POPCNT, RRE_r1(ovl),
+                                   RRE_r2(ovl));  goto ok;
+   case 0xb9e2: s390_format_RRF_U0RR(s390_irgen_LOCGR, RRF3_r3(ovl),
+                                     RRF3_r1(ovl), RRF3_r2(ovl),
                                      S390_XMNM_LOCGR);  goto ok;
-   case 0xb9e4: s390_format_RRF_R0RR2(s390_irgen_NGRK, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9e4: s390_format_RRF_R0RR2(s390_irgen_NGRK, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9e6: s390_format_RRF_R0RR2(s390_irgen_OGRK, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9e6: s390_format_RRF_R0RR2(s390_irgen_OGRK, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9e7: s390_format_RRF_R0RR2(s390_irgen_XGRK, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9e7: s390_format_RRF_R0RR2(s390_irgen_XGRK, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9e8: s390_format_RRF_R0RR2(s390_irgen_AGRK, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9e8: s390_format_RRF_R0RR2(s390_irgen_AGRK, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9e9: s390_format_RRF_R0RR2(s390_irgen_SGRK, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9e9: s390_format_RRF_R0RR2(s390_irgen_SGRK, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9ea: s390_format_RRF_R0RR2(s390_irgen_ALGRK, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9ea: s390_format_RRF_R0RR2(s390_irgen_ALGRK, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9eb: s390_format_RRF_R0RR2(s390_irgen_SLGRK, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9eb: s390_format_RRF_R0RR2(s390_irgen_SLGRK, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
    case 0xb9ec: /* MGRK */ goto unimplemented;
    case 0xb9ed: /* MSGRKC */ goto unimplemented;
-   case 0xb9f2: s390_format_RRF_U0RR(s390_irgen_LOCR, ovl.fmt.RRF3.r3,
-                                     ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2,
+   case 0xb9f2: s390_format_RRF_U0RR(s390_irgen_LOCR, RRF3_r3(ovl),
+                                     RRF3_r1(ovl), RRF3_r2(ovl),
                                      S390_XMNM_LOCR);  goto ok;
-   case 0xb9f4: s390_format_RRF_R0RR2(s390_irgen_NRK, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9f4: s390_format_RRF_R0RR2(s390_irgen_NRK, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9f6: s390_format_RRF_R0RR2(s390_irgen_ORK, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9f6: s390_format_RRF_R0RR2(s390_irgen_ORK, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9f7: s390_format_RRF_R0RR2(s390_irgen_XRK, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9f7: s390_format_RRF_R0RR2(s390_irgen_XRK, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9f8: s390_format_RRF_R0RR2(s390_irgen_ARK, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9f8: s390_format_RRF_R0RR2(s390_irgen_ARK, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9f9: s390_format_RRF_R0RR2(s390_irgen_SRK, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9f9: s390_format_RRF_R0RR2(s390_irgen_SRK, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9fa: s390_format_RRF_R0RR2(s390_irgen_ALRK, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9fa: s390_format_RRF_R0RR2(s390_irgen_ALRK, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
-   case 0xb9fb: s390_format_RRF_R0RR2(s390_irgen_SLRK, ovl.fmt.RRF4.r3,
-                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+   case 0xb9fb: s390_format_RRF_R0RR2(s390_irgen_SLRK, RRF4_r3(ovl),
+                                      RRF4_r1(ovl), RRF4_r2(ovl));
                                       goto ok;
    case 0xb9fd: /* MSRKC */ goto unimplemented;
    }
 
-   switch ((ovl.value & 0xff000000) >> 24) {
-   case 0x40: s390_format_RX_RRRD(s390_irgen_STH, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x41: s390_format_RX_RRRD(s390_irgen_LA, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x42: s390_format_RX_RRRD(s390_irgen_STC, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x43: s390_format_RX_RRRD(s390_irgen_IC, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x44: s390_format_RX_RRRD(s390_irgen_EX, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   switch ((ovl & 0xff000000) >> 24) {
+   case 0x40: s390_format_RX_RRRD(s390_irgen_STH, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x41: s390_format_RX_RRRD(s390_irgen_LA, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x42: s390_format_RX_RRRD(s390_irgen_STC, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x43: s390_format_RX_RRRD(s390_irgen_IC, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x44: s390_format_RX_RRRD(s390_irgen_EX, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
    case 0x45: /* BAL */ goto unimplemented;
-   case 0x46: s390_format_RX_RRRD(s390_irgen_BCT, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x47: s390_format_RX(s390_irgen_BC, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                             ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x48: s390_format_RX_RRRD(s390_irgen_LH, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x49: s390_format_RX_RRRD(s390_irgen_CH, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x4a: s390_format_RX_RRRD(s390_irgen_AH, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x4b: s390_format_RX_RRRD(s390_irgen_SH, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x4c: s390_format_RX_RRRD(s390_irgen_MH, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x4d: s390_format_RX_RRRD(s390_irgen_BAS, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x4e: s390_format_RX_RRRD(s390_irgen_CVD, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x4f: s390_format_RX_RRRD(s390_irgen_CVB, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x50: s390_format_RX_RRRD(s390_irgen_ST, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x51: s390_format_RX_RRRD(s390_irgen_LAE, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x54: s390_format_RX_RRRD(s390_irgen_N, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x55: s390_format_RX_RRRD(s390_irgen_CL, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x56: s390_format_RX_RRRD(s390_irgen_O, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x57: s390_format_RX_RRRD(s390_irgen_X, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x58: s390_format_RX_RRRD(s390_irgen_L, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x59: s390_format_RX_RRRD(s390_irgen_C, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x5a: s390_format_RX_RRRD(s390_irgen_A, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x5b: s390_format_RX_RRRD(s390_irgen_S, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x5c: s390_format_RX_RRRD(s390_irgen_M, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x5d: s390_format_RX_RRRD(s390_irgen_D, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x5e: s390_format_RX_RRRD(s390_irgen_AL, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x5f: s390_format_RX_RRRD(s390_irgen_SL, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x60: s390_format_RX_FRRD(s390_irgen_STD, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x46: s390_format_RX_RRRD(s390_irgen_BCT, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x47: s390_format_RX(s390_irgen_BC, RX_r1(ovl), RX_x2(ovl),
+                             RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x48: s390_format_RX_RRRD(s390_irgen_LH, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x49: s390_format_RX_RRRD(s390_irgen_CH, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x4a: s390_format_RX_RRRD(s390_irgen_AH, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x4b: s390_format_RX_RRRD(s390_irgen_SH, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x4c: s390_format_RX_RRRD(s390_irgen_MH, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x4d: s390_format_RX_RRRD(s390_irgen_BAS, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x4e: s390_format_RX_RRRD(s390_irgen_CVD, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x4f: s390_format_RX_RRRD(s390_irgen_CVB, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x50: s390_format_RX_RRRD(s390_irgen_ST, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x51: s390_format_RX_RRRD(s390_irgen_LAE, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x54: s390_format_RX_RRRD(s390_irgen_N, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x55: s390_format_RX_RRRD(s390_irgen_CL, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x56: s390_format_RX_RRRD(s390_irgen_O, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x57: s390_format_RX_RRRD(s390_irgen_X, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x58: s390_format_RX_RRRD(s390_irgen_L, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x59: s390_format_RX_RRRD(s390_irgen_C, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x5a: s390_format_RX_RRRD(s390_irgen_A, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x5b: s390_format_RX_RRRD(s390_irgen_S, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x5c: s390_format_RX_RRRD(s390_irgen_M, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x5d: s390_format_RX_RRRD(s390_irgen_D, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x5e: s390_format_RX_RRRD(s390_irgen_AL, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x5f: s390_format_RX_RRRD(s390_irgen_SL, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x60: s390_format_RX_FRRD(s390_irgen_STD, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
    case 0x67: /* MXD */ goto unimplemented;
-   case 0x68: s390_format_RX_FRRD(s390_irgen_LD, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x68: s390_format_RX_FRRD(s390_irgen_LD, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
    case 0x69: /* CD */ goto unimplemented;
    case 0x6a: /* AD */ goto unimplemented;
    case 0x6b: /* SD */ goto unimplemented;
@@ -19760,12 +19794,12 @@ s390_decode_4byte_and_irgen(const UChar *bytes)
    case 0x6d: /* DD */ goto unimplemented;
    case 0x6e: /* AW */ goto unimplemented;
    case 0x6f: /* SW */ goto unimplemented;
-   case 0x70: s390_format_RX_FRRD(s390_irgen_STE, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x71: s390_format_RX_RRRD(s390_irgen_MS, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
-   case 0x78: s390_format_RX_FRRD(s390_irgen_LE, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
-                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x70: s390_format_RX_FRRD(s390_irgen_STE, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x71: s390_format_RX_RRRD(s390_irgen_MS, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
+   case 0x78: s390_format_RX_FRRD(s390_irgen_LE, RX_r1(ovl), RX_x2(ovl),
+                                  RX_b2(ovl), RX_d2(ovl));  goto ok;
    case 0x79: /* CE */ goto unimplemented;
    case 0x7a: /* AE */ goto unimplemented;
    case 0x7b: /* SE */ goto unimplemented;
@@ -19774,56 +19808,56 @@ s390_decode_4byte_and_irgen(const UChar *bytes)
    case 0x7e: /* AU */ goto unimplemented;
    case 0x7f: /* SU */ goto unimplemented;
    case 0x83: /* DIAG */ goto unimplemented;
-   case 0x84: s390_format_RSI_RRP(s390_irgen_BRXH, ovl.fmt.RSI.r1,
-                                  ovl.fmt.RSI.r3, ovl.fmt.RSI.i2);  goto ok;
-   case 0x85: s390_format_RSI_RRP(s390_irgen_BRXLE, ovl.fmt.RSI.r1,
-                                  ovl.fmt.RSI.r3, ovl.fmt.RSI.i2);  goto ok;
-   case 0x86: s390_format_RS_RRRD(s390_irgen_BXH, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
-                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
-   case 0x87: s390_format_RS_RRRD(s390_irgen_BXLE, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
-                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
-   case 0x88: s390_format_RS_R0RD(s390_irgen_SRL, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
-                                  ovl.fmt.RS.d2);  goto ok;
-   case 0x89: s390_format_RS_R0RD(s390_irgen_SLL, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
-                                  ovl.fmt.RS.d2);  goto ok;
-   case 0x8a: s390_format_RS_R0RD(s390_irgen_SRA, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
-                                  ovl.fmt.RS.d2);  goto ok;
-   case 0x8b: s390_format_RS_R0RD(s390_irgen_SLA, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
-                                  ovl.fmt.RS.d2);  goto ok;
-   case 0x8c: s390_format_RS_R0RD(s390_irgen_SRDL, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
-                                  ovl.fmt.RS.d2);  goto ok;
-   case 0x8d: s390_format_RS_R0RD(s390_irgen_SLDL, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
-                                  ovl.fmt.RS.d2);  goto ok;
-   case 0x8e: s390_format_RS_R0RD(s390_irgen_SRDA, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
-                                  ovl.fmt.RS.d2);  goto ok;
-   case 0x8f: s390_format_RS_R0RD(s390_irgen_SLDA, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
-                                  ovl.fmt.RS.d2);  goto ok;
-   case 0x90: s390_format_RS_RRRD(s390_irgen_STM, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
-                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
-   case 0x91: s390_format_SI_URD(s390_irgen_TM, ovl.fmt.SI.i2, ovl.fmt.SI.b1,
-                                 ovl.fmt.SI.d1);  goto ok;
-   case 0x92: s390_format_SI_URD(s390_irgen_MVI, ovl.fmt.SI.i2, ovl.fmt.SI.b1,
-                                 ovl.fmt.SI.d1);  goto ok;
-   case 0x94: s390_format_SI_URD(s390_irgen_NI, ovl.fmt.SI.i2, ovl.fmt.SI.b1,
-                                 ovl.fmt.SI.d1);  goto ok;
-   case 0x95: s390_format_SI_URD(s390_irgen_CLI, ovl.fmt.SI.i2, ovl.fmt.SI.b1,
-                                 ovl.fmt.SI.d1);  goto ok;
-   case 0x96: s390_format_SI_URD(s390_irgen_OI, ovl.fmt.SI.i2, ovl.fmt.SI.b1,
-                                 ovl.fmt.SI.d1);  goto ok;
-   case 0x97: s390_format_SI_URD(s390_irgen_XI, ovl.fmt.SI.i2, ovl.fmt.SI.b1,
-                                 ovl.fmt.SI.d1);  goto ok;
-   case 0x98: s390_format_RS_RRRD(s390_irgen_LM, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
-                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
+   case 0x84: s390_format_RSI_RRP(s390_irgen_BRXH, RSI_r1(ovl),
+                                  RSI_r3(ovl), RSI_i2(ovl));  goto ok;
+   case 0x85: s390_format_RSI_RRP(s390_irgen_BRXLE, RSI_r1(ovl),
+                                  RSI_r3(ovl), RSI_i2(ovl));  goto ok;
+   case 0x86: s390_format_RS_RRRD(s390_irgen_BXH, RS_r1(ovl), RS_r3(ovl),
+                                  RS_b2(ovl), RS_d2(ovl));  goto ok;
+   case 0x87: s390_format_RS_RRRD(s390_irgen_BXLE, RS_r1(ovl), RS_r3(ovl),
+                                  RS_b2(ovl), RS_d2(ovl));  goto ok;
+   case 0x88: s390_format_RS_R0RD(s390_irgen_SRL, RS_r1(ovl), RS_b2(ovl),
+                                  RS_d2(ovl));  goto ok;
+   case 0x89: s390_format_RS_R0RD(s390_irgen_SLL, RS_r1(ovl), RS_b2(ovl),
+                                  RS_d2(ovl));  goto ok;
+   case 0x8a: s390_format_RS_R0RD(s390_irgen_SRA, RS_r1(ovl), RS_b2(ovl),
+                                  RS_d2(ovl));  goto ok;
+   case 0x8b: s390_format_RS_R0RD(s390_irgen_SLA, RS_r1(ovl), RS_b2(ovl),
+                                  RS_d2(ovl));  goto ok;
+   case 0x8c: s390_format_RS_R0RD(s390_irgen_SRDL, RS_r1(ovl), RS_b2(ovl),
+                                  RS_d2(ovl));  goto ok;
+   case 0x8d: s390_format_RS_R0RD(s390_irgen_SLDL, RS_r1(ovl), RS_b2(ovl),
+                                  RS_d2(ovl));  goto ok;
+   case 0x8e: s390_format_RS_R0RD(s390_irgen_SRDA, RS_r1(ovl), RS_b2(ovl),
+                                  RS_d2(ovl));  goto ok;
+   case 0x8f: s390_format_RS_R0RD(s390_irgen_SLDA, RS_r1(ovl), RS_b2(ovl),
+                                  RS_d2(ovl));  goto ok;
+   case 0x90: s390_format_RS_RRRD(s390_irgen_STM, RS_r1(ovl), RS_r3(ovl),
+                                  RS_b2(ovl), RS_d2(ovl));  goto ok;
+   case 0x91: s390_format_SI_URD(s390_irgen_TM, SI_i2(ovl), SI_b1(ovl),
+                                 SI_d1(ovl));  goto ok;
+   case 0x92: s390_format_SI_URD(s390_irgen_MVI, SI_i2(ovl), SI_b1(ovl),
+                                 SI_d1(ovl));  goto ok;
+   case 0x94: s390_format_SI_URD(s390_irgen_NI, SI_i2(ovl), SI_b1(ovl),
+                                 SI_d1(ovl));  goto ok;
+   case 0x95: s390_format_SI_URD(s390_irgen_CLI, SI_i2(ovl), SI_b1(ovl),
+                                 SI_d1(ovl));  goto ok;
+   case 0x96: s390_format_SI_URD(s390_irgen_OI, SI_i2(ovl), SI_b1(ovl),
+                                 SI_d1(ovl));  goto ok;
+   case 0x97: s390_format_SI_URD(s390_irgen_XI, SI_i2(ovl), SI_b1(ovl),
+                                 SI_d1(ovl));  goto ok;
+   case 0x98: s390_format_RS_RRRD(s390_irgen_LM, RS_r1(ovl), RS_r3(ovl),
+                                  RS_b2(ovl), RS_d2(ovl));  goto ok;
    case 0x99: /* TRACE */ goto unimplemented;
-   case 0x9a: s390_format_RS_AARD(s390_irgen_LAM, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
-                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
-   case 0x9b: s390_format_RS_AARD(s390_irgen_STAM, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
-                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
-   case 0xa8: s390_format_RS_RRRD(s390_irgen_MVCLE, ovl.fmt.RS.r1,
-                                  ovl.fmt.RS.r3, ovl.fmt.RS.b2, ovl.fmt.RS.d2);
+   case 0x9a: s390_format_RS_AARD(s390_irgen_LAM, RS_r1(ovl), RS_r3(ovl),
+                                  RS_b2(ovl), RS_d2(ovl));  goto ok;
+   case 0x9b: s390_format_RS_AARD(s390_irgen_STAM, RS_r1(ovl), RS_r3(ovl),
+                                  RS_b2(ovl), RS_d2(ovl));  goto ok;
+   case 0xa8: s390_format_RS_RRRD(s390_irgen_MVCLE, RS_r1(ovl),
+                                  RS_r3(ovl), RS_b2(ovl), RS_d2(ovl));
                                   goto ok;
-   case 0xa9: s390_format_RS_RRRD(s390_irgen_CLCLE, ovl.fmt.RS.r1,
-                                  ovl.fmt.RS.r3, ovl.fmt.RS.b2, ovl.fmt.RS.d2);
+   case 0xa9: s390_format_RS_RRRD(s390_irgen_CLCLE, RS_r1(ovl),
+                                  RS_r3(ovl), RS_b2(ovl), RS_d2(ovl));
                                   goto ok;
    case 0xac: /* STNSM */ goto unimplemented;
    case 0xad: /* STOSM */ goto unimplemented;
@@ -19832,16 +19866,16 @@ s390_decode_4byte_and_irgen(const UChar *bytes)
    case 0xb1: /* LRA */ goto unimplemented;
    case 0xb6: /* STCTL */ goto unimplemented;
    case 0xb7: /* LCTL */ goto unimplemented;
-   case 0xba: s390_format_RS_RRRD(s390_irgen_CS, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
-                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
-   case 0xbb: s390_format_RS_RRRD(s390_irgen_CDS, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
-                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
-   case 0xbd: s390_format_RS_RURD(s390_irgen_CLM, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
-                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
-   case 0xbe: s390_format_RS_RURD(s390_irgen_STCM, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
-                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
-   case 0xbf: s390_format_RS_RURD(s390_irgen_ICM, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
-                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
+   case 0xba: s390_format_RS_RRRD(s390_irgen_CS, RS_r1(ovl), RS_r3(ovl),
+                                  RS_b2(ovl), RS_d2(ovl));  goto ok;
+   case 0xbb: s390_format_RS_RRRD(s390_irgen_CDS, RS_r1(ovl), RS_r3(ovl),
+                                  RS_b2(ovl), RS_d2(ovl));  goto ok;
+   case 0xbd: s390_format_RS_RURD(s390_irgen_CLM, RS_r1(ovl), RS_r3(ovl),
+                                  RS_b2(ovl), RS_d2(ovl));  goto ok;
+   case 0xbe: s390_format_RS_RURD(s390_irgen_STCM, RS_r1(ovl), RS_r3(ovl),
+                                  RS_b2(ovl), RS_d2(ovl));  goto ok;
+   case 0xbf: s390_format_RS_RURD(s390_irgen_ICM, RS_r1(ovl), RS_r3(ovl),
+                                  RS_b2(ovl), RS_d2(ovl));  goto ok;
    }
 
    return S390_DECODE_UNKNOWN_INSN;
@@ -19856,705 +19890,412 @@ unimplemented:
 static s390_decode_t
 s390_decode_6byte_and_irgen(const UChar *bytes)
 {
-   typedef union {
-      struct {
-         unsigned int op1 :  8;
-         unsigned int r1  :  4;
-         unsigned int r3  :  4;
-         unsigned int i2  : 16;
-         unsigned int     :  8;
-         unsigned int op2 :  8;
-      } RIE;
-      struct {
-         unsigned int op1 :  8;
-         unsigned int r1  :  4;
-         unsigned int r2  :  4;
-         unsigned int i3  :  8;
-         unsigned int i4  :  8;
-         unsigned int i5  :  8;
-         unsigned int op2 :  8;
-      } RIE_RRUUU;
-      struct {
-         unsigned int op1 :  8;
-         unsigned int r1  :  4;
-         unsigned int     :  4;
-         unsigned int i2  : 16;
-         unsigned int m3  :  4;
-         unsigned int     :  4;
-         unsigned int op2 :  8;
-      } RIEv1;
-      struct {
-         unsigned int op1 :  8;
-         unsigned int r1  :  4;
-         unsigned int r2  :  4;
-         unsigned int i4  : 16;
-         unsigned int m3  :  4;
-         unsigned int     :  4;
-         unsigned int op2 :  8;
-      } RIE_RRPU;
-      struct {
-         unsigned int op1 :  8;
-         unsigned int r1  :  4;
-         unsigned int m3  :  4;
-         unsigned int i4  : 16;
-         unsigned int i2  :  8;
-         unsigned int op2 :  8;
-      } RIEv3;
-      struct {
-         unsigned int op1 :  8;
-         unsigned int r1  :  4;
-         unsigned int op2 :  4;
-         unsigned int i2  : 32;
-      } RIL;
-      struct {
-         unsigned int op1 :  8;
-         unsigned int r1  :  4;
-         unsigned int m3  :  4;
-         unsigned int b4  :  4;
-         unsigned int d4  : 12;
-         unsigned int i2  :  8;
-         unsigned int op2 :  8;
-      } RIS;
-      struct {
-         unsigned int op1 :  8;
-         unsigned int r1  :  4;
-         unsigned int r2  :  4;
-         unsigned int b4  :  4;
-         unsigned int d4  : 12;
-         unsigned int m3  :  4;
-         unsigned int     :  4;
-         unsigned int op2 :  8;
-      } RRS;
-      struct {
-         unsigned int op1 :  8;
-         unsigned int l1  :  4;
-         unsigned int     :  4;
-         unsigned int b1  :  4;
-         unsigned int d1  : 12;
-         unsigned int     :  8;
-         unsigned int op2 :  8;
-      } RSL;
-      struct {
-         unsigned int op1 :  8;
-         unsigned int r1  :  4;
-         unsigned int r3  :  4;
-         unsigned int b2  :  4;
-         unsigned int dl2 : 12;
-         unsigned int dh2 :  8;
-         unsigned int op2 :  8;
-      } RSY;
-      struct {
-         unsigned int op1 :  8;
-         unsigned int r1  :  4;
-         unsigned int x2  :  4;
-         unsigned int b2  :  4;
-         unsigned int d2  : 12;
-         unsigned int m3  :  4;
-         unsigned int     :  4;
-         unsigned int op2 :  8;
-      } RXE;
-      struct {
-         unsigned int op1 :  8;
-         unsigned int r3  :  4;
-         unsigned int x2  :  4;
-         unsigned int b2  :  4;
-         unsigned int d2  : 12;
-         unsigned int r1  :  4;
-         unsigned int     :  4;
-         unsigned int op2 :  8;
-      } RXF;
-      struct {
-         unsigned int op1 :  8;
-         unsigned int r1  :  4;
-         unsigned int x2  :  4;
-         unsigned int b2  :  4;
-         unsigned int dl2 : 12;
-         unsigned int dh2 :  8;
-         unsigned int op2 :  8;
-      } RXY;
-      struct {
-         unsigned int op1 :  8;
-         unsigned int i2  :  8;
-         unsigned int b1  :  4;
-         unsigned int dl1 : 12;
-         unsigned int dh1 :  8;
-         unsigned int op2 :  8;
-      } SIY;
-      struct {
-         unsigned int op :  8;
-         unsigned int l  :  8;
-         unsigned int b1 :  4;
-         unsigned int d1 : 12;
-         unsigned int b2 :  4;
-         unsigned int d2 : 12;
-      } SS;
-      struct {
-         unsigned int op :  8;
-         unsigned int l1 :  4;
-         unsigned int l2 :  4;
-         unsigned int b1 :  4;
-         unsigned int d1 : 12;
-         unsigned int b2 :  4;
-         unsigned int d2 : 12;
-      } SS_LLRDRD;
-      struct {
-         unsigned int op :  8;
-         unsigned int r1 :  4;
-         unsigned int r3 :  4;
-         unsigned int b2 :  4;
-         unsigned int d2 : 12;
-         unsigned int b4 :  4;
-         unsigned int d4 : 12;
-      } SS_RRRDRD2;
-      struct {
-         unsigned int op : 16;
-         unsigned int b1 :  4;
-         unsigned int d1 : 12;
-         unsigned int b2 :  4;
-         unsigned int d2 : 12;
-      } SSE;
-      struct {
-         unsigned int op1 :  8;
-         unsigned int r3  :  4;
-         unsigned int op2 :  4;
-         unsigned int b1  :  4;
-         unsigned int d1  : 12;
-         unsigned int b2  :  4;
-         unsigned int d2  : 12;
-      } SSF;
-      struct {
-         unsigned int op : 16;
-         unsigned int b1 :  4;
-         unsigned int d1 : 12;
-         unsigned int i2 : 16;
-      } SIL;
-      struct {
-        unsigned int op1 : 8;
-        unsigned int v1  : 4;
-        unsigned int x2  : 4;
-        unsigned int b2  : 4;
-        unsigned int d2  : 12;
-        unsigned int m3  : 4;
-        unsigned int rxb : 4;
-        unsigned int op2 : 8;
-      } VRX;
-      struct {
-        unsigned int op1 : 8;
-        unsigned int v1  : 4;
-        unsigned int v2  : 4;
-        unsigned int r3  : 4;
-        unsigned int     : 4;
-        unsigned int m5  : 4;
-        unsigned int     : 4;
-        unsigned int m4  : 4;
-        unsigned int rxb : 4;
-        unsigned int op2 : 8;
-      } VRR;
-      struct {
-         UInt op1 : 8;
-         UInt v1  : 4;
-         UInt v2  : 4;
-         UInt v3  : 4;
-         UInt     : 4;
-         UInt m5  : 4;
-         UInt m4  : 4;
-         UInt m3  : 4;
-         UInt rxb : 4;
-         UInt op2 : 8;
-      } VRRa;
-      struct {
-        unsigned int op1 : 8;
-        unsigned int v1  : 4;
-        unsigned int v2  : 4;
-        unsigned int v3  : 4;
-        unsigned int m5  : 4;
-        unsigned int m6  : 4;
-        unsigned int     : 4;
-        unsigned int v4  : 4;
-        unsigned int rxb : 4;
-        unsigned int op2 : 8;
-      } VRRd;
-      struct {
-         unsigned int op1 : 8;
-         unsigned int v1  : 4;
-         unsigned int v2  : 4;
-         unsigned int v3  : 4;
-         unsigned int m6  : 4;
-         unsigned int     : 4;
-         unsigned int m5  : 4;
-         unsigned int v4  : 4;
-         unsigned int rxb : 4;
-         unsigned int op2 : 8;
-      } VRRe;
-      struct {
-        unsigned int op1 : 8;
-        unsigned int v1  : 4;
-        unsigned int v3  : 4;
-        unsigned int i2  : 16;
-        unsigned int m3  : 4;
-        unsigned int rxb : 4;
-        unsigned int op2 : 8;
-      } VRI;
-      struct {
-        unsigned int op1 : 8;
-        unsigned int v1  : 4;
-        unsigned int v2  : 4;
-        unsigned int v3  : 4;
-        unsigned int     : 4;
-        unsigned int i4  : 8;
-        unsigned int m5  : 4;
-        unsigned int rxb : 4;
-        unsigned int op2 : 8;
-      } VRId;
-      struct {
-         UInt op1 : 8;
-         UInt v1  : 4;
-         UInt v2  : 4;
-         UInt i3  : 12;
-         UInt m5  : 4;
-         UInt m4  : 4;
-         UInt rxb : 4;
-         UInt op2 : 8;
-      } VRIe;
-      struct {
-        unsigned int op1 : 8;
-        unsigned int v1  : 4;
-        unsigned int v3  : 4;
-        unsigned int b2  : 4;
-        unsigned int d2  : 12;
-        unsigned int m4  : 4;
-        unsigned int rxb : 4;
-        unsigned int op2 : 8;
-      } VRS;
-      struct {
-        unsigned int op1 : 8;
-        unsigned int v1  : 4;
-        unsigned int v2  : 4;
-        unsigned int b2  : 4;
-        unsigned int d2  : 12;
-        unsigned int m3  : 4;
-        unsigned int rxb : 4;
-        unsigned int op2 : 8;
-     } VRV;
-   } formats;
-   union {
-      formats fmt;
-      ULong value;
-   } ovl;
-
-   vassert(sizeof(formats) == 6);
-
-   ((UChar *)(&ovl.value))[0] = bytes[0];
-   ((UChar *)(&ovl.value))[1] = bytes[1];
-   ((UChar *)(&ovl.value))[2] = bytes[2];
-   ((UChar *)(&ovl.value))[3] = bytes[3];
-   ((UChar *)(&ovl.value))[4] = bytes[4];
-   ((UChar *)(&ovl.value))[5] = bytes[5];
-   ((UChar *)(&ovl.value))[6] = 0x0;
-   ((UChar *)(&ovl.value))[7] = 0x0;
-
-   switch ((ovl.value >> 16) & 0xff00000000ffULL) {
-   case 0xe30000000002ULL: s390_format_RXY_RRRD(s390_irgen_LTG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
+   ULong ovl = ((ULong)bytes[0] << 56) | ((ULong)bytes[1] << 48) |
+               ((ULong)bytes[2] << 40) | ((ULong)bytes[3] << 32) |
+               ((ULong)bytes[4] << 24) | ((ULong)bytes[5] << 16);
+
+   switch ((ovl >> 16) & 0xff00000000ffULL) {
+   case 0xe30000000002ULL: s390_format_RXY_RRRD(s390_irgen_LTG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
    case 0xe30000000003ULL: /* LRAG */ goto unimplemented;
-   case 0xe30000000004ULL: s390_format_RXY_RRRD(s390_irgen_LG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000006ULL: s390_format_RXY_RRRD(s390_irgen_CVBY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000008ULL: s390_format_RXY_RRRD(s390_irgen_AG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000009ULL: s390_format_RXY_RRRD(s390_irgen_SG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000000aULL: s390_format_RXY_RRRD(s390_irgen_ALG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000000bULL: s390_format_RXY_RRRD(s390_irgen_SLG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000000cULL: s390_format_RXY_RRRD(s390_irgen_MSG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000000dULL: s390_format_RXY_RRRD(s390_irgen_DSG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000004ULL: s390_format_RXY_RRRD(s390_irgen_LG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000006ULL: s390_format_RXY_RRRD(s390_irgen_CVBY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000008ULL: s390_format_RXY_RRRD(s390_irgen_AG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000009ULL: s390_format_RXY_RRRD(s390_irgen_SG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000000aULL: s390_format_RXY_RRRD(s390_irgen_ALG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000000bULL: s390_format_RXY_RRRD(s390_irgen_SLG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000000cULL: s390_format_RXY_RRRD(s390_irgen_MSG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000000dULL: s390_format_RXY_RRRD(s390_irgen_DSG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
    case 0xe3000000000eULL: /* CVBG */ goto unimplemented;
-   case 0xe3000000000fULL: s390_format_RXY_RRRD(s390_irgen_LRVG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000012ULL: s390_format_RXY_RRRD(s390_irgen_LT, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000000fULL: s390_format_RXY_RRRD(s390_irgen_LRVG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000012ULL: s390_format_RXY_RRRD(s390_irgen_LT, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
    case 0xe30000000013ULL: /* LRAY */ goto unimplemented;
-   case 0xe30000000014ULL: s390_format_RXY_RRRD(s390_irgen_LGF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000015ULL: s390_format_RXY_RRRD(s390_irgen_LGH, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000016ULL: s390_format_RXY_RRRD(s390_irgen_LLGF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000017ULL: s390_format_RXY_RRRD(s390_irgen_LLGT, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000018ULL: s390_format_RXY_RRRD(s390_irgen_AGF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000019ULL: s390_format_RXY_RRRD(s390_irgen_SGF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000001aULL: s390_format_RXY_RRRD(s390_irgen_ALGF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000001bULL: s390_format_RXY_RRRD(s390_irgen_SLGF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000001cULL: s390_format_RXY_RRRD(s390_irgen_MSGF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000001dULL: s390_format_RXY_RRRD(s390_irgen_DSGF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000001eULL: s390_format_RXY_RRRD(s390_irgen_LRV, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000001fULL: s390_format_RXY_RRRD(s390_irgen_LRVH, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000020ULL: s390_format_RXY_RRRD(s390_irgen_CG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000021ULL: s390_format_RXY_RRRD(s390_irgen_CLG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000024ULL: s390_format_RXY_RRRD(s390_irgen_STG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000014ULL: s390_format_RXY_RRRD(s390_irgen_LGF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000015ULL: s390_format_RXY_RRRD(s390_irgen_LGH, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000016ULL: s390_format_RXY_RRRD(s390_irgen_LLGF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000017ULL: s390_format_RXY_RRRD(s390_irgen_LLGT, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000018ULL: s390_format_RXY_RRRD(s390_irgen_AGF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000019ULL: s390_format_RXY_RRRD(s390_irgen_SGF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000001aULL: s390_format_RXY_RRRD(s390_irgen_ALGF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000001bULL: s390_format_RXY_RRRD(s390_irgen_SLGF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000001cULL: s390_format_RXY_RRRD(s390_irgen_MSGF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000001dULL: s390_format_RXY_RRRD(s390_irgen_DSGF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000001eULL: s390_format_RXY_RRRD(s390_irgen_LRV, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000001fULL: s390_format_RXY_RRRD(s390_irgen_LRVH, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000020ULL: s390_format_RXY_RRRD(s390_irgen_CG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000021ULL: s390_format_RXY_RRRD(s390_irgen_CLG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000024ULL: s390_format_RXY_RRRD(s390_irgen_STG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
    case 0xe30000000025ULL: /* NTSTG */ goto unimplemented;
-   case 0xe30000000026ULL: s390_format_RXY_RRRD(s390_irgen_CVDY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000002aULL: s390_format_RXY_RRRD(s390_irgen_LZRG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000026ULL: s390_format_RXY_RRRD(s390_irgen_CVDY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000002aULL: s390_format_RXY_RRRD(s390_irgen_LZRG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
    case 0xe3000000002eULL: /* CVDG */ goto unimplemented;
    case 0xe3000000002fULL: s390_format_RXY_RRRD(s390_irgen_STRVG,
-                                                ovl.fmt.RXY.r1, ovl.fmt.RXY.x2,
-                                                ovl.fmt.RXY.b2, ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000030ULL: s390_format_RXY_RRRD(s390_irgen_CGF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000031ULL: s390_format_RXY_RRRD(s390_irgen_CLGF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000032ULL: s390_format_RXY_RRRD(s390_irgen_LTGF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000034ULL: s390_format_RXY_RRRD(s390_irgen_CGH, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000036ULL: s390_format_RXY_URRD(s390_irgen_PFD, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
+                                                RXY_r1(ovl), RXY_x2(ovl),
+                                                RXY_b2(ovl), RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000030ULL: s390_format_RXY_RRRD(s390_irgen_CGF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000031ULL: s390_format_RXY_RRRD(s390_irgen_CLGF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000032ULL: s390_format_RXY_RRRD(s390_irgen_LTGF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000034ULL: s390_format_RXY_RRRD(s390_irgen_CGH, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000036ULL: s390_format_RXY_URRD(s390_irgen_PFD, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
    case 0xe30000000038ULL: /* AGH */ goto unimplemented;
    case 0xe30000000039ULL: /* SGH */ goto unimplemented;
-   case 0xe3000000003aULL: s390_format_RXY_RRRD(s390_irgen_LLZRGF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000003bULL: s390_format_RXY_RRRD(s390_irgen_LZRF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000003aULL: s390_format_RXY_RRRD(s390_irgen_LLZRGF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000003bULL: s390_format_RXY_RRRD(s390_irgen_LZRF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
    case 0xe3000000003cULL: /* MGH */ goto unimplemented;
-   case 0xe3000000003eULL: s390_format_RXY_RRRD(s390_irgen_STRV, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000003eULL: s390_format_RXY_RRRD(s390_irgen_STRV, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
    case 0xe3000000003fULL: s390_format_RXY_RRRD(s390_irgen_STRVH,
-                                                ovl.fmt.RXY.r1, ovl.fmt.RXY.x2,
-                                                ovl.fmt.RXY.b2, ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000046ULL: s390_format_RXY_RRRD(s390_irgen_BCTG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
+                                                RXY_r1(ovl), RXY_x2(ovl),
+                                                RXY_b2(ovl), RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000046ULL: s390_format_RXY_RRRD(s390_irgen_BCTG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
    case 0xe30000000047ULL: /* BIC */ goto unimplemented;
    case 0xe30000000048ULL: /* LLGFSG */ goto unimplemented;
    case 0xe30000000049ULL: /* STGSC */ goto unimplemented;
    case 0xe3000000004cULL: /* LGG */ goto unimplemented;
    case 0xe3000000004dULL: /* LGSC */ goto unimplemented;
-   case 0xe30000000050ULL: s390_format_RXY_RRRD(s390_irgen_STY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000051ULL: s390_format_RXY_RRRD(s390_irgen_MSY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000050ULL: s390_format_RXY_RRRD(s390_irgen_STY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000051ULL: s390_format_RXY_RRRD(s390_irgen_MSY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
    case 0xe30000000053ULL: /* MSC */ goto unimplemented;
-   case 0xe30000000054ULL: s390_format_RXY_RRRD(s390_irgen_NY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000055ULL: s390_format_RXY_RRRD(s390_irgen_CLY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000056ULL: s390_format_RXY_RRRD(s390_irgen_OY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000057ULL: s390_format_RXY_RRRD(s390_irgen_XY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000058ULL: s390_format_RXY_RRRD(s390_irgen_LY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000059ULL: s390_format_RXY_RRRD(s390_irgen_CY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000005aULL: s390_format_RXY_RRRD(s390_irgen_AY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000005bULL: s390_format_RXY_RRRD(s390_irgen_SY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000005cULL: s390_format_RXY_RRRD(s390_irgen_MFY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000005eULL: s390_format_RXY_RRRD(s390_irgen_ALY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000005fULL: s390_format_RXY_RRRD(s390_irgen_SLY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000070ULL: s390_format_RXY_RRRD(s390_irgen_STHY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000071ULL: s390_format_RXY_RRRD(s390_irgen_LAY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000072ULL: s390_format_RXY_RRRD(s390_irgen_STCY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000073ULL: s390_format_RXY_RRRD(s390_irgen_ICY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000075ULL: s390_format_RXY_RRRD(s390_irgen_LAEY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000076ULL: s390_format_RXY_RRRD(s390_irgen_LB, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000077ULL: s390_format_RXY_RRRD(s390_irgen_LGB, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000078ULL: s390_format_RXY_RRRD(s390_irgen_LHY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000079ULL: s390_format_RXY_RRRD(s390_irgen_CHY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000007aULL: s390_format_RXY_RRRD(s390_irgen_AHY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000007bULL: s390_format_RXY_RRRD(s390_irgen_SHY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000007cULL: s390_format_RXY_RRRD(s390_irgen_MHY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000080ULL: s390_format_RXY_RRRD(s390_irgen_NG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000081ULL: s390_format_RXY_RRRD(s390_irgen_OG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000082ULL: s390_format_RXY_RRRD(s390_irgen_XG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000054ULL: s390_format_RXY_RRRD(s390_irgen_NY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000055ULL: s390_format_RXY_RRRD(s390_irgen_CLY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000056ULL: s390_format_RXY_RRRD(s390_irgen_OY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000057ULL: s390_format_RXY_RRRD(s390_irgen_XY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000058ULL: s390_format_RXY_RRRD(s390_irgen_LY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000059ULL: s390_format_RXY_RRRD(s390_irgen_CY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000005aULL: s390_format_RXY_RRRD(s390_irgen_AY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000005bULL: s390_format_RXY_RRRD(s390_irgen_SY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000005cULL: s390_format_RXY_RRRD(s390_irgen_MFY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000005eULL: s390_format_RXY_RRRD(s390_irgen_ALY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000005fULL: s390_format_RXY_RRRD(s390_irgen_SLY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000070ULL: s390_format_RXY_RRRD(s390_irgen_STHY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000071ULL: s390_format_RXY_RRRD(s390_irgen_LAY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000072ULL: s390_format_RXY_RRRD(s390_irgen_STCY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000073ULL: s390_format_RXY_RRRD(s390_irgen_ICY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000075ULL: s390_format_RXY_RRRD(s390_irgen_LAEY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000076ULL: s390_format_RXY_RRRD(s390_irgen_LB, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000077ULL: s390_format_RXY_RRRD(s390_irgen_LGB, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000078ULL: s390_format_RXY_RRRD(s390_irgen_LHY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000079ULL: s390_format_RXY_RRRD(s390_irgen_CHY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000007aULL: s390_format_RXY_RRRD(s390_irgen_AHY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000007bULL: s390_format_RXY_RRRD(s390_irgen_SHY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000007cULL: s390_format_RXY_RRRD(s390_irgen_MHY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000080ULL: s390_format_RXY_RRRD(s390_irgen_NG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000081ULL: s390_format_RXY_RRRD(s390_irgen_OG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000082ULL: s390_format_RXY_RRRD(s390_irgen_XG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
    case 0xe30000000083ULL: /* MSGC */ goto unimplemented;
    case 0xe30000000084ULL: /* MG */ goto unimplemented;
-   case 0xe30000000085ULL: s390_format_RXY_RRRD(s390_irgen_LGAT, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-
-   case 0xe30000000086ULL: s390_format_RXY_RRRD(s390_irgen_MLG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000087ULL: s390_format_RXY_RRRD(s390_irgen_DLG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000088ULL: s390_format_RXY_RRRD(s390_irgen_ALCG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000089ULL: s390_format_RXY_RRRD(s390_irgen_SLBG, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000008eULL: s390_format_RXY_RRRD(s390_irgen_STPQ, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000008fULL: s390_format_RXY_RRRD(s390_irgen_LPQ, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000090ULL: s390_format_RXY_RRRD(s390_irgen_LLGC, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000091ULL: s390_format_RXY_RRRD(s390_irgen_LLGH, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000094ULL: s390_format_RXY_RRRD(s390_irgen_LLC, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000095ULL: s390_format_RXY_RRRD(s390_irgen_LLH, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000096ULL: s390_format_RXY_RRRD(s390_irgen_ML, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000097ULL: s390_format_RXY_RRRD(s390_irgen_DL, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000098ULL: s390_format_RXY_RRRD(s390_irgen_ALC, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe30000000099ULL: s390_format_RXY_RRRD(s390_irgen_SLB, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000009cULL: s390_format_RXY_RRRD(s390_irgen_LLGTAT, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000009dULL: s390_format_RXY_RRRD(s390_irgen_LLGFAT, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe3000000009fULL: s390_format_RXY_RRRD(s390_irgen_LAT, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe300000000c0ULL: s390_format_RXY_RRRD(s390_irgen_LBH, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe300000000c2ULL: s390_format_RXY_RRRD(s390_irgen_LLCH, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe300000000c3ULL: s390_format_RXY_RRRD(s390_irgen_STCH, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe300000000c4ULL: s390_format_RXY_RRRD(s390_irgen_LHH, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe300000000c6ULL: s390_format_RXY_RRRD(s390_irgen_LLHH, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe300000000c7ULL: s390_format_RXY_RRRD(s390_irgen_STHH, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe300000000c8ULL: s390_format_RXY_RRRD(s390_irgen_LFHAT, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe300000000caULL: s390_format_RXY_RRRD(s390_irgen_LFH, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe300000000cbULL: s390_format_RXY_RRRD(s390_irgen_STFH, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe300000000cdULL: s390_format_RXY_RRRD(s390_irgen_CHF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xe300000000cfULL: s390_format_RXY_RRRD(s390_irgen_CLHF, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000085ULL: s390_format_RXY_RRRD(s390_irgen_LGAT, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+
+   case 0xe30000000086ULL: s390_format_RXY_RRRD(s390_irgen_MLG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000087ULL: s390_format_RXY_RRRD(s390_irgen_DLG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000088ULL: s390_format_RXY_RRRD(s390_irgen_ALCG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000089ULL: s390_format_RXY_RRRD(s390_irgen_SLBG, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000008eULL: s390_format_RXY_RRRD(s390_irgen_STPQ, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000008fULL: s390_format_RXY_RRRD(s390_irgen_LPQ, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000090ULL: s390_format_RXY_RRRD(s390_irgen_LLGC, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000091ULL: s390_format_RXY_RRRD(s390_irgen_LLGH, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000094ULL: s390_format_RXY_RRRD(s390_irgen_LLC, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000095ULL: s390_format_RXY_RRRD(s390_irgen_LLH, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000096ULL: s390_format_RXY_RRRD(s390_irgen_ML, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000097ULL: s390_format_RXY_RRRD(s390_irgen_DL, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000098ULL: s390_format_RXY_RRRD(s390_irgen_ALC, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe30000000099ULL: s390_format_RXY_RRRD(s390_irgen_SLB, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000009cULL: s390_format_RXY_RRRD(s390_irgen_LLGTAT, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000009dULL: s390_format_RXY_RRRD(s390_irgen_LLGFAT, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe3000000009fULL: s390_format_RXY_RRRD(s390_irgen_LAT, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe300000000c0ULL: s390_format_RXY_RRRD(s390_irgen_LBH, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe300000000c2ULL: s390_format_RXY_RRRD(s390_irgen_LLCH, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe300000000c3ULL: s390_format_RXY_RRRD(s390_irgen_STCH, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe300000000c4ULL: s390_format_RXY_RRRD(s390_irgen_LHH, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe300000000c6ULL: s390_format_RXY_RRRD(s390_irgen_LLHH, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe300000000c7ULL: s390_format_RXY_RRRD(s390_irgen_STHH, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe300000000c8ULL: s390_format_RXY_RRRD(s390_irgen_LFHAT, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe300000000caULL: s390_format_RXY_RRRD(s390_irgen_LFH, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe300000000cbULL: s390_format_RXY_RRRD(s390_irgen_STFH, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe300000000cdULL: s390_format_RXY_RRRD(s390_irgen_CHF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xe300000000cfULL: s390_format_RXY_RRRD(s390_irgen_CLHF, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
    case 0xe60000000034ULL: /* VPKZ */ goto unimplemented;
    case 0xe60000000035ULL: /* VLRL */ goto unimplemented;
    case 0xe60000000037ULL: /* VLRLR */ goto unimplemented;
@@ -20577,985 +20318,985 @@ s390_decode_6byte_and_irgen(const UChar *bytes)
    case 0xe6000000007aULL: /* VDP */ goto unimplemented;
    case 0xe6000000007bULL: /* VRP */ goto unimplemented;
    case 0xe6000000007eULL: /* VSDP */ goto unimplemented;
-   case 0xe70000000000ULL: s390_format_VRX_VRRDM(s390_irgen_VLEB, ovl.fmt.VRX.v1,
-                                                 ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                 ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                 ovl.fmt.VRX.rxb);  goto ok;
-   case 0xe70000000001ULL: s390_format_VRX_VRRDM(s390_irgen_VLEH, ovl.fmt.VRX.v1,
-                                                 ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                 ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                 ovl.fmt.VRX.rxb);  goto ok;
-   case 0xe70000000002ULL: s390_format_VRX_VRRDM(s390_irgen_VLEG, ovl.fmt.VRX.v1,
-                                                 ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                 ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                 ovl.fmt.VRX.rxb);  goto ok;
-   case 0xe70000000003ULL: s390_format_VRX_VRRDM(s390_irgen_VLEF, ovl.fmt.VRX.v1,
-                                                 ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                 ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                 ovl.fmt.VRX.rxb);  goto ok;
-   case 0xe70000000004ULL: s390_format_VRX_VRRDM(s390_irgen_VLLEZ, ovl.fmt.VRX.v1,
-                                                 ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                 ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                 ovl.fmt.VRX.rxb);  goto ok;
-   case 0xe70000000005ULL: s390_format_VRX_VRRDM(s390_irgen_VLREP, ovl.fmt.VRX.v1,
-                                                ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                ovl.fmt.VRX.rxb);  goto ok;
-   case 0xe70000000006ULL: s390_format_VRX_VRRD(s390_irgen_VL, ovl.fmt.VRX.v1,
-                                                ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                ovl.fmt.VRX.d2, ovl.fmt.VRX.rxb);  goto ok;
-   case 0xe70000000007ULL: s390_format_VRX_VRRDM(s390_irgen_VLBB, ovl.fmt.VRX.v1,
-                                                 ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                 ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                 ovl.fmt.VRX.rxb);  goto ok;
-   case 0xe70000000008ULL: s390_format_VRX_VRRDM(s390_irgen_VSTEB, ovl.fmt.VRX.v1,
-                                                 ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                 ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                 ovl.fmt.VRX.rxb);  goto ok;
-   case 0xe70000000009ULL: s390_format_VRX_VRRDM(s390_irgen_VSTEH, ovl.fmt.VRX.v1,
-                                                 ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                 ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                 ovl.fmt.VRX.rxb);  goto ok;
-   case 0xe7000000000aULL: s390_format_VRX_VRRDM(s390_irgen_VSTEG, ovl.fmt.VRX.v1,
-                                                 ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                 ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                 ovl.fmt.VRX.rxb);  goto ok;
-   case 0xe7000000000bULL: s390_format_VRX_VRRDM(s390_irgen_VSTEF, ovl.fmt.VRX.v1,
-                                                 ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                 ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                 ovl.fmt.VRX.rxb);  goto ok;
-   case 0xe7000000000eULL: s390_format_VRX_VRRD(s390_irgen_VST, ovl.fmt.VRX.v1,
-                                                ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                ovl.fmt.VRX.d2, ovl.fmt.VRX.rxb);  goto ok;
-   case 0xe70000000012ULL: s390_format_VRV_VVRDMT(s390_irgen_VGEG, ovl.fmt.VRX.v1,
-                                                  ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                  ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                  ovl.fmt.VRX.rxb, Ity_I64);  goto ok;
-   case 0xe70000000013ULL: s390_format_VRV_VVRDMT(s390_irgen_VGEF, ovl.fmt.VRX.v1,
-                                                  ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                  ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                  ovl.fmt.VRX.rxb, Ity_I32);  goto ok;
-   case 0xe7000000001aULL: s390_format_VRV_VVRDMT(s390_irgen_VSCEG, ovl.fmt.VRX.v1,
-                                                  ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                  ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                  ovl.fmt.VRX.rxb, Ity_I64);  goto ok;
-   case 0xe7000000001bULL: s390_format_VRV_VVRDMT(s390_irgen_VSCEF, ovl.fmt.VRX.v1,
-                                                  ovl.fmt.VRX.x2, ovl.fmt.VRX.b2,
-                                                  ovl.fmt.VRX.d2, ovl.fmt.VRX.m3,
-                                                  ovl.fmt.VRX.rxb, Ity_I32);  goto ok;
-   case 0xe70000000021ULL: s390_format_VRS_RRDVM(s390_irgen_VLGV, ovl.fmt.VRS.v1,
-                                                ovl.fmt.VRS.b2, ovl.fmt.VRS.d2, ovl.fmt.VRS.v3,
-                                                ovl.fmt.VRS.m4, ovl.fmt.VRS.rxb);  goto ok;
-   case 0xe70000000022ULL: s390_format_VRS_VRRDM(s390_irgen_VLVG, ovl.fmt.VRS.v1,
-                                                ovl.fmt.VRS.b2, ovl.fmt.VRS.d2, ovl.fmt.VRS.v3,
-                                                ovl.fmt.VRS.m4, ovl.fmt.VRS.rxb);  goto ok;
-   case 0xe70000000027ULL: s390_format_RXE_RRRDR(s390_irgen_LCBB, ovl.fmt.RXE.r1,
-                                                 ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                 ovl.fmt.RXE.d2, ovl.fmt.RXE.m3);  goto ok;
-   case 0xe70000000030ULL: s390_format_VRS_VRDVM(s390_irgen_VESL, ovl.fmt.VRS.v1,
-                                                 ovl.fmt.VRS.b2, ovl.fmt.VRS.d2,
-                                                 ovl.fmt.VRS.v3, ovl.fmt.VRS.m4,
-                                                 ovl.fmt.VRS.rxb);  goto ok;
-   case 0xe70000000033ULL: s390_format_VRS_VRDVM(s390_irgen_VERLL, ovl.fmt.VRS.v1,
-                                                 ovl.fmt.VRS.b2, ovl.fmt.VRS.d2,
-                                                 ovl.fmt.VRS.v3, ovl.fmt.VRS.m4,
-                                                 ovl.fmt.VRS.rxb);  goto ok;
-   case 0xe70000000036ULL: s390_format_VRS_VRDV(s390_irgen_VLM, ovl.fmt.VRS.v1,
-                                                ovl.fmt.VRS.b2, ovl.fmt.VRS.d2, ovl.fmt.VRS.v3,
-                                                ovl.fmt.VRS.rxb);  goto ok;
-   case 0xe70000000037ULL: s390_format_VRS_VRRD(s390_irgen_VLL, ovl.fmt.VRS.v1,
-                                                ovl.fmt.VRS.b2, ovl.fmt.VRS.d2, ovl.fmt.VRS.v3,
-                                                ovl.fmt.VRS.rxb);  goto ok;
-   case 0xe70000000038ULL: s390_format_VRS_VRDVM(s390_irgen_VESRL, ovl.fmt.VRS.v1,
-                                                 ovl.fmt.VRS.b2, ovl.fmt.VRS.d2,
-                                                 ovl.fmt.VRS.v3, ovl.fmt.VRS.m4,
-                                                 ovl.fmt.VRS.rxb);  goto ok;
-   case 0xe7000000003aULL: s390_format_VRS_VRDVM(s390_irgen_VESRA, ovl.fmt.VRS.v1,
-                                                 ovl.fmt.VRS.b2, ovl.fmt.VRS.d2,
-                                                 ovl.fmt.VRS.v3, ovl.fmt.VRS.m4,
-                                                 ovl.fmt.VRS.rxb);  goto ok;
-   case 0xe7000000003eULL: s390_format_VRS_VRDV(s390_irgen_VSTM, ovl.fmt.VRS.v1,
-                                                ovl.fmt.VRS.b2, ovl.fmt.VRS.d2, ovl.fmt.VRS.v3,
-                                                ovl.fmt.VRS.rxb);  goto ok;
-   case 0xe7000000003fULL: s390_format_VRS_VRRD(s390_irgen_VSTL, ovl.fmt.VRS.v1,
-                                                ovl.fmt.VRS.b2, ovl.fmt.VRS.d2, ovl.fmt.VRS.v3,
-                                                ovl.fmt.VRS.rxb);  goto ok;
-   case 0xe70000000040ULL: s390_format_VRI_VIM(s390_irgen_VLEIB, ovl.fmt.VRI.v1,
-                                                 ovl.fmt.VRI.i2, ovl.fmt.VRI.m3,
-                                                 ovl.fmt.VRI.rxb);  goto ok;
-   case 0xe70000000041ULL: s390_format_VRI_VIM(s390_irgen_VLEIH, ovl.fmt.VRI.v1,
-                                               ovl.fmt.VRI.i2, ovl.fmt.VRI.m3,
-                                               ovl.fmt.VRI.rxb);  goto ok;
-   case 0xe70000000042ULL: s390_format_VRI_VIM(s390_irgen_VLEIG, ovl.fmt.VRI.v1,
-                                               ovl.fmt.VRI.i2, ovl.fmt.VRI.m3,
-                                               ovl.fmt.VRI.rxb);  goto ok;
-   case 0xe70000000043ULL: s390_format_VRI_VIM(s390_irgen_VLEIF, ovl.fmt.VRI.v1,
-                                               ovl.fmt.VRI.i2, ovl.fmt.VRI.m3,
-                                               ovl.fmt.VRI.rxb);  goto ok;break;
-   case 0xe70000000044ULL: s390_format_VRI_VIM(s390_irgen_VGBM, ovl.fmt.VRI.v1,
-                                               ovl.fmt.VRI.i2, ovl.fmt.VRI.m3,
-                                               ovl.fmt.VRI.rxb);  goto ok;
-   case 0xe70000000045ULL: s390_format_VRI_VIM(s390_irgen_VREPI, ovl.fmt.VRI.v1,
-                                               ovl.fmt.VRI.i2, ovl.fmt.VRI.m3,
-                                               ovl.fmt.VRI.rxb);  goto ok;
-   case 0xe70000000046ULL: s390_format_VRI_VIM(s390_irgen_VGM, ovl.fmt.VRI.v1,
-                                               ovl.fmt.VRI.i2, ovl.fmt.VRI.m3,
-                                               ovl.fmt.VRI.rxb);  goto ok;
-   case 0xe7000000004aULL: s390_format_VRI_VVIMM(s390_irgen_VFTCI, ovl.fmt.VRIe.v1,
-                                                 ovl.fmt.VRIe.v2, ovl.fmt.VRIe.i3,
-                                                 ovl.fmt.VRIe.m4, ovl.fmt.VRIe.m5,
-                                                 ovl.fmt.VRIe.rxb);  goto ok;
-   case 0xe7000000004dULL: s390_format_VRI_VVIM(s390_irgen_VREP, ovl.fmt.VRI.v1,
-                                               ovl.fmt.VRI.v3, ovl.fmt.VRI.i2,
-                                               ovl.fmt.VRI.m3, ovl.fmt.VRI.rxb);  goto ok;
-   case 0xe70000000050ULL: s390_format_VRR_VVM(s390_irgen_VPOPCT, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.m4,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000052ULL: s390_format_VRR_VVM(s390_irgen_VCTZ, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.m4,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000053ULL: s390_format_VRR_VVM(s390_irgen_VCLZ, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.m4,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000056ULL: s390_format_VRR_VV(s390_irgen_VLR, ovl.fmt.VRR.v1,
-                                              ovl.fmt.VRR.v2, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe7000000005cULL: s390_format_VRR_VVMM(s390_irgen_VISTR, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.m4,
-                                                ovl.fmt.VRR.m5, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe7000000005fULL: s390_format_VRR_VVM(s390_irgen_VSEG, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.m4,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000060ULL: s390_format_VRR_VVVM(s390_irgen_VMRL, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000061ULL: s390_format_VRR_VVVM(s390_irgen_VMRH, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000062ULL: s390_format_VRR_VRR(s390_irgen_VLVGP, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000064ULL: s390_format_VRR_VVVM(s390_irgen_VSUM, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000065ULL: s390_format_VRR_VVVM(s390_irgen_VSUMG, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000066ULL: s390_format_VRR_VVV(s390_irgen_VCKSM, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000067ULL: s390_format_VRR_VVVM(s390_irgen_VSUMQ, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000068ULL: s390_format_VRR_VVV(s390_irgen_VN, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000069ULL: s390_format_VRR_VVV(s390_irgen_VNC, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe7000000006aULL: s390_format_VRR_VVV(s390_irgen_VO, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe7000000006bULL: s390_format_VRR_VVV(s390_irgen_VNO, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.rxb);  goto ok;
+   case 0xe70000000000ULL: s390_format_VRX_VRRDM(s390_irgen_VLEB, VRX_v1(ovl),
+                                                 VRX_x2(ovl), VRX_b2(ovl),
+                                                 VRX_d2(ovl), VRX_m3(ovl),
+                                                 VRX_rxb(ovl));  goto ok;
+   case 0xe70000000001ULL: s390_format_VRX_VRRDM(s390_irgen_VLEH, VRX_v1(ovl),
+                                                 VRX_x2(ovl), VRX_b2(ovl),
+                                                 VRX_d2(ovl), VRX_m3(ovl),
+                                                 VRX_rxb(ovl));  goto ok;
+   case 0xe70000000002ULL: s390_format_VRX_VRRDM(s390_irgen_VLEG, VRX_v1(ovl),
+                                                 VRX_x2(ovl), VRX_b2(ovl),
+                                                 VRX_d2(ovl), VRX_m3(ovl),
+                                                 VRX_rxb(ovl));  goto ok;
+   case 0xe70000000003ULL: s390_format_VRX_VRRDM(s390_irgen_VLEF, VRX_v1(ovl),
+                                                 VRX_x2(ovl), VRX_b2(ovl),
+                                                 VRX_d2(ovl), VRX_m3(ovl),
+                                                 VRX_rxb(ovl));  goto ok;
+   case 0xe70000000004ULL: s390_format_VRX_VRRDM(s390_irgen_VLLEZ, VRX_v1(ovl),
+                                                 VRX_x2(ovl), VRX_b2(ovl),
+                                                 VRX_d2(ovl), VRX_m3(ovl),
+                                                 VRX_rxb(ovl));  goto ok;
+   case 0xe70000000005ULL: s390_format_VRX_VRRDM(s390_irgen_VLREP, VRX_v1(ovl),
+                                                VRX_x2(ovl), VRX_b2(ovl),
+                                                VRX_d2(ovl), VRX_m3(ovl),
+                                                VRX_rxb(ovl));  goto ok;
+   case 0xe70000000006ULL: s390_format_VRX_VRRD(s390_irgen_VL, VRX_v1(ovl),
+                                                VRX_x2(ovl), VRX_b2(ovl),
+                                                VRX_d2(ovl), VRX_rxb(ovl));  goto ok;
+   case 0xe70000000007ULL: s390_format_VRX_VRRDM(s390_irgen_VLBB, VRX_v1(ovl),
+                                                 VRX_x2(ovl), VRX_b2(ovl),
+                                                 VRX_d2(ovl), VRX_m3(ovl),
+                                                 VRX_rxb(ovl));  goto ok;
+   case 0xe70000000008ULL: s390_format_VRX_VRRDM(s390_irgen_VSTEB, VRX_v1(ovl),
+                                                 VRX_x2(ovl), VRX_b2(ovl),
+                                                 VRX_d2(ovl), VRX_m3(ovl),
+                                                 VRX_rxb(ovl));  goto ok;
+   case 0xe70000000009ULL: s390_format_VRX_VRRDM(s390_irgen_VSTEH, VRX_v1(ovl),
+                                                 VRX_x2(ovl), VRX_b2(ovl),
+                                                 VRX_d2(ovl), VRX_m3(ovl),
+                                                 VRX_rxb(ovl));  goto ok;
+   case 0xe7000000000aULL: s390_format_VRX_VRRDM(s390_irgen_VSTEG, VRX_v1(ovl),
+                                                 VRX_x2(ovl), VRX_b2(ovl),
+                                                 VRX_d2(ovl), VRX_m3(ovl),
+                                                 VRX_rxb(ovl));  goto ok;
+   case 0xe7000000000bULL: s390_format_VRX_VRRDM(s390_irgen_VSTEF, VRX_v1(ovl),
+                                                 VRX_x2(ovl), VRX_b2(ovl),
+                                                 VRX_d2(ovl), VRX_m3(ovl),
+                                                 VRX_rxb(ovl));  goto ok;
+   case 0xe7000000000eULL: s390_format_VRX_VRRD(s390_irgen_VST, VRX_v1(ovl),
+                                                VRX_x2(ovl), VRX_b2(ovl),
+                                                VRX_d2(ovl), VRX_rxb(ovl));  goto ok;
+   case 0xe70000000012ULL: s390_format_VRV_VVRDMT(s390_irgen_VGEG, VRX_v1(ovl),
+                                                  VRX_x2(ovl), VRX_b2(ovl),
+                                                  VRX_d2(ovl), VRX_m3(ovl),
+                                                  VRX_rxb(ovl), Ity_I64);  goto ok;
+   case 0xe70000000013ULL: s390_format_VRV_VVRDMT(s390_irgen_VGEF, VRX_v1(ovl),
+                                                  VRX_x2(ovl), VRX_b2(ovl),
+                                                  VRX_d2(ovl), VRX_m3(ovl),
+                                                  VRX_rxb(ovl), Ity_I32);  goto ok;
+   case 0xe7000000001aULL: s390_format_VRV_VVRDMT(s390_irgen_VSCEG, VRX_v1(ovl),
+                                                  VRX_x2(ovl), VRX_b2(ovl),
+                                                  VRX_d2(ovl), VRX_m3(ovl),
+                                                  VRX_rxb(ovl), Ity_I64);  goto ok;
+   case 0xe7000000001bULL: s390_format_VRV_VVRDMT(s390_irgen_VSCEF, VRX_v1(ovl),
+                                                  VRX_x2(ovl), VRX_b2(ovl),
+                                                  VRX_d2(ovl), VRX_m3(ovl),
+                                                  VRX_rxb(ovl), Ity_I32);  goto ok;
+   case 0xe70000000021ULL: s390_format_VRS_RRDVM(s390_irgen_VLGV, VRS_v1(ovl),
+                                                VRS_b2(ovl), VRS_d2(ovl), VRS_v3(ovl),
+                                                VRS_m4(ovl), VRS_rxb(ovl));  goto ok;
+   case 0xe70000000022ULL: s390_format_VRS_VRRDM(s390_irgen_VLVG, VRS_v1(ovl),
+                                                VRS_b2(ovl), VRS_d2(ovl), VRS_v3(ovl),
+                                                VRS_m4(ovl), VRS_rxb(ovl));  goto ok;
+   case 0xe70000000027ULL: s390_format_RXE_RRRDR(s390_irgen_LCBB, RXE_r1(ovl),
+                                                 RXE_x2(ovl), RXE_b2(ovl),
+                                                 RXE_d2(ovl), RXE_m3(ovl));  goto ok;
+   case 0xe70000000030ULL: s390_format_VRS_VRDVM(s390_irgen_VESL, VRS_v1(ovl),
+                                                 VRS_b2(ovl), VRS_d2(ovl),
+                                                 VRS_v3(ovl), VRS_m4(ovl),
+                                                 VRS_rxb(ovl));  goto ok;
+   case 0xe70000000033ULL: s390_format_VRS_VRDVM(s390_irgen_VERLL, VRS_v1(ovl),
+                                                 VRS_b2(ovl), VRS_d2(ovl),
+                                                 VRS_v3(ovl), VRS_m4(ovl),
+                                                 VRS_rxb(ovl));  goto ok;
+   case 0xe70000000036ULL: s390_format_VRS_VRDV(s390_irgen_VLM, VRS_v1(ovl),
+                                                VRS_b2(ovl), VRS_d2(ovl), VRS_v3(ovl),
+                                                VRS_rxb(ovl));  goto ok;
+   case 0xe70000000037ULL: s390_format_VRS_VRRD(s390_irgen_VLL, VRS_v1(ovl),
+                                                VRS_b2(ovl), VRS_d2(ovl), VRS_v3(ovl),
+                                                VRS_rxb(ovl));  goto ok;
+   case 0xe70000000038ULL: s390_format_VRS_VRDVM(s390_irgen_VESRL, VRS_v1(ovl),
+                                                 VRS_b2(ovl), VRS_d2(ovl),
+                                                 VRS_v3(ovl), VRS_m4(ovl),
+                                                 VRS_rxb(ovl));  goto ok;
+   case 0xe7000000003aULL: s390_format_VRS_VRDVM(s390_irgen_VESRA, VRS_v1(ovl),
+                                                 VRS_b2(ovl), VRS_d2(ovl),
+                                                 VRS_v3(ovl), VRS_m4(ovl),
+                                                 VRS_rxb(ovl));  goto ok;
+   case 0xe7000000003eULL: s390_format_VRS_VRDV(s390_irgen_VSTM, VRS_v1(ovl),
+                                                VRS_b2(ovl), VRS_d2(ovl), VRS_v3(ovl),
+                                                VRS_rxb(ovl));  goto ok;
+   case 0xe7000000003fULL: s390_format_VRS_VRRD(s390_irgen_VSTL, VRS_v1(ovl),
+                                                VRS_b2(ovl), VRS_d2(ovl), VRS_v3(ovl),
+                                                VRS_rxb(ovl));  goto ok;
+   case 0xe70000000040ULL: s390_format_VRI_VIM(s390_irgen_VLEIB, VRI_v1(ovl),
+                                                 VRI_i2(ovl), VRI_m3(ovl),
+                                                 VRI_rxb(ovl));  goto ok;
+   case 0xe70000000041ULL: s390_format_VRI_VIM(s390_irgen_VLEIH, VRI_v1(ovl),
+                                               VRI_i2(ovl), VRI_m3(ovl),
+                                               VRI_rxb(ovl));  goto ok;
+   case 0xe70000000042ULL: s390_format_VRI_VIM(s390_irgen_VLEIG, VRI_v1(ovl),
+                                               VRI_i2(ovl), VRI_m3(ovl),
+                                               VRI_rxb(ovl));  goto ok;
+   case 0xe70000000043ULL: s390_format_VRI_VIM(s390_irgen_VLEIF, VRI_v1(ovl),
+                                               VRI_i2(ovl), VRI_m3(ovl),
+                                               VRI_rxb(ovl));  goto ok;break;
+   case 0xe70000000044ULL: s390_format_VRI_VIM(s390_irgen_VGBM, VRI_v1(ovl),
+                                               VRI_i2(ovl), VRI_m3(ovl),
+                                               VRI_rxb(ovl));  goto ok;
+   case 0xe70000000045ULL: s390_format_VRI_VIM(s390_irgen_VREPI, VRI_v1(ovl),
+                                               VRI_i2(ovl), VRI_m3(ovl),
+                                               VRI_rxb(ovl));  goto ok;
+   case 0xe70000000046ULL: s390_format_VRI_VIM(s390_irgen_VGM, VRI_v1(ovl),
+                                               VRI_i2(ovl), VRI_m3(ovl),
+                                               VRI_rxb(ovl));  goto ok;
+   case 0xe7000000004aULL: s390_format_VRI_VVIMM(s390_irgen_VFTCI, VRIe_v1(ovl),
+                                                 VRIe_v2(ovl), VRIe_i3(ovl),
+                                                 VRIe_m4(ovl), VRIe_m5(ovl),
+                                                 VRIe_rxb(ovl));  goto ok;
+   case 0xe7000000004dULL: s390_format_VRI_VVIM(s390_irgen_VREP, VRI_v1(ovl),
+                                               VRI_v3(ovl), VRI_i2(ovl),
+                                               VRI_m3(ovl), VRI_rxb(ovl));  goto ok;
+   case 0xe70000000050ULL: s390_format_VRR_VVM(s390_irgen_VPOPCT, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_m4(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe70000000052ULL: s390_format_VRR_VVM(s390_irgen_VCTZ, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_m4(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe70000000053ULL: s390_format_VRR_VVM(s390_irgen_VCLZ, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_m4(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe70000000056ULL: s390_format_VRR_VV(s390_irgen_VLR, VRR_v1(ovl),
+                                              VRR_v2(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe7000000005cULL: s390_format_VRR_VVMM(s390_irgen_VISTR, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_m4(ovl),
+                                                VRR_m5(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe7000000005fULL: s390_format_VRR_VVM(s390_irgen_VSEG, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_m4(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe70000000060ULL: s390_format_VRR_VVVM(s390_irgen_VMRL, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe70000000061ULL: s390_format_VRR_VVVM(s390_irgen_VMRH, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe70000000062ULL: s390_format_VRR_VRR(s390_irgen_VLVGP, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe70000000064ULL: s390_format_VRR_VVVM(s390_irgen_VSUM, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe70000000065ULL: s390_format_VRR_VVVM(s390_irgen_VSUMG, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe70000000066ULL: s390_format_VRR_VVV(s390_irgen_VCKSM, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe70000000067ULL: s390_format_VRR_VVVM(s390_irgen_VSUMQ, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe70000000068ULL: s390_format_VRR_VVV(s390_irgen_VN, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe70000000069ULL: s390_format_VRR_VVV(s390_irgen_VNC, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe7000000006aULL: s390_format_VRR_VVV(s390_irgen_VO, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe7000000006bULL: s390_format_VRR_VVV(s390_irgen_VNO, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_rxb(ovl));  goto ok;
    case 0xe7000000006cULL: /* VNX */ goto unimplemented;
-   case 0xe7000000006dULL: s390_format_VRR_VVV(s390_irgen_VX, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.rxb);  goto ok;
+   case 0xe7000000006dULL: s390_format_VRR_VVV(s390_irgen_VX, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_rxb(ovl));  goto ok;
    case 0xe7000000006eULL: /* VNN */ goto unimplemented;
    case 0xe7000000006fULL: /* VOC */ goto unimplemented;
-   case 0xe70000000070ULL: s390_format_VRR_VVVM(s390_irgen_VESLV, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000072ULL: s390_format_VRId_VVVIM(s390_irgen_VERIM, ovl.fmt.VRId.v1,
-                                                  ovl.fmt.VRId.v2, ovl.fmt.VRId.v3,
-                                                  ovl.fmt.VRId.i4, ovl.fmt.VRId.m5,
-                                                  ovl.fmt.VRId.rxb);  goto ok;
-   case 0xe70000000073ULL: s390_format_VRR_VVVM(s390_irgen_VERLLV, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000074ULL: s390_format_VRR_VVV(s390_irgen_VSL, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000075ULL: s390_format_VRR_VVV(s390_irgen_VSLB, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000077ULL: s390_format_VRId_VVVI(s390_irgen_VSLDB, ovl.fmt.VRId.v1,
-                                                 ovl.fmt.VRId.v2, ovl.fmt.VRId.v3,
-                                                 ovl.fmt.VRId.i4, ovl.fmt.VRId.rxb);  goto ok;
-   case 0xe70000000078ULL: s390_format_VRR_VVVM(s390_irgen_VESRLV, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe7000000007aULL: s390_format_VRR_VVVM(s390_irgen_VESRAV, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe7000000007cULL: s390_format_VRR_VVV(s390_irgen_VSRL, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe7000000007dULL: s390_format_VRR_VVV(s390_irgen_VSRLB, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe7000000007eULL: s390_format_VRR_VVV(s390_irgen_VSRA, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe7000000007fULL: s390_format_VRR_VVV(s390_irgen_VSRAB, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000080ULL: s390_format_VRR_VVVMM(s390_irgen_VFEE, ovl.fmt.VRR.v1,
-                                                 ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                 ovl.fmt.VRR.m4, ovl.fmt.VRR.m5,
-                                                 ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000081ULL: s390_format_VRR_VVVMM(s390_irgen_VFENE, ovl.fmt.VRR.v1,
-                                                 ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                 ovl.fmt.VRR.m4, ovl.fmt.VRR.m5,
-                                                 ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000082ULL: s390_format_VRR_VVVMM(s390_irgen_VFAE, ovl.fmt.VRR.v1,
-                                                 ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                 ovl.fmt.VRR.m4, ovl.fmt.VRR.m5,
-                                                 ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000084ULL: s390_format_VRR_VVVM(s390_irgen_VPDI, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
+   case 0xe70000000070ULL: s390_format_VRR_VVVM(s390_irgen_VESLV, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe70000000072ULL: s390_format_VRId_VVVIM(s390_irgen_VERIM, VRId_v1(ovl),
+                                                  VRId_v2(ovl), VRId_v3(ovl),
+                                                  VRId_i4(ovl), VRId_m5(ovl),
+                                                  VRId_rxb(ovl));  goto ok;
+   case 0xe70000000073ULL: s390_format_VRR_VVVM(s390_irgen_VERLLV, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe70000000074ULL: s390_format_VRR_VVV(s390_irgen_VSL, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe70000000075ULL: s390_format_VRR_VVV(s390_irgen_VSLB, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe70000000077ULL: s390_format_VRId_VVVI(s390_irgen_VSLDB, VRId_v1(ovl),
+                                                 VRId_v2(ovl), VRId_v3(ovl),
+                                                 VRId_i4(ovl), VRId_rxb(ovl));  goto ok;
+   case 0xe70000000078ULL: s390_format_VRR_VVVM(s390_irgen_VESRLV, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe7000000007aULL: s390_format_VRR_VVVM(s390_irgen_VESRAV, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe7000000007cULL: s390_format_VRR_VVV(s390_irgen_VSRL, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe7000000007dULL: s390_format_VRR_VVV(s390_irgen_VSRLB, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe7000000007eULL: s390_format_VRR_VVV(s390_irgen_VSRA, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe7000000007fULL: s390_format_VRR_VVV(s390_irgen_VSRAB, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe70000000080ULL: s390_format_VRR_VVVMM(s390_irgen_VFEE, VRR_v1(ovl),
+                                                 VRR_v2(ovl), VRR_r3(ovl),
+                                                 VRR_m4(ovl), VRR_m5(ovl),
+                                                 VRR_rxb(ovl));  goto ok;
+   case 0xe70000000081ULL: s390_format_VRR_VVVMM(s390_irgen_VFENE, VRR_v1(ovl),
+                                                 VRR_v2(ovl), VRR_r3(ovl),
+                                                 VRR_m4(ovl), VRR_m5(ovl),
+                                                 VRR_rxb(ovl));  goto ok;
+   case 0xe70000000082ULL: s390_format_VRR_VVVMM(s390_irgen_VFAE, VRR_v1(ovl),
+                                                 VRR_v2(ovl), VRR_r3(ovl),
+                                                 VRR_m4(ovl), VRR_m5(ovl),
+                                                 VRR_rxb(ovl));  goto ok;
+   case 0xe70000000084ULL: s390_format_VRR_VVVM(s390_irgen_VPDI, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
    case 0xe70000000085ULL: /* VBPERM */ goto unimplemented;
-   case 0xe7000000008aULL: s390_format_VRR_VVVVMM(s390_irgen_VSTRC, ovl.fmt.VRRd.v1,
-                                                  ovl.fmt.VRRd.v2, ovl.fmt.VRRd.v3,
-                                                  ovl.fmt.VRRd.v4, ovl.fmt.VRRd.m5,
-                                                  ovl.fmt.VRRd.m6,
-                                                  ovl.fmt.VRRd.rxb);  goto ok;
-   case 0xe7000000008cULL: s390_format_VRR_VVVV(s390_irgen_VPERM, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe7000000008dULL: s390_format_VRR_VVVV(s390_irgen_VSEL, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe7000000008eULL: s390_format_VRR_VVVVMM(s390_irgen_VFMS, ovl.fmt.VRRe.v1,
-                                                  ovl.fmt.VRRe.v2, ovl.fmt.VRRe.v3,
-                                                  ovl.fmt.VRRe.v4, ovl.fmt.VRRe.m5,
-                                                  ovl.fmt.VRRe.m6,
-                                                  ovl.fmt.VRRe.rxb);  goto ok;
-   case 0xe7000000008fULL: s390_format_VRR_VVVVMM(s390_irgen_VFMA, ovl.fmt.VRRe.v1,
-                                                  ovl.fmt.VRRe.v2, ovl.fmt.VRRe.v3,
-                                                  ovl.fmt.VRRe.v4, ovl.fmt.VRRe.m5,
-                                                  ovl.fmt.VRRe.m6,
-                                                  ovl.fmt.VRRe.rxb);  goto ok;
-   case 0xe70000000094ULL: s390_format_VRR_VVVM(s390_irgen_VPK, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000095ULL: s390_format_VRR_VVVMM(s390_irgen_VPKLS, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.m4, ovl.fmt.VRR.m5, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe70000000097ULL: s390_format_VRR_VVVMM(s390_irgen_VPKS, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.m4, ovl.fmt.VRR.m5, ovl.fmt.VRR.rxb);  goto ok;
+   case 0xe7000000008aULL: s390_format_VRR_VVVVMM(s390_irgen_VSTRC, VRRd_v1(ovl),
+                                                  VRRd_v2(ovl), VRRd_v3(ovl),
+                                                  VRRd_v4(ovl), VRRd_m5(ovl),
+                                                  VRRd_m6(ovl),
+                                                  VRRd_rxb(ovl));  goto ok;
+   case 0xe7000000008cULL: s390_format_VRR_VVVV(s390_irgen_VPERM, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe7000000008dULL: s390_format_VRR_VVVV(s390_irgen_VSEL, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe7000000008eULL: s390_format_VRR_VVVVMM(s390_irgen_VFMS, VRRe_v1(ovl),
+                                                  VRRe_v2(ovl), VRRe_v3(ovl),
+                                                  VRRe_v4(ovl), VRRe_m5(ovl),
+                                                  VRRe_m6(ovl),
+                                                  VRRe_rxb(ovl));  goto ok;
+   case 0xe7000000008fULL: s390_format_VRR_VVVVMM(s390_irgen_VFMA, VRRe_v1(ovl),
+                                                  VRRe_v2(ovl), VRRe_v3(ovl),
+                                                  VRRe_v4(ovl), VRRe_m5(ovl),
+                                                  VRRe_m6(ovl),
+                                                  VRRe_rxb(ovl));  goto ok;
+   case 0xe70000000094ULL: s390_format_VRR_VVVM(s390_irgen_VPK, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe70000000095ULL: s390_format_VRR_VVVMM(s390_irgen_VPKLS, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_m4(ovl), VRR_m5(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe70000000097ULL: s390_format_VRR_VVVMM(s390_irgen_VPKS, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_m4(ovl), VRR_m5(ovl), VRR_rxb(ovl));  goto ok;
    case 0xe7000000009eULL: /* VFNMS */ goto unimplemented;
    case 0xe7000000009fULL: /* VFNMA */ goto unimplemented;
-   case 0xe700000000a1ULL: s390_format_VRR_VVVM(s390_irgen_VMLH, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000a2ULL: s390_format_VRR_VVVM(s390_irgen_VML, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000a3ULL: s390_format_VRR_VVVM(s390_irgen_VMH, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000a4ULL: s390_format_VRR_VVVM(s390_irgen_VMLE, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000a5ULL: s390_format_VRR_VVVM(s390_irgen_VMLO, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000a6ULL: s390_format_VRR_VVVM(s390_irgen_VME, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000a7ULL: s390_format_VRR_VVVM(s390_irgen_VMO, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000a9ULL: s390_format_VRRd_VVVVM(s390_irgen_VMALH, ovl.fmt.VRRd.v1,
-                                                  ovl.fmt.VRRd.v2, ovl.fmt.VRRd.v3,
-                                                  ovl.fmt.VRRd.v4, ovl.fmt.VRRd.m5,
-                                                  ovl.fmt.VRRd.rxb);  goto ok;
-   case 0xe700000000aaULL: s390_format_VRRd_VVVVM(s390_irgen_VMAL, ovl.fmt.VRRd.v1,
-                                                  ovl.fmt.VRRd.v2, ovl.fmt.VRRd.v3,
-                                                  ovl.fmt.VRRd.v4, ovl.fmt.VRRd.m5,
-                                                  ovl.fmt.VRRd.rxb);  goto ok;
-   case 0xe700000000abULL: s390_format_VRRd_VVVVM(s390_irgen_VMAH, ovl.fmt.VRRd.v1,
-                                                  ovl.fmt.VRRd.v2, ovl.fmt.VRRd.v3,
-                                                  ovl.fmt.VRRd.v4, ovl.fmt.VRRd.m5,
-                                                  ovl.fmt.VRRd.rxb);  goto ok;
-   case 0xe700000000acULL: s390_format_VRRd_VVVVM(s390_irgen_VMALE, ovl.fmt.VRRd.v1,
-                                                  ovl.fmt.VRRd.v2, ovl.fmt.VRRd.v3,
-                                                  ovl.fmt.VRRd.v4, ovl.fmt.VRRd.m5,
-                                                  ovl.fmt.VRRd.rxb);  goto ok;
-   case 0xe700000000adULL: s390_format_VRRd_VVVVM(s390_irgen_VMALO, ovl.fmt.VRRd.v1,
-                                                  ovl.fmt.VRRd.v2, ovl.fmt.VRRd.v3,
-                                                  ovl.fmt.VRRd.v4, ovl.fmt.VRRd.m5,
-                                                  ovl.fmt.VRRd.rxb);  goto ok;
-   case 0xe700000000aeULL: s390_format_VRRd_VVVVM(s390_irgen_VMAE, ovl.fmt.VRRd.v1,
-                                                  ovl.fmt.VRRd.v2, ovl.fmt.VRRd.v3,
-                                                  ovl.fmt.VRRd.v4, ovl.fmt.VRRd.m5,
-                                                  ovl.fmt.VRRd.rxb);  goto ok;
-   case 0xe700000000afULL: s390_format_VRRd_VVVVM(s390_irgen_VMAO, ovl.fmt.VRRd.v1,
-                                                  ovl.fmt.VRRd.v2, ovl.fmt.VRRd.v3,
-                                                  ovl.fmt.VRRd.v4, ovl.fmt.VRRd.m5,
-                                                  ovl.fmt.VRRd.rxb);  goto ok;
-   case 0xe700000000b4ULL: s390_format_VRR_VVVM(s390_irgen_VGFM, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
+   case 0xe700000000a1ULL: s390_format_VRR_VVVM(s390_irgen_VMLH, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000a2ULL: s390_format_VRR_VVVM(s390_irgen_VML, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000a3ULL: s390_format_VRR_VVVM(s390_irgen_VMH, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000a4ULL: s390_format_VRR_VVVM(s390_irgen_VMLE, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000a5ULL: s390_format_VRR_VVVM(s390_irgen_VMLO, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000a6ULL: s390_format_VRR_VVVM(s390_irgen_VME, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000a7ULL: s390_format_VRR_VVVM(s390_irgen_VMO, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000a9ULL: s390_format_VRRd_VVVVM(s390_irgen_VMALH, VRRd_v1(ovl),
+                                                  VRRd_v2(ovl), VRRd_v3(ovl),
+                                                  VRRd_v4(ovl), VRRd_m5(ovl),
+                                                  VRRd_rxb(ovl));  goto ok;
+   case 0xe700000000aaULL: s390_format_VRRd_VVVVM(s390_irgen_VMAL, VRRd_v1(ovl),
+                                                  VRRd_v2(ovl), VRRd_v3(ovl),
+                                                  VRRd_v4(ovl), VRRd_m5(ovl),
+                                                  VRRd_rxb(ovl));  goto ok;
+   case 0xe700000000abULL: s390_format_VRRd_VVVVM(s390_irgen_VMAH, VRRd_v1(ovl),
+                                                  VRRd_v2(ovl), VRRd_v3(ovl),
+                                                  VRRd_v4(ovl), VRRd_m5(ovl),
+                                                  VRRd_rxb(ovl));  goto ok;
+   case 0xe700000000acULL: s390_format_VRRd_VVVVM(s390_irgen_VMALE, VRRd_v1(ovl),
+                                                  VRRd_v2(ovl), VRRd_v3(ovl),
+                                                  VRRd_v4(ovl), VRRd_m5(ovl),
+                                                  VRRd_rxb(ovl));  goto ok;
+   case 0xe700000000adULL: s390_format_VRRd_VVVVM(s390_irgen_VMALO, VRRd_v1(ovl),
+                                                  VRRd_v2(ovl), VRRd_v3(ovl),
+                                                  VRRd_v4(ovl), VRRd_m5(ovl),
+                                                  VRRd_rxb(ovl));  goto ok;
+   case 0xe700000000aeULL: s390_format_VRRd_VVVVM(s390_irgen_VMAE, VRRd_v1(ovl),
+                                                  VRRd_v2(ovl), VRRd_v3(ovl),
+                                                  VRRd_v4(ovl), VRRd_m5(ovl),
+                                                  VRRd_rxb(ovl));  goto ok;
+   case 0xe700000000afULL: s390_format_VRRd_VVVVM(s390_irgen_VMAO, VRRd_v1(ovl),
+                                                  VRRd_v2(ovl), VRRd_v3(ovl),
+                                                  VRRd_v4(ovl), VRRd_m5(ovl),
+                                                  VRRd_rxb(ovl));  goto ok;
+   case 0xe700000000b4ULL: s390_format_VRR_VVVM(s390_irgen_VGFM, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
    case 0xe700000000b8ULL: /* VMSL */ goto unimplemented;
-   case 0xe700000000b9ULL: s390_format_VRRd_VVVVM(s390_irgen_VACCC, ovl.fmt.VRRd.v1,
-                                                  ovl.fmt.VRRd.v2, ovl.fmt.VRRd.v3,
-                                                  ovl.fmt.VRRd.v4, ovl.fmt.VRRd.m5,
-                                                  ovl.fmt.VRRd.rxb);  goto ok;
-   case 0xe700000000bbULL: s390_format_VRRd_VVVVM(s390_irgen_VAC, ovl.fmt.VRRd.v1,
-                                                  ovl.fmt.VRRd.v2, ovl.fmt.VRRd.v3,
-                                                  ovl.fmt.VRRd.v4, ovl.fmt.VRRd.m5,
-                                                  ovl.fmt.VRRd.rxb);  goto ok;
-   case 0xe700000000bcULL: s390_format_VRRd_VVVVM(s390_irgen_VGFMA, ovl.fmt.VRRd.v1,
-                                                  ovl.fmt.VRRd.v2, ovl.fmt.VRRd.v3,
-                                                  ovl.fmt.VRRd.v4, ovl.fmt.VRRd.m5,
-                                                  ovl.fmt.VRRd.rxb);  goto ok;
-   case 0xe700000000bdULL: s390_format_VRRd_VVVVM(s390_irgen_VSBCBI, ovl.fmt.VRRd.v1,
-                                                  ovl.fmt.VRRd.v2, ovl.fmt.VRRd.v3,
-                                                  ovl.fmt.VRRd.v4, ovl.fmt.VRRd.m5,
-                                                  ovl.fmt.VRRd.rxb);  goto ok;
-   case 0xe700000000bfULL: s390_format_VRRd_VVVVM(s390_irgen_VSBI, ovl.fmt.VRRd.v1,
-                                                  ovl.fmt.VRRd.v2, ovl.fmt.VRRd.v3,
-                                                  ovl.fmt.VRRd.v4, ovl.fmt.VRRd.m5,
-                                                  ovl.fmt.VRRd.rxb);  goto ok;
-   case 0xe700000000c0ULL: s390_format_VRRa_VVMMM(s390_irgen_VCLGD, ovl.fmt.VRRa.v1,
-                                                  ovl.fmt.VRRa.v2, ovl.fmt.VRRa.m3,
-                                                  ovl.fmt.VRRa.m4, ovl.fmt.VRRa.m5,
-                                                  ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000c1ULL: s390_format_VRRa_VVMMM(s390_irgen_VCDLG, ovl.fmt.VRRa.v1,
-                                                  ovl.fmt.VRRa.v2, ovl.fmt.VRRa.m3,
-                                                  ovl.fmt.VRRa.m4, ovl.fmt.VRRa.m5,
-                                                  ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000c2ULL: s390_format_VRRa_VVMMM(s390_irgen_VCGD, ovl.fmt.VRRa.v1,
-                                                  ovl.fmt.VRRa.v2, ovl.fmt.VRRa.m3,
-                                                  ovl.fmt.VRRa.m4, ovl.fmt.VRRa.m5,
-                                                  ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000c3ULL: s390_format_VRRa_VVMMM(s390_irgen_VCDG, ovl.fmt.VRRa.v1,
-                                                  ovl.fmt.VRRa.v2, ovl.fmt.VRRa.m3,
-                                                  ovl.fmt.VRRa.m4, ovl.fmt.VRRa.m5,
-                                                  ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000c4ULL: s390_format_VRRa_VVMMM(s390_irgen_VLDE, ovl.fmt.VRRa.v1,
-                                                  ovl.fmt.VRRa.v2, ovl.fmt.VRRa.m3,
-                                                  ovl.fmt.VRRa.m4, ovl.fmt.VRRa.m5,
-                                                  ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000c5ULL: s390_format_VRRa_VVMMM(s390_irgen_VLED, ovl.fmt.VRRa.v1,
-                                                  ovl.fmt.VRRa.v2, ovl.fmt.VRRa.m3,
-                                                  ovl.fmt.VRRa.m4, ovl.fmt.VRRa.m5,
-                                                  ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000c7ULL: s390_format_VRRa_VVMMM(s390_irgen_VFI, ovl.fmt.VRRa.v1,
-                                                  ovl.fmt.VRRa.v2, ovl.fmt.VRRa.m3,
-                                                  ovl.fmt.VRRa.m4, ovl.fmt.VRRa.m5,
-                                                  ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000caULL: s390_format_VRRa_VVMM(s390_irgen_WFK, ovl.fmt.VRRa.v1,
-                                                 ovl.fmt.VRRa.v2, ovl.fmt.VRRa.m3,
-                                                 ovl.fmt.VRRa.m4,
-                                                 ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000cbULL: s390_format_VRRa_VVMM(s390_irgen_WFC, ovl.fmt.VRRa.v1,
-                                                 ovl.fmt.VRRa.v2, ovl.fmt.VRRa.m3,
-                                                 ovl.fmt.VRRa.m4,
-                                                 ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000ccULL: s390_format_VRRa_VVMMM(s390_irgen_VFPSO, ovl.fmt.VRRa.v1,
-                                                  ovl.fmt.VRRa.v2, ovl.fmt.VRRa.m3,
-                                                  ovl.fmt.VRRa.m4, ovl.fmt.VRRa.m5,
-                                                  ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000ceULL: s390_format_VRRa_VVMM(s390_irgen_VFSQ, ovl.fmt.VRRa.v1,
-                                                 ovl.fmt.VRRa.v2, ovl.fmt.VRRa.m3,
-                                                 ovl.fmt.VRRa.m4,
-                                                 ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000d4ULL: s390_format_VRR_VVM(s390_irgen_VUPLL, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.m4,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000d5ULL: s390_format_VRR_VVM(s390_irgen_VUPLH, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.m4,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000d6ULL: s390_format_VRR_VVM(s390_irgen_VUPL, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.m4,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000d7ULL: s390_format_VRR_VVM(s390_irgen_VUPH, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.m4,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000d8ULL: s390_format_VRR_VV(s390_irgen_VTM, ovl.fmt.VRR.v1,
-                                              ovl.fmt.VRR.v2, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000d9ULL: s390_format_VRR_VVM(s390_irgen_VECL, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.m4,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000dbULL: s390_format_VRR_VVM(s390_irgen_VEC, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.m4,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000deULL: s390_format_VRR_VVM(s390_irgen_VLC, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.m4,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000dfULL: s390_format_VRR_VVM(s390_irgen_VLP, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.m4,
-                                               ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000e2ULL: s390_format_VRRa_VVVMM(s390_irgen_VFS, ovl.fmt.VRRa.v1,
-                                                  ovl.fmt.VRRa.v2, ovl.fmt.VRRa.v3,
-                                                  ovl.fmt.VRRa.m3, ovl.fmt.VRRa.m4,
-                                                  ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000e3ULL: s390_format_VRRa_VVVMM(s390_irgen_VFA, ovl.fmt.VRRa.v1,
-                                                  ovl.fmt.VRRa.v2, ovl.fmt.VRRa.v3,
-                                                  ovl.fmt.VRRa.m3, ovl.fmt.VRRa.m4,
-                                                  ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000e5ULL: s390_format_VRRa_VVVMM(s390_irgen_VFD, ovl.fmt.VRRa.v1,
-                                                  ovl.fmt.VRRa.v2, ovl.fmt.VRRa.v3,
-                                                  ovl.fmt.VRRa.m3, ovl.fmt.VRRa.m4,
-                                                  ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000e7ULL: s390_format_VRRa_VVVMM(s390_irgen_VFM, ovl.fmt.VRRa.v1,
-                                                  ovl.fmt.VRRa.v2, ovl.fmt.VRRa.v3,
-                                                  ovl.fmt.VRRa.m3, ovl.fmt.VRRa.m4,
-                                                  ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000e8ULL: s390_format_VRRa_VVVMMM(s390_irgen_VFCE, ovl.fmt.VRRa.v1,
-                                                   ovl.fmt.VRRa.v2, ovl.fmt.VRRa.v3,
-                                                   ovl.fmt.VRRa.m3, ovl.fmt.VRRa.m4,
-                                                   ovl.fmt.VRRa.m5,
-                                                   ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000eaULL: s390_format_VRRa_VVVMMM(s390_irgen_VFCHE, ovl.fmt.VRRa.v1,
-                                                   ovl.fmt.VRRa.v2, ovl.fmt.VRRa.v3,
-                                                   ovl.fmt.VRRa.m3, ovl.fmt.VRRa.m4,
-                                                   ovl.fmt.VRRa.m5,
-                                                   ovl.fmt.VRRa.rxb); goto ok;
-   case 0xe700000000ebULL: s390_format_VRRa_VVVMMM(s390_irgen_VFCH, ovl.fmt.VRRa.v1,
-                                                   ovl.fmt.VRRa.v2, ovl.fmt.VRRa.v3,
-                                                   ovl.fmt.VRRa.m3, ovl.fmt.VRRa.m4,
-                                                   ovl.fmt.VRRa.m5,
-                                                   ovl.fmt.VRRa.rxb); goto ok;
+   case 0xe700000000b9ULL: s390_format_VRRd_VVVVM(s390_irgen_VACCC, VRRd_v1(ovl),
+                                                  VRRd_v2(ovl), VRRd_v3(ovl),
+                                                  VRRd_v4(ovl), VRRd_m5(ovl),
+                                                  VRRd_rxb(ovl));  goto ok;
+   case 0xe700000000bbULL: s390_format_VRRd_VVVVM(s390_irgen_VAC, VRRd_v1(ovl),
+                                                  VRRd_v2(ovl), VRRd_v3(ovl),
+                                                  VRRd_v4(ovl), VRRd_m5(ovl),
+                                                  VRRd_rxb(ovl));  goto ok;
+   case 0xe700000000bcULL: s390_format_VRRd_VVVVM(s390_irgen_VGFMA, VRRd_v1(ovl),
+                                                  VRRd_v2(ovl), VRRd_v3(ovl),
+                                                  VRRd_v4(ovl), VRRd_m5(ovl),
+                                                  VRRd_rxb(ovl));  goto ok;
+   case 0xe700000000bdULL: s390_format_VRRd_VVVVM(s390_irgen_VSBCBI, VRRd_v1(ovl),
+                                                  VRRd_v2(ovl), VRRd_v3(ovl),
+                                                  VRRd_v4(ovl), VRRd_m5(ovl),
+                                                  VRRd_rxb(ovl));  goto ok;
+   case 0xe700000000bfULL: s390_format_VRRd_VVVVM(s390_irgen_VSBI, VRRd_v1(ovl),
+                                                  VRRd_v2(ovl), VRRd_v3(ovl),
+                                                  VRRd_v4(ovl), VRRd_m5(ovl),
+                                                  VRRd_rxb(ovl));  goto ok;
+   case 0xe700000000c0ULL: s390_format_VRRa_VVMMM(s390_irgen_VCLGD, VRRa_v1(ovl),
+                                                  VRRa_v2(ovl), VRRa_m3(ovl),
+                                                  VRRa_m4(ovl), VRRa_m5(ovl),
+                                                  VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000c1ULL: s390_format_VRRa_VVMMM(s390_irgen_VCDLG, VRRa_v1(ovl),
+                                                  VRRa_v2(ovl), VRRa_m3(ovl),
+                                                  VRRa_m4(ovl), VRRa_m5(ovl),
+                                                  VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000c2ULL: s390_format_VRRa_VVMMM(s390_irgen_VCGD, VRRa_v1(ovl),
+                                                  VRRa_v2(ovl), VRRa_m3(ovl),
+                                                  VRRa_m4(ovl), VRRa_m5(ovl),
+                                                  VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000c3ULL: s390_format_VRRa_VVMMM(s390_irgen_VCDG, VRRa_v1(ovl),
+                                                  VRRa_v2(ovl), VRRa_m3(ovl),
+                                                  VRRa_m4(ovl), VRRa_m5(ovl),
+                                                  VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000c4ULL: s390_format_VRRa_VVMMM(s390_irgen_VLDE, VRRa_v1(ovl),
+                                                  VRRa_v2(ovl), VRRa_m3(ovl),
+                                                  VRRa_m4(ovl), VRRa_m5(ovl),
+                                                  VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000c5ULL: s390_format_VRRa_VVMMM(s390_irgen_VLED, VRRa_v1(ovl),
+                                                  VRRa_v2(ovl), VRRa_m3(ovl),
+                                                  VRRa_m4(ovl), VRRa_m5(ovl),
+                                                  VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000c7ULL: s390_format_VRRa_VVMMM(s390_irgen_VFI, VRRa_v1(ovl),
+                                                  VRRa_v2(ovl), VRRa_m3(ovl),
+                                                  VRRa_m4(ovl), VRRa_m5(ovl),
+                                                  VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000caULL: s390_format_VRRa_VVMM(s390_irgen_WFK, VRRa_v1(ovl),
+                                                 VRRa_v2(ovl), VRRa_m3(ovl),
+                                                 VRRa_m4(ovl),
+                                                 VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000cbULL: s390_format_VRRa_VVMM(s390_irgen_WFC, VRRa_v1(ovl),
+                                                 VRRa_v2(ovl), VRRa_m3(ovl),
+                                                 VRRa_m4(ovl),
+                                                 VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000ccULL: s390_format_VRRa_VVMMM(s390_irgen_VFPSO, VRRa_v1(ovl),
+                                                  VRRa_v2(ovl), VRRa_m3(ovl),
+                                                  VRRa_m4(ovl), VRRa_m5(ovl),
+                                                  VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000ceULL: s390_format_VRRa_VVMM(s390_irgen_VFSQ, VRRa_v1(ovl),
+                                                 VRRa_v2(ovl), VRRa_m3(ovl),
+                                                 VRRa_m4(ovl),
+                                                 VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000d4ULL: s390_format_VRR_VVM(s390_irgen_VUPLL, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_m4(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe700000000d5ULL: s390_format_VRR_VVM(s390_irgen_VUPLH, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_m4(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe700000000d6ULL: s390_format_VRR_VVM(s390_irgen_VUPL, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_m4(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe700000000d7ULL: s390_format_VRR_VVM(s390_irgen_VUPH, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_m4(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe700000000d8ULL: s390_format_VRR_VV(s390_irgen_VTM, VRR_v1(ovl),
+                                              VRR_v2(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000d9ULL: s390_format_VRR_VVM(s390_irgen_VECL, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_m4(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe700000000dbULL: s390_format_VRR_VVM(s390_irgen_VEC, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_m4(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe700000000deULL: s390_format_VRR_VVM(s390_irgen_VLC, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_m4(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe700000000dfULL: s390_format_VRR_VVM(s390_irgen_VLP, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_m4(ovl),
+                                               VRR_rxb(ovl));  goto ok;
+   case 0xe700000000e2ULL: s390_format_VRRa_VVVMM(s390_irgen_VFS, VRRa_v1(ovl),
+                                                  VRRa_v2(ovl), VRRa_v3(ovl),
+                                                  VRRa_m3(ovl), VRRa_m4(ovl),
+                                                  VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000e3ULL: s390_format_VRRa_VVVMM(s390_irgen_VFA, VRRa_v1(ovl),
+                                                  VRRa_v2(ovl), VRRa_v3(ovl),
+                                                  VRRa_m3(ovl), VRRa_m4(ovl),
+                                                  VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000e5ULL: s390_format_VRRa_VVVMM(s390_irgen_VFD, VRRa_v1(ovl),
+                                                  VRRa_v2(ovl), VRRa_v3(ovl),
+                                                  VRRa_m3(ovl), VRRa_m4(ovl),
+                                                  VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000e7ULL: s390_format_VRRa_VVVMM(s390_irgen_VFM, VRRa_v1(ovl),
+                                                  VRRa_v2(ovl), VRRa_v3(ovl),
+                                                  VRRa_m3(ovl), VRRa_m4(ovl),
+                                                  VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000e8ULL: s390_format_VRRa_VVVMMM(s390_irgen_VFCE, VRRa_v1(ovl),
+                                                   VRRa_v2(ovl), VRRa_v3(ovl),
+                                                   VRRa_m3(ovl), VRRa_m4(ovl),
+                                                   VRRa_m5(ovl),
+                                                   VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000eaULL: s390_format_VRRa_VVVMMM(s390_irgen_VFCHE, VRRa_v1(ovl),
+                                                   VRRa_v2(ovl), VRRa_v3(ovl),
+                                                   VRRa_m3(ovl), VRRa_m4(ovl),
+                                                   VRRa_m5(ovl),
+                                                   VRRa_rxb(ovl)); goto ok;
+   case 0xe700000000ebULL: s390_format_VRRa_VVVMMM(s390_irgen_VFCH, VRRa_v1(ovl),
+                                                   VRRa_v2(ovl), VRRa_v3(ovl),
+                                                   VRRa_m3(ovl), VRRa_m4(ovl),
+                                                   VRRa_m5(ovl),
+                                                   VRRa_rxb(ovl)); goto ok;
    case 0xe700000000eeULL: /* VFMIN */ goto unimplemented;
    case 0xe700000000efULL: /* VFMAX */ goto unimplemented;
-   case 0xe700000000f0ULL: s390_format_VRR_VVVM(s390_irgen_VAVGL, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000f1ULL: s390_format_VRR_VVVM(s390_irgen_VACC, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000f2ULL: s390_format_VRR_VVVM(s390_irgen_VAVG, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000f3ULL: s390_format_VRR_VVVM(s390_irgen_VA, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000f5ULL: s390_format_VRR_VVVM(s390_irgen_VSCBI, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000f7ULL: s390_format_VRR_VVVM(s390_irgen_VS, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000f8ULL: s390_format_VRR_VVVMM(s390_irgen_VCEQ, ovl.fmt.VRR.v1,
-                                                 ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                 ovl.fmt.VRR.m4, ovl.fmt.VRR.m5,
-                                                 ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000f9ULL: s390_format_VRR_VVVMM(s390_irgen_VCHL, ovl.fmt.VRR.v1,
-                                                 ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                 ovl.fmt.VRR.m4, ovl.fmt.VRR.m5,
-                                                 ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000fbULL: s390_format_VRR_VVVMM(s390_irgen_VCH, ovl.fmt.VRR.v1,
-                                                 ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                 ovl.fmt.VRR.m4, ovl.fmt.VRR.m5,
-                                                 ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000fcULL: s390_format_VRR_VVVM(s390_irgen_VMNL, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000fdULL: s390_format_VRR_VVVM(s390_irgen_VMXL, ovl.fmt.VRR.v1,
-                                                ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                                ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000feULL: s390_format_VRR_VVVM(s390_irgen_VMN, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xe700000000ffULL: s390_format_VRR_VVVM(s390_irgen_VMX, ovl.fmt.VRR.v1,
-                                               ovl.fmt.VRR.v2, ovl.fmt.VRR.r3,
-                                               ovl.fmt.VRR.m4, ovl.fmt.VRR.rxb);  goto ok;
-   case 0xeb0000000004ULL: s390_format_RSY_RRRD(s390_irgen_LMG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb000000000aULL: s390_format_RSY_RRRD(s390_irgen_SRAG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb000000000bULL: s390_format_RSY_RRRD(s390_irgen_SLAG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb000000000cULL: s390_format_RSY_RRRD(s390_irgen_SRLG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb000000000dULL: s390_format_RSY_RRRD(s390_irgen_SLLG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xe700000000f0ULL: s390_format_VRR_VVVM(s390_irgen_VAVGL, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000f1ULL: s390_format_VRR_VVVM(s390_irgen_VACC, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000f2ULL: s390_format_VRR_VVVM(s390_irgen_VAVG, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000f3ULL: s390_format_VRR_VVVM(s390_irgen_VA, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000f5ULL: s390_format_VRR_VVVM(s390_irgen_VSCBI, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000f7ULL: s390_format_VRR_VVVM(s390_irgen_VS, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000f8ULL: s390_format_VRR_VVVMM(s390_irgen_VCEQ, VRR_v1(ovl),
+                                                 VRR_v2(ovl), VRR_r3(ovl),
+                                                 VRR_m4(ovl), VRR_m5(ovl),
+                                                 VRR_rxb(ovl));  goto ok;
+   case 0xe700000000f9ULL: s390_format_VRR_VVVMM(s390_irgen_VCHL, VRR_v1(ovl),
+                                                 VRR_v2(ovl), VRR_r3(ovl),
+                                                 VRR_m4(ovl), VRR_m5(ovl),
+                                                 VRR_rxb(ovl));  goto ok;
+   case 0xe700000000fbULL: s390_format_VRR_VVVMM(s390_irgen_VCH, VRR_v1(ovl),
+                                                 VRR_v2(ovl), VRR_r3(ovl),
+                                                 VRR_m4(ovl), VRR_m5(ovl),
+                                                 VRR_rxb(ovl));  goto ok;
+   case 0xe700000000fcULL: s390_format_VRR_VVVM(s390_irgen_VMNL, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000fdULL: s390_format_VRR_VVVM(s390_irgen_VMXL, VRR_v1(ovl),
+                                                VRR_v2(ovl), VRR_r3(ovl),
+                                                VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000feULL: s390_format_VRR_VVVM(s390_irgen_VMN, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xe700000000ffULL: s390_format_VRR_VVVM(s390_irgen_VMX, VRR_v1(ovl),
+                                               VRR_v2(ovl), VRR_r3(ovl),
+                                               VRR_m4(ovl), VRR_rxb(ovl));  goto ok;
+   case 0xeb0000000004ULL: s390_format_RSY_RRRD(s390_irgen_LMG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb000000000aULL: s390_format_RSY_RRRD(s390_irgen_SRAG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb000000000bULL: s390_format_RSY_RRRD(s390_irgen_SLAG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb000000000cULL: s390_format_RSY_RRRD(s390_irgen_SRLG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb000000000dULL: s390_format_RSY_RRRD(s390_irgen_SLLG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
    case 0xeb000000000fULL: /* TRACG */ goto unimplemented;
-   case 0xeb0000000014ULL: s390_format_RSY_RRRD(s390_irgen_CSY, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb000000001cULL: s390_format_RSY_RRRD(s390_irgen_RLLG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb000000001dULL: s390_format_RSY_RRRD(s390_irgen_RLL, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb0000000020ULL: s390_format_RSY_RURD(s390_irgen_CLMH, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb0000000021ULL: s390_format_RSY_RURD(s390_irgen_CLMY, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb0000000023ULL: s390_format_RSY_RURD(s390_irgen_CLT, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb0000000024ULL: s390_format_RSY_RRRD(s390_irgen_STMG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb0000000014ULL: s390_format_RSY_RRRD(s390_irgen_CSY, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb000000001cULL: s390_format_RSY_RRRD(s390_irgen_RLLG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb000000001dULL: s390_format_RSY_RRRD(s390_irgen_RLL, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb0000000020ULL: s390_format_RSY_RURD(s390_irgen_CLMH, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb0000000021ULL: s390_format_RSY_RURD(s390_irgen_CLMY, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb0000000023ULL: s390_format_RSY_RURD(s390_irgen_CLT, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb0000000024ULL: s390_format_RSY_RRRD(s390_irgen_STMG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
    case 0xeb0000000025ULL: /* STCTG */ goto unimplemented;
-   case 0xeb0000000026ULL: s390_format_RSY_RRRD(s390_irgen_STMH, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb000000002bULL: s390_format_RSY_RURD(s390_irgen_CLGT, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb0000000026ULL: s390_format_RSY_RRRD(s390_irgen_STMH, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb000000002bULL: s390_format_RSY_RURD(s390_irgen_CLGT, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
    case 0xeb000000002cULL: s390_format_RSY_RURD(s390_irgen_STCMH,
-                                                ovl.fmt.RSY.r1, ovl.fmt.RSY.r3,
-                                                ovl.fmt.RSY.b2, ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
+                                                RSY_r1(ovl), RSY_r3(ovl),
+                                                RSY_b2(ovl), RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
    case 0xeb000000002dULL: s390_format_RSY_RURD(s390_irgen_STCMY,
-                                                ovl.fmt.RSY.r1, ovl.fmt.RSY.r3,
-                                                ovl.fmt.RSY.b2, ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
+                                                RSY_r1(ovl), RSY_r3(ovl),
+                                                RSY_b2(ovl), RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
    case 0xeb000000002fULL: /* LCTLG */ goto unimplemented;
-   case 0xeb0000000030ULL: s390_format_RSY_RRRD(s390_irgen_CSG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb0000000031ULL: s390_format_RSY_RRRD(s390_irgen_CDSY, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb000000003eULL: s390_format_RSY_RRRD(s390_irgen_CDSG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb0000000044ULL: s390_format_RSY_RRRD(s390_irgen_BXHG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb0000000030ULL: s390_format_RSY_RRRD(s390_irgen_CSG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb0000000031ULL: s390_format_RSY_RRRD(s390_irgen_CDSY, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb000000003eULL: s390_format_RSY_RRRD(s390_irgen_CDSG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb0000000044ULL: s390_format_RSY_RRRD(s390_irgen_BXHG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
    case 0xeb0000000045ULL: s390_format_RSY_RRRD(s390_irgen_BXLEG,
-                                                ovl.fmt.RSY.r1, ovl.fmt.RSY.r3,
-                                                ovl.fmt.RSY.b2, ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb000000004cULL: s390_format_RSY_RRRD(s390_irgen_ECAG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb0000000051ULL: s390_format_SIY_URD(s390_irgen_TMY, ovl.fmt.SIY.i2,
-                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
-                                               ovl.fmt.SIY.dh1);  goto ok;
-   case 0xeb0000000052ULL: s390_format_SIY_URD(s390_irgen_MVIY, ovl.fmt.SIY.i2,
-                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
-                                               ovl.fmt.SIY.dh1);  goto ok;
-   case 0xeb0000000054ULL: s390_format_SIY_URD(s390_irgen_NIY, ovl.fmt.SIY.i2,
-                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
-                                               ovl.fmt.SIY.dh1);  goto ok;
-   case 0xeb0000000055ULL: s390_format_SIY_URD(s390_irgen_CLIY, ovl.fmt.SIY.i2,
-                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
-                                               ovl.fmt.SIY.dh1);  goto ok;
-   case 0xeb0000000056ULL: s390_format_SIY_URD(s390_irgen_OIY, ovl.fmt.SIY.i2,
-                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
-                                               ovl.fmt.SIY.dh1);  goto ok;
-   case 0xeb0000000057ULL: s390_format_SIY_URD(s390_irgen_XIY, ovl.fmt.SIY.i2,
-                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
-                                               ovl.fmt.SIY.dh1);  goto ok;
-   case 0xeb000000006aULL: s390_format_SIY_IRD(s390_irgen_ASI, ovl.fmt.SIY.i2,
-                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
-                                               ovl.fmt.SIY.dh1);  goto ok;
-   case 0xeb000000006eULL: s390_format_SIY_IRD(s390_irgen_ALSI, ovl.fmt.SIY.i2,
-                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
-                                               ovl.fmt.SIY.dh1);  goto ok;
-   case 0xeb000000007aULL: s390_format_SIY_IRD(s390_irgen_AGSI, ovl.fmt.SIY.i2,
-                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
-                                               ovl.fmt.SIY.dh1);  goto ok;
-   case 0xeb000000007eULL: s390_format_SIY_IRD(s390_irgen_ALGSI, ovl.fmt.SIY.i2,
-                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
-                                               ovl.fmt.SIY.dh1);  goto ok;
-   case 0xeb0000000080ULL: s390_format_RSY_RURD(s390_irgen_ICMH, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb0000000081ULL: s390_format_RSY_RURD(s390_irgen_ICMY, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
+                                                RSY_r1(ovl), RSY_r3(ovl),
+                                                RSY_b2(ovl), RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb000000004cULL: s390_format_RSY_RRRD(s390_irgen_ECAG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb0000000051ULL: s390_format_SIY_URD(s390_irgen_TMY, SIY_i2(ovl),
+                                               SIY_b1(ovl), SIY_dl1(ovl),
+                                               SIY_dh1(ovl));  goto ok;
+   case 0xeb0000000052ULL: s390_format_SIY_URD(s390_irgen_MVIY, SIY_i2(ovl),
+                                               SIY_b1(ovl), SIY_dl1(ovl),
+                                               SIY_dh1(ovl));  goto ok;
+   case 0xeb0000000054ULL: s390_format_SIY_URD(s390_irgen_NIY, SIY_i2(ovl),
+                                               SIY_b1(ovl), SIY_dl1(ovl),
+                                               SIY_dh1(ovl));  goto ok;
+   case 0xeb0000000055ULL: s390_format_SIY_URD(s390_irgen_CLIY, SIY_i2(ovl),
+                                               SIY_b1(ovl), SIY_dl1(ovl),
+                                               SIY_dh1(ovl));  goto ok;
+   case 0xeb0000000056ULL: s390_format_SIY_URD(s390_irgen_OIY, SIY_i2(ovl),
+                                               SIY_b1(ovl), SIY_dl1(ovl),
+                                               SIY_dh1(ovl));  goto ok;
+   case 0xeb0000000057ULL: s390_format_SIY_URD(s390_irgen_XIY, SIY_i2(ovl),
+                                               SIY_b1(ovl), SIY_dl1(ovl),
+                                               SIY_dh1(ovl));  goto ok;
+   case 0xeb000000006aULL: s390_format_SIY_IRD(s390_irgen_ASI, SIY_i2(ovl),
+                                               SIY_b1(ovl), SIY_dl1(ovl),
+                                               SIY_dh1(ovl));  goto ok;
+   case 0xeb000000006eULL: s390_format_SIY_IRD(s390_irgen_ALSI, SIY_i2(ovl),
+                                               SIY_b1(ovl), SIY_dl1(ovl),
+                                               SIY_dh1(ovl));  goto ok;
+   case 0xeb000000007aULL: s390_format_SIY_IRD(s390_irgen_AGSI, SIY_i2(ovl),
+                                               SIY_b1(ovl), SIY_dl1(ovl),
+                                               SIY_dh1(ovl));  goto ok;
+   case 0xeb000000007eULL: s390_format_SIY_IRD(s390_irgen_ALGSI, SIY_i2(ovl),
+                                               SIY_b1(ovl), SIY_dl1(ovl),
+                                               SIY_dh1(ovl));  goto ok;
+   case 0xeb0000000080ULL: s390_format_RSY_RURD(s390_irgen_ICMH, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb0000000081ULL: s390_format_RSY_RURD(s390_irgen_ICMY, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
    case 0xeb000000008eULL: /* MVCLU */ goto unimplemented;
    case 0xeb000000008fULL: /* CLCLU */ goto unimplemented;
-   case 0xeb0000000090ULL: s390_format_RSY_RRRD(s390_irgen_STMY, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb0000000096ULL: s390_format_RSY_RRRD(s390_irgen_LMH, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb0000000098ULL: s390_format_RSY_RRRD(s390_irgen_LMY, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb000000009aULL: s390_format_RSY_AARD(s390_irgen_LAMY, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb0000000090ULL: s390_format_RSY_RRRD(s390_irgen_STMY, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb0000000096ULL: s390_format_RSY_RRRD(s390_irgen_LMH, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb0000000098ULL: s390_format_RSY_RRRD(s390_irgen_LMY, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb000000009aULL: s390_format_RSY_AARD(s390_irgen_LAMY, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
    case 0xeb000000009bULL: s390_format_RSY_AARD(s390_irgen_STAMY,
-                                                ovl.fmt.RSY.r1, ovl.fmt.RSY.r3,
-                                                ovl.fmt.RSY.b2, ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
+                                                RSY_r1(ovl), RSY_r3(ovl),
+                                                RSY_b2(ovl), RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
    case 0xeb00000000c0ULL: /* TP */ goto unimplemented;
-   case 0xeb00000000dcULL: s390_format_RSY_RRRD(s390_irgen_SRAK, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb00000000ddULL: s390_format_RSY_RRRD(s390_irgen_SLAK, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb00000000deULL: s390_format_RSY_RRRD(s390_irgen_SRLK, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb00000000dfULL: s390_format_RSY_RRRD(s390_irgen_SLLK, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb00000000e0ULL: s390_format_RSY_RDRM(s390_irgen_LOCFH, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2,
+   case 0xeb00000000dcULL: s390_format_RSY_RRRD(s390_irgen_SRAK, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb00000000ddULL: s390_format_RSY_RRRD(s390_irgen_SLAK, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb00000000deULL: s390_format_RSY_RRRD(s390_irgen_SRLK, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb00000000dfULL: s390_format_RSY_RRRD(s390_irgen_SLLK, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb00000000e0ULL: s390_format_RSY_RDRM(s390_irgen_LOCFH, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl),
                                                 S390_XMNM_LOCFH);  goto ok;
-   case 0xeb00000000e1ULL: s390_format_RSY_RDRM(s390_irgen_STOCFH, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2,
+   case 0xeb00000000e1ULL: s390_format_RSY_RDRM(s390_irgen_STOCFH, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl),
                                                 S390_XMNM_STOCFH);  goto ok;
-   case 0xeb00000000e2ULL: s390_format_RSY_RDRM(s390_irgen_LOCG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2,
+   case 0xeb00000000e2ULL: s390_format_RSY_RDRM(s390_irgen_LOCG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl),
                                                 S390_XMNM_LOCG);  goto ok;
    case 0xeb00000000e3ULL: s390_format_RSY_RDRM(s390_irgen_STOCG,
-                                                ovl.fmt.RSY.r1, ovl.fmt.RSY.r3,
-                                                ovl.fmt.RSY.b2, ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2,
+                                                RSY_r1(ovl), RSY_r3(ovl),
+                                                RSY_b2(ovl), RSY_dl2(ovl),
+                                                RSY_dh2(ovl),
                                                 S390_XMNM_STOCG);  goto ok;
-   case 0xeb00000000e4ULL: s390_format_RSY_RRRD(s390_irgen_LANG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb00000000e6ULL: s390_format_RSY_RRRD(s390_irgen_LAOG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb00000000e7ULL: s390_format_RSY_RRRD(s390_irgen_LAXG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb00000000e8ULL: s390_format_RSY_RRRD(s390_irgen_LAAG, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000e4ULL: s390_format_RSY_RRRD(s390_irgen_LANG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb00000000e6ULL: s390_format_RSY_RRRD(s390_irgen_LAOG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb00000000e7ULL: s390_format_RSY_RRRD(s390_irgen_LAXG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb00000000e8ULL: s390_format_RSY_RRRD(s390_irgen_LAAG, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
    case 0xeb00000000eaULL: s390_format_RSY_RRRD(s390_irgen_LAALG,
-                                                ovl.fmt.RSY.r1, ovl.fmt.RSY.r3,
-                                                ovl.fmt.RSY.b2, ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb00000000f2ULL: s390_format_RSY_RDRM(s390_irgen_LOC, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2, S390_XMNM_LOC);
+                                                RSY_r1(ovl), RSY_r3(ovl),
+                                                RSY_b2(ovl), RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb00000000f2ULL: s390_format_RSY_RDRM(s390_irgen_LOC, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl), S390_XMNM_LOC);
                                                 goto ok;
-   case 0xeb00000000f3ULL: s390_format_RSY_RDRM(s390_irgen_STOC, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2,
+   case 0xeb00000000f3ULL: s390_format_RSY_RDRM(s390_irgen_STOC, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl),
                                                 S390_XMNM_STOC);  goto ok;
-   case 0xeb00000000f4ULL: s390_format_RSY_RRRD(s390_irgen_LAN, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb00000000f6ULL: s390_format_RSY_RRRD(s390_irgen_LAO, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb00000000f7ULL: s390_format_RSY_RRRD(s390_irgen_LAX, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb00000000f8ULL: s390_format_RSY_RRRD(s390_irgen_LAA, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
-   case 0xeb00000000faULL: s390_format_RSY_RRRD(s390_irgen_LAAL, ovl.fmt.RSY.r1,
-                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
-                                                ovl.fmt.RSY.dl2,
-                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000f4ULL: s390_format_RSY_RRRD(s390_irgen_LAN, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb00000000f6ULL: s390_format_RSY_RRRD(s390_irgen_LAO, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb00000000f7ULL: s390_format_RSY_RRRD(s390_irgen_LAX, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb00000000f8ULL: s390_format_RSY_RRRD(s390_irgen_LAA, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
+   case 0xeb00000000faULL: s390_format_RSY_RRRD(s390_irgen_LAAL, RSY_r1(ovl),
+                                                RSY_r3(ovl), RSY_b2(ovl),
+                                                RSY_dl2(ovl),
+                                                RSY_dh2(ovl));  goto ok;
    case 0xec0000000042ULL: s390_format_RIE_RUPIX(s390_irgen_LOCHI,
-                                                 ovl.fmt.RIEv3.r1,
-                                                 ovl.fmt.RIEv3.m3,
-                                                 ovl.fmt.RIEv3.i4,
-                                                 ovl.fmt.RIEv3.i2,
+                                                 RIEv3_r1(ovl),
+                                                 RIEv3_m3(ovl),
+                                                 RIEv3_i4(ovl),
+                                                 RIEv3_i2(ovl),
                                                  S390_XMNM_LOCHI);  goto ok;
-   case 0xec0000000044ULL: s390_format_RIE_RRP(s390_irgen_BRXHG, ovl.fmt.RIE.r1,
-                                               ovl.fmt.RIE.r3, ovl.fmt.RIE.i2);
+   case 0xec0000000044ULL: s390_format_RIE_RRP(s390_irgen_BRXHG, RIE_r1(ovl),
+                                               RIE_r3(ovl), RIE_i2(ovl));
                                                goto ok;
-   case 0xec0000000045ULL: s390_format_RIE_RRP(s390_irgen_BRXLG, ovl.fmt.RIE.r1,
-                                               ovl.fmt.RIE.r3, ovl.fmt.RIE.i2);
+   case 0xec0000000045ULL: s390_format_RIE_RRP(s390_irgen_BRXLG, RIE_r1(ovl),
+                                               RIE_r3(ovl), RIE_i2(ovl));
                                                goto ok;
    case 0xec0000000046ULL: s390_format_RIE_RUPIX(s390_irgen_LOCGHI,
-                                                 ovl.fmt.RIEv3.r1,
-                                                 ovl.fmt.RIEv3.m3,
-                                                 ovl.fmt.RIEv3.i4,
-                                                 ovl.fmt.RIEv3.i2,
+                                                 RIEv3_r1(ovl),
+                                                 RIEv3_m3(ovl),
+                                                 RIEv3_i4(ovl),
+                                                 RIEv3_i2(ovl),
                                                  S390_XMNM_LOCGHI);  goto ok;
    case 0xec000000004eULL: s390_format_RIE_RUPIX(s390_irgen_LOCHHI,
-                                                 ovl.fmt.RIEv3.r1,
-                                                 ovl.fmt.RIEv3.m3,
-                                                 ovl.fmt.RIEv3.i4,
-                                                 ovl.fmt.RIEv3.i2,
+                                                 RIEv3_r1(ovl),
+                                                 RIEv3_m3(ovl),
+                                                 RIEv3_i4(ovl),
+                                                 RIEv3_i2(ovl),
                                                  S390_XMNM_LOCHHI);  goto ok;
    case 0xec0000000051ULL: s390_format_RIE_RRUUU(s390_irgen_RISBLG,
-                                                 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);
+                                                 RIE_RRUUU_r1(ovl),
+                                                 RIE_RRUUU_r2(ovl),
+                                                 RIE_RRUUU_i3(ovl),
+                                                 RIE_RRUUU_i4(ovl),
+                                                 RIE_RRUUU_i5(ovl));
                                                  goto ok;
    case 0xec0000000054ULL: s390_format_RIE_RRUUU(s390_irgen_RNSBG,
-                                                 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);
+                                                 RIE_RRUUU_r1(ovl),
+                                                 RIE_RRUUU_r2(ovl),
+                                                 RIE_RRUUU_i3(ovl),
+                                                 RIE_RRUUU_i4(ovl),
+                                                 RIE_RRUUU_i5(ovl));
                                                  goto ok;
    case 0xec0000000055ULL: s390_format_RIE_RRUUU(s390_irgen_RISBG,
-                                                 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);
+                                                 RIE_RRUUU_r1(ovl),
+                                                 RIE_RRUUU_r2(ovl),
+                                                 RIE_RRUUU_i3(ovl),
+                                                 RIE_RRUUU_i4(ovl),
+                                                 RIE_RRUUU_i5(ovl));
                                                  goto ok;
    case 0xec0000000056ULL: s390_format_RIE_RRUUU(s390_irgen_ROSBG,
-                                                 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);
+                                                 RIE_RRUUU_r1(ovl),
+                                                 RIE_RRUUU_r2(ovl),
+                                                 RIE_RRUUU_i3(ovl),
+                                                 RIE_RRUUU_i4(ovl),
+                                                 RIE_RRUUU_i5(ovl));
                                                  goto ok;
    case 0xec0000000057ULL: s390_format_RIE_RRUUU(s390_irgen_RXSBG,
-                                                 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);
+                                                 RIE_RRUUU_r1(ovl),
+                                                 RIE_RRUUU_r2(ovl),
+                                                 RIE_RRUUU_i3(ovl),
+                                                 RIE_RRUUU_i4(ovl),
+                                                 RIE_RRUUU_i5(ovl));
                                                  goto ok;
    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);
+                                                 RIE_RRUUU_r1(ovl),
+                                                 RIE_RRUUU_r2(ovl),
+                                                 RIE_RRUUU_i3(ovl),
+                                                 RIE_RRUUU_i4(ovl),
+                                                 RIE_RRUUU_i5(ovl));
                                                  goto ok;
    case 0xec000000005dULL: s390_format_RIE_RRUUU(s390_irgen_RISBHG,
-                                                 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);
+                                                 RIE_RRUUU_r1(ovl),
+                                                 RIE_RRUUU_r2(ovl),
+                                                 RIE_RRUUU_i3(ovl),
+                                                 RIE_RRUUU_i4(ovl),
+                                                 RIE_RRUUU_i5(ovl));
                                                  goto ok;
    case 0xec0000000064ULL: s390_format_RIE_RRPU(s390_irgen_CGRJ,
-                                                ovl.fmt.RIE_RRPU.r1,
-                                                ovl.fmt.RIE_RRPU.r2,
-                                                ovl.fmt.RIE_RRPU.i4,
-                                                ovl.fmt.RIE_RRPU.m3);  goto ok;
+                                                RIE_RRPU_r1(ovl),
+                                                RIE_RRPU_r2(ovl),
+                                                RIE_RRPU_i4(ovl),
+                                                RIE_RRPU_m3(ovl));  goto ok;
    case 0xec0000000065ULL: s390_format_RIE_RRPU(s390_irgen_CLGRJ,
-                                                ovl.fmt.RIE_RRPU.r1,
-                                                ovl.fmt.RIE_RRPU.r2,
-                                                ovl.fmt.RIE_RRPU.i4,
-                                                ovl.fmt.RIE_RRPU.m3);  goto ok;
+                                                RIE_RRPU_r1(ovl),
+                                                RIE_RRPU_r2(ovl),
+                                                RIE_RRPU_i4(ovl),
+                                                RIE_RRPU_m3(ovl));  goto ok;
    case 0xec0000000070ULL: s390_format_RIEv1(s390_irgen_CGIT,
-                                             ovl.fmt.RIEv1.r1,
-                                             ovl.fmt.RIEv1.i2,
-                                             ovl.fmt.RIEv1.m3); goto ok;
+                                             RIEv1_r1(ovl),
+                                             RIEv1_i2(ovl),
+                                             RIEv1_m3(ovl)); goto ok;
    case 0xec0000000071ULL: s390_format_RIEv1(s390_irgen_CLGIT,
-                                             ovl.fmt.RIEv1.r1,
-                                             ovl.fmt.RIEv1.i2,
-                                             ovl.fmt.RIEv1.m3); goto ok;
+                                             RIEv1_r1(ovl),
+                                             RIEv1_i2(ovl),
+                                             RIEv1_m3(ovl)); goto ok;
    case 0xec0000000072ULL: s390_format_RIEv1(s390_irgen_CIT,
-                                             ovl.fmt.RIEv1.r1,
-                                             ovl.fmt.RIEv1.i2,
-                                             ovl.fmt.RIEv1.m3); goto ok;
+                                             RIEv1_r1(ovl),
+                                             RIEv1_i2(ovl),
+                                             RIEv1_m3(ovl)); goto ok;
    case 0xec0000000073ULL: s390_format_RIEv1(s390_irgen_CLFIT,
-                                             ovl.fmt.RIEv1.r1,
-                                             ovl.fmt.RIEv1.i2,
-                                             ovl.fmt.RIEv1.m3); goto ok;
+                                             RIEv1_r1(ovl),
+                                             RIEv1_i2(ovl),
+                                             RIEv1_m3(ovl)); goto ok;
    case 0xec0000000076ULL: s390_format_RIE_RRPU(s390_irgen_CRJ,
-                                                ovl.fmt.RIE_RRPU.r1,
-                                                ovl.fmt.RIE_RRPU.r2,
-                                                ovl.fmt.RIE_RRPU.i4,
-                                                ovl.fmt.RIE_RRPU.m3);  goto ok;
+                                                RIE_RRPU_r1(ovl),
+                                                RIE_RRPU_r2(ovl),
+                                                RIE_RRPU_i4(ovl),
+                                                RIE_RRPU_m3(ovl));  goto ok;
    case 0xec0000000077ULL: s390_format_RIE_RRPU(s390_irgen_CLRJ,
-                                                ovl.fmt.RIE_RRPU.r1,
-                                                ovl.fmt.RIE_RRPU.r2,
-                                                ovl.fmt.RIE_RRPU.i4,
-                                                ovl.fmt.RIE_RRPU.m3);  goto ok;
+                                                RIE_RRPU_r1(ovl),
+                                                RIE_RRPU_r2(ovl),
+                                                RIE_RRPU_i4(ovl),
+                                                RIE_RRPU_m3(ovl));  goto ok;
    case 0xec000000007cULL: s390_format_RIE_RUPI(s390_irgen_CGIJ,
-                                                ovl.fmt.RIEv3.r1,
-                                                ovl.fmt.RIEv3.m3,
-                                                ovl.fmt.RIEv3.i4,
-                                                ovl.fmt.RIEv3.i2);  goto ok;
+                                                RIEv3_r1(ovl),
+                                                RIEv3_m3(ovl),
+                                                RIEv3_i4(ovl),
+                                                RIEv3_i2(ovl));  goto ok;
    case 0xec000000007dULL: s390_format_RIE_RUPU(s390_irgen_CLGIJ,
-                                                ovl.fmt.RIEv3.r1,
-                                                ovl.fmt.RIEv3.m3,
-                                                ovl.fmt.RIEv3.i4,
-                                                ovl.fmt.RIEv3.i2);  goto ok;
+                                                RIEv3_r1(ovl),
+                                                RIEv3_m3(ovl),
+                                                RIEv3_i4(ovl),
+                                                RIEv3_i2(ovl));  goto ok;
    case 0xec000000007eULL: s390_format_RIE_RUPI(s390_irgen_CIJ,
-                                                ovl.fmt.RIEv3.r1,
-                                                ovl.fmt.RIEv3.m3,
-                                                ovl.fmt.RIEv3.i4,
-                                                ovl.fmt.RIEv3.i2);  goto ok;
+                                                RIEv3_r1(ovl),
+                                                RIEv3_m3(ovl),
+                                                RIEv3_i4(ovl),
+                                                RIEv3_i2(ovl));  goto ok;
    case 0xec000000007fULL: s390_format_RIE_RUPU(s390_irgen_CLIJ,
-                                                ovl.fmt.RIEv3.r1,
-                                                ovl.fmt.RIEv3.m3,
-                                                ovl.fmt.RIEv3.i4,
-                                                ovl.fmt.RIEv3.i2);  goto ok;
-   case 0xec00000000d8ULL: s390_format_RIE_RRI0(s390_irgen_AHIK, ovl.fmt.RIE.r1,
-                                                ovl.fmt.RIE.r3, ovl.fmt.RIE.i2);
+                                                RIEv3_r1(ovl),
+                                                RIEv3_m3(ovl),
+                                                RIEv3_i4(ovl),
+                                                RIEv3_i2(ovl));  goto ok;
+   case 0xec00000000d8ULL: s390_format_RIE_RRI0(s390_irgen_AHIK, RIE_r1(ovl),
+                                                RIE_r3(ovl), RIE_i2(ovl));
                                                 goto ok;
    case 0xec00000000d9ULL: s390_format_RIE_RRI0(s390_irgen_AGHIK,
-                                                ovl.fmt.RIE.r1, ovl.fmt.RIE.r3,
-                                                ovl.fmt.RIE.i2);  goto ok;
+                                                RIE_r1(ovl), RIE_r3(ovl),
+                                                RIE_i2(ovl));  goto ok;
    case 0xec00000000daULL: s390_format_RIE_RRI0(s390_irgen_ALHSIK,
-                                                ovl.fmt.RIE.r1, ovl.fmt.RIE.r3,
-                                                ovl.fmt.RIE.i2);  goto ok;
+                                                RIE_r1(ovl), RIE_r3(ovl),
+                                                RIE_i2(ovl));  goto ok;
    case 0xec00000000dbULL: s390_format_RIE_RRI0(s390_irgen_ALGHSIK,
-                                                ovl.fmt.RIE.r1, ovl.fmt.RIE.r3,
-                                                ovl.fmt.RIE.i2);  goto ok;
-   case 0xec00000000e4ULL: s390_format_RRS(s390_irgen_CGRB, ovl.fmt.RRS.r1,
-                                           ovl.fmt.RRS.r2, ovl.fmt.RRS.b4,
-                                           ovl.fmt.RRS.d4, ovl.fmt.RRS.m3);
+                                                RIE_r1(ovl), RIE_r3(ovl),
+                                                RIE_i2(ovl));  goto ok;
+   case 0xec00000000e4ULL: s390_format_RRS(s390_irgen_CGRB, RRS_r1(ovl),
+                                           RRS_r2(ovl), RRS_b4(ovl),
+                                           RRS_d4(ovl), RRS_m3(ovl));
                                            goto ok;
-   case 0xec00000000e5ULL: s390_format_RRS(s390_irgen_CLGRB, ovl.fmt.RRS.r1,
-                                           ovl.fmt.RRS.r2, ovl.fmt.RRS.b4,
-                                           ovl.fmt.RRS.d4, ovl.fmt.RRS.m3);
+   case 0xec00000000e5ULL: s390_format_RRS(s390_irgen_CLGRB, RRS_r1(ovl),
+                                           RRS_r2(ovl), RRS_b4(ovl),
+                                           RRS_d4(ovl), RRS_m3(ovl));
                                            goto ok;
-   case 0xec00000000f6ULL: s390_format_RRS(s390_irgen_CRB, ovl.fmt.RRS.r1,
-                                           ovl.fmt.RRS.r2, ovl.fmt.RRS.b4,
-                                           ovl.fmt.RRS.d4, ovl.fmt.RRS.m3);
+   case 0xec00000000f6ULL: s390_format_RRS(s390_irgen_CRB, RRS_r1(ovl),
+                                           RRS_r2(ovl), RRS_b4(ovl),
+                                           RRS_d4(ovl), RRS_m3(ovl));
                                            goto ok;
-   case 0xec00000000f7ULL: s390_format_RRS(s390_irgen_CLRB, ovl.fmt.RRS.r1,
-                                           ovl.fmt.RRS.r2, ovl.fmt.RRS.b4,
-                                           ovl.fmt.RRS.d4, ovl.fmt.RRS.m3);
+   case 0xec00000000f7ULL: s390_format_RRS(s390_irgen_CLRB, RRS_r1(ovl),
+                                           RRS_r2(ovl), RRS_b4(ovl),
+                                           RRS_d4(ovl), RRS_m3(ovl));
                                            goto ok;
    case 0xec00000000fcULL: s390_format_RIS_RURDI(s390_irgen_CGIB,
-                                                 ovl.fmt.RIS.r1, ovl.fmt.RIS.m3,
-                                                 ovl.fmt.RIS.b4, ovl.fmt.RIS.d4,
-                                                 ovl.fmt.RIS.i2);  goto ok;
+                                                 RIS_r1(ovl), RIS_m3(ovl),
+                                                 RIS_b4(ovl), RIS_d4(ovl),
+                                                 RIS_i2(ovl));  goto ok;
    case 0xec00000000fdULL: s390_format_RIS_RURDU(s390_irgen_CLGIB,
-                                                 ovl.fmt.RIS.r1, ovl.fmt.RIS.m3,
-                                                 ovl.fmt.RIS.b4, ovl.fmt.RIS.d4,
-                                                 ovl.fmt.RIS.i2);  goto ok;
-   case 0xec00000000feULL: s390_format_RIS_RURDI(s390_irgen_CIB, ovl.fmt.RIS.r1,
-                                                 ovl.fmt.RIS.m3, ovl.fmt.RIS.b4,
-                                                 ovl.fmt.RIS.d4,
-                                                 ovl.fmt.RIS.i2);  goto ok;
+                                                 RIS_r1(ovl), RIS_m3(ovl),
+                                                 RIS_b4(ovl), RIS_d4(ovl),
+                                                 RIS_i2(ovl));  goto ok;
+   case 0xec00000000feULL: s390_format_RIS_RURDI(s390_irgen_CIB, RIS_r1(ovl),
+                                                 RIS_m3(ovl), RIS_b4(ovl),
+                                                 RIS_d4(ovl),
+                                                 RIS_i2(ovl));  goto ok;
    case 0xec00000000ffULL: s390_format_RIS_RURDU(s390_irgen_CLIB,
-                                                 ovl.fmt.RIS.r1, ovl.fmt.RIS.m3,
-                                                 ovl.fmt.RIS.b4, ovl.fmt.RIS.d4,
-                                                 ovl.fmt.RIS.i2);  goto ok;
-   case 0xed0000000004ULL: s390_format_RXE_FRRD(s390_irgen_LDEB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed0000000005ULL: s390_format_RXE_FRRD(s390_irgen_LXDB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed0000000006ULL: s390_format_RXE_FRRD(s390_irgen_LXEB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
+                                                 RIS_r1(ovl), RIS_m3(ovl),
+                                                 RIS_b4(ovl), RIS_d4(ovl),
+                                                 RIS_i2(ovl));  goto ok;
+   case 0xed0000000004ULL: s390_format_RXE_FRRD(s390_irgen_LDEB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed0000000005ULL: s390_format_RXE_FRRD(s390_irgen_LXDB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed0000000006ULL: s390_format_RXE_FRRD(s390_irgen_LXEB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
    case 0xed0000000007ULL: /* MXDB */ goto unimplemented;
    case 0xed0000000008ULL: /* KEB */ goto unimplemented;
-   case 0xed0000000009ULL: s390_format_RXE_FRRD(s390_irgen_CEB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed000000000aULL: s390_format_RXE_FRRD(s390_irgen_AEB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed000000000bULL: s390_format_RXE_FRRD(s390_irgen_SEB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed0000000009ULL: s390_format_RXE_FRRD(s390_irgen_CEB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed000000000aULL: s390_format_RXE_FRRD(s390_irgen_AEB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed000000000bULL: s390_format_RXE_FRRD(s390_irgen_SEB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
    case 0xed000000000cULL: /* MDEB */ goto unimplemented;
-   case 0xed000000000dULL: s390_format_RXE_FRRD(s390_irgen_DEB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed000000000dULL: s390_format_RXE_FRRD(s390_irgen_DEB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
    case 0xed000000000eULL: s390_format_RXF_FRRDF(s390_irgen_MAEB,
-                                                 ovl.fmt.RXF.r3, ovl.fmt.RXF.x2,
-                                                 ovl.fmt.RXF.b2, ovl.fmt.RXF.d2,
-                                                 ovl.fmt.RXF.r1);  goto ok;
+                                                 RXF_r3(ovl), RXF_x2(ovl),
+                                                 RXF_b2(ovl), RXF_d2(ovl),
+                                                 RXF_r1(ovl));  goto ok;
    case 0xed000000000fULL: s390_format_RXF_FRRDF(s390_irgen_MSEB,
-                                                 ovl.fmt.RXF.r3, ovl.fmt.RXF.x2,
-                                                 ovl.fmt.RXF.b2, ovl.fmt.RXF.d2,
-                                                 ovl.fmt.RXF.r1);  goto ok;
-   case 0xed0000000010ULL: s390_format_RXE_FRRD(s390_irgen_TCEB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed0000000011ULL: s390_format_RXE_FRRD(s390_irgen_TCDB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed0000000012ULL: s390_format_RXE_FRRD(s390_irgen_TCXB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed0000000014ULL: s390_format_RXE_FRRD(s390_irgen_SQEB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed0000000015ULL: s390_format_RXE_FRRD(s390_irgen_SQDB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed0000000017ULL: s390_format_RXE_FRRD(s390_irgen_MEEB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
+                                                 RXF_r3(ovl), RXF_x2(ovl),
+                                                 RXF_b2(ovl), RXF_d2(ovl),
+                                                 RXF_r1(ovl));  goto ok;
+   case 0xed0000000010ULL: s390_format_RXE_FRRD(s390_irgen_TCEB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed0000000011ULL: s390_format_RXE_FRRD(s390_irgen_TCDB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed0000000012ULL: s390_format_RXE_FRRD(s390_irgen_TCXB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed0000000014ULL: s390_format_RXE_FRRD(s390_irgen_SQEB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed0000000015ULL: s390_format_RXE_FRRD(s390_irgen_SQDB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed0000000017ULL: s390_format_RXE_FRRD(s390_irgen_MEEB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
    case 0xed0000000018ULL: /* KDB */ goto unimplemented;
-   case 0xed0000000019ULL: s390_format_RXE_FRRD(s390_irgen_CDB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed000000001aULL: s390_format_RXE_FRRD(s390_irgen_ADB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed000000001bULL: s390_format_RXE_FRRD(s390_irgen_SDB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed000000001cULL: s390_format_RXE_FRRD(s390_irgen_MDB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed000000001dULL: s390_format_RXE_FRRD(s390_irgen_DDB, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed0000000019ULL: s390_format_RXE_FRRD(s390_irgen_CDB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed000000001aULL: s390_format_RXE_FRRD(s390_irgen_ADB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed000000001bULL: s390_format_RXE_FRRD(s390_irgen_SDB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed000000001cULL: s390_format_RXE_FRRD(s390_irgen_MDB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed000000001dULL: s390_format_RXE_FRRD(s390_irgen_DDB, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
    case 0xed000000001eULL: s390_format_RXF_FRRDF(s390_irgen_MADB,
-                                                 ovl.fmt.RXF.r3, ovl.fmt.RXF.x2,
-                                                 ovl.fmt.RXF.b2, ovl.fmt.RXF.d2,
-                                                 ovl.fmt.RXF.r1);  goto ok;
+                                                 RXF_r3(ovl), RXF_x2(ovl),
+                                                 RXF_b2(ovl), RXF_d2(ovl),
+                                                 RXF_r1(ovl));  goto ok;
    case 0xed000000001fULL: s390_format_RXF_FRRDF(s390_irgen_MSDB,
-                                                 ovl.fmt.RXF.r3, ovl.fmt.RXF.x2,
-                                                 ovl.fmt.RXF.b2, ovl.fmt.RXF.d2,
-                                                 ovl.fmt.RXF.r1);  goto ok;
+                                                 RXF_r3(ovl), RXF_x2(ovl),
+                                                 RXF_b2(ovl), RXF_d2(ovl),
+                                                 RXF_r1(ovl));  goto ok;
    case 0xed0000000024ULL: s390_format_RXE_FRRD(s390_irgen_LDE,
-                                                ovl.fmt.RXE.r1, ovl.fmt.RXE.x2,
-                                                ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2); goto ok;
+                                                RXE_r1(ovl), RXE_x2(ovl),
+                                                RXE_b2(ovl),
+                                                RXE_d2(ovl)); goto ok;
    case 0xed0000000025ULL: /* LXD */ goto unimplemented;
    case 0xed0000000026ULL: /* LXE */ goto unimplemented;
    case 0xed000000002eULL: /* MAE */ goto unimplemented;
@@ -21572,55 +21313,55 @@ s390_decode_6byte_and_irgen(const UChar *bytes)
    case 0xed000000003eULL: /* MAD */ goto unimplemented;
    case 0xed000000003fULL: /* MSD */ goto unimplemented;
    case 0xed0000000040ULL: s390_format_RXF_FRRDF(s390_irgen_SLDT,
-                                                 ovl.fmt.RXF.r3, ovl.fmt.RXF.x2,
-                                                 ovl.fmt.RXF.b2, ovl.fmt.RXF.d2,
-                                                 ovl.fmt.RXF.r1);  goto ok;
+                                                 RXF_r3(ovl), RXF_x2(ovl),
+                                                 RXF_b2(ovl), RXF_d2(ovl),
+                                                 RXF_r1(ovl));  goto ok;
    case 0xed0000000041ULL: s390_format_RXF_FRRDF(s390_irgen_SRDT,
-                                                 ovl.fmt.RXF.r3, ovl.fmt.RXF.x2,
-                                                 ovl.fmt.RXF.b2, ovl.fmt.RXF.d2,
-                                                 ovl.fmt.RXF.r1);  goto ok;
+                                                 RXF_r3(ovl), RXF_x2(ovl),
+                                                 RXF_b2(ovl), RXF_d2(ovl),
+                                                 RXF_r1(ovl));  goto ok;
    case 0xed0000000048ULL: s390_format_RXF_FRRDF(s390_irgen_SLXT,
-                                                 ovl.fmt.RXF.r3, ovl.fmt.RXF.x2,
-                                                 ovl.fmt.RXF.b2, ovl.fmt.RXF.d2,
-                                                 ovl.fmt.RXF.r1);  goto ok;
+                                                 RXF_r3(ovl), RXF_x2(ovl),
+                                                 RXF_b2(ovl), RXF_d2(ovl),
+                                                 RXF_r1(ovl));  goto ok;
    case 0xed0000000049ULL: s390_format_RXF_FRRDF(s390_irgen_SRXT,
-                                                 ovl.fmt.RXF.r3, ovl.fmt.RXF.x2,
-                                                 ovl.fmt.RXF.b2, ovl.fmt.RXF.d2,
-                                                 ovl.fmt.RXF.r1);  goto ok;
-   case 0xed0000000050ULL: s390_format_RXE_FRRD(s390_irgen_TDCET, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed0000000051ULL: s390_format_RXE_FRRD(s390_irgen_TDGET, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed0000000054ULL: s390_format_RXE_FRRD(s390_irgen_TDCDT, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed0000000055ULL: s390_format_RXE_FRRD(s390_irgen_TDGDT, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed0000000058ULL: s390_format_RXE_FRRD(s390_irgen_TDCXT, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed0000000059ULL: s390_format_RXE_FRRD(s390_irgen_TDGXT, ovl.fmt.RXE.r1,
-                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
-                                                ovl.fmt.RXE.d2);  goto ok;
-   case 0xed0000000064ULL: s390_format_RXY_FRRD(s390_irgen_LEY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xed0000000065ULL: s390_format_RXY_FRRD(s390_irgen_LDY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xed0000000066ULL: s390_format_RXY_FRRD(s390_irgen_STEY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
-   case 0xed0000000067ULL: s390_format_RXY_FRRD(s390_irgen_STDY, ovl.fmt.RXY.r1,
-                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
-                                                ovl.fmt.RXY.dl2,
-                                                ovl.fmt.RXY.dh2);  goto ok;
+                                                 RXF_r3(ovl), RXF_x2(ovl),
+                                                 RXF_b2(ovl), RXF_d2(ovl),
+                                                 RXF_r1(ovl));  goto ok;
+   case 0xed0000000050ULL: s390_format_RXE_FRRD(s390_irgen_TDCET, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed0000000051ULL: s390_format_RXE_FRRD(s390_irgen_TDGET, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed0000000054ULL: s390_format_RXE_FRRD(s390_irgen_TDCDT, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed0000000055ULL: s390_format_RXE_FRRD(s390_irgen_TDGDT, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed0000000058ULL: s390_format_RXE_FRRD(s390_irgen_TDCXT, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed0000000059ULL: s390_format_RXE_FRRD(s390_irgen_TDGXT, RXE_r1(ovl),
+                                                RXE_x2(ovl), RXE_b2(ovl),
+                                                RXE_d2(ovl));  goto ok;
+   case 0xed0000000064ULL: s390_format_RXY_FRRD(s390_irgen_LEY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xed0000000065ULL: s390_format_RXY_FRRD(s390_irgen_LDY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xed0000000066ULL: s390_format_RXY_FRRD(s390_irgen_STEY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
+   case 0xed0000000067ULL: s390_format_RXY_FRRD(s390_irgen_STDY, RXY_r1(ovl),
+                                                RXY_x2(ovl), RXY_b2(ovl),
+                                                RXY_dl2(ovl),
+                                                RXY_dh2(ovl));  goto ok;
    case 0xed00000000a8ULL: /* CZDT */ goto unimplemented;
    case 0xed00000000a9ULL: /* CZXT */ goto unimplemented;
    case 0xed00000000aaULL: /* CDZT */ goto unimplemented;
@@ -21631,164 +21372,164 @@ s390_decode_6byte_and_irgen(const UChar *bytes)
    case 0xed00000000afULL: /* CXPT */ goto unimplemented;
    }
 
-   switch (((ovl.value >> 16) & 0xff0f00000000ULL) >> 32) {
-   case 0xc000ULL: s390_format_RIL_RP(s390_irgen_LARL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc001ULL: s390_format_RIL_RI(s390_irgen_LGFI, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc004ULL: s390_format_RIL(s390_irgen_BRCL, ovl.fmt.RIL.r1,
-                                   ovl.fmt.RIL.i2);  goto ok;
-   case 0xc005ULL: s390_format_RIL_RP(s390_irgen_BRASL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc006ULL: s390_format_RIL_RU(s390_irgen_XIHF, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc007ULL: s390_format_RIL_RU(s390_irgen_XILF, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc008ULL: s390_format_RIL_RU(s390_irgen_IIHF, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc009ULL: s390_format_RIL_RU(s390_irgen_IILF, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc00aULL: s390_format_RIL_RU(s390_irgen_NIHF, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc00bULL: s390_format_RIL_RU(s390_irgen_NILF, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc00cULL: s390_format_RIL_RU(s390_irgen_OIHF, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc00dULL: s390_format_RIL_RU(s390_irgen_OILF, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc00eULL: s390_format_RIL_RU(s390_irgen_LLIHF, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc00fULL: s390_format_RIL_RU(s390_irgen_LLILF, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc200ULL: s390_format_RIL_RI(s390_irgen_MSGFI, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc201ULL: s390_format_RIL_RI(s390_irgen_MSFI, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc204ULL: s390_format_RIL_RU(s390_irgen_SLGFI, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc205ULL: s390_format_RIL_RU(s390_irgen_SLFI, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc208ULL: s390_format_RIL_RI(s390_irgen_AGFI, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc209ULL: s390_format_RIL_RI(s390_irgen_AFI, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc20aULL: s390_format_RIL_RU(s390_irgen_ALGFI, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc20bULL: s390_format_RIL_RU(s390_irgen_ALFI, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc20cULL: s390_format_RIL_RI(s390_irgen_CGFI, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc20dULL: s390_format_RIL_RI(s390_irgen_CFI, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc20eULL: s390_format_RIL_RU(s390_irgen_CLGFI, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc20fULL: s390_format_RIL_RU(s390_irgen_CLFI, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc402ULL: s390_format_RIL_RP(s390_irgen_LLHRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc404ULL: s390_format_RIL_RP(s390_irgen_LGHRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc405ULL: s390_format_RIL_RP(s390_irgen_LHRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc406ULL: s390_format_RIL_RP(s390_irgen_LLGHRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc407ULL: s390_format_RIL_RP(s390_irgen_STHRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc408ULL: s390_format_RIL_RP(s390_irgen_LGRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc40bULL: s390_format_RIL_RP(s390_irgen_STGRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc40cULL: s390_format_RIL_RP(s390_irgen_LGFRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc40dULL: s390_format_RIL_RP(s390_irgen_LRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc40eULL: s390_format_RIL_RP(s390_irgen_LLGFRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc40fULL: s390_format_RIL_RP(s390_irgen_STRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc600ULL: s390_format_RIL_RP(s390_irgen_EXRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc602ULL: s390_format_RIL_UP(s390_irgen_PFDRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc604ULL: s390_format_RIL_RP(s390_irgen_CGHRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc605ULL: s390_format_RIL_RP(s390_irgen_CHRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc606ULL: s390_format_RIL_RP(s390_irgen_CLGHRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc607ULL: s390_format_RIL_RP(s390_irgen_CLHRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc608ULL: s390_format_RIL_RP(s390_irgen_CGRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc60aULL: s390_format_RIL_RP(s390_irgen_CLGRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc60cULL: s390_format_RIL_RP(s390_irgen_CGFRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc60dULL: s390_format_RIL_RP(s390_irgen_CRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc60eULL: s390_format_RIL_RP(s390_irgen_CLGFRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xc60fULL: s390_format_RIL_RP(s390_irgen_CLRL, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
+   switch (((ovl >> 16) & 0xff0f00000000ULL) >> 32) {
+   case 0xc000ULL: s390_format_RIL_RP(s390_irgen_LARL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc001ULL: s390_format_RIL_RI(s390_irgen_LGFI, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc004ULL: s390_format_RIL(s390_irgen_BRCL, RIL_r1(ovl),
+                                   RIL_i2(ovl));  goto ok;
+   case 0xc005ULL: s390_format_RIL_RP(s390_irgen_BRASL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc006ULL: s390_format_RIL_RU(s390_irgen_XIHF, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc007ULL: s390_format_RIL_RU(s390_irgen_XILF, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc008ULL: s390_format_RIL_RU(s390_irgen_IIHF, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc009ULL: s390_format_RIL_RU(s390_irgen_IILF, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc00aULL: s390_format_RIL_RU(s390_irgen_NIHF, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc00bULL: s390_format_RIL_RU(s390_irgen_NILF, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc00cULL: s390_format_RIL_RU(s390_irgen_OIHF, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc00dULL: s390_format_RIL_RU(s390_irgen_OILF, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc00eULL: s390_format_RIL_RU(s390_irgen_LLIHF, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc00fULL: s390_format_RIL_RU(s390_irgen_LLILF, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc200ULL: s390_format_RIL_RI(s390_irgen_MSGFI, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc201ULL: s390_format_RIL_RI(s390_irgen_MSFI, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc204ULL: s390_format_RIL_RU(s390_irgen_SLGFI, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc205ULL: s390_format_RIL_RU(s390_irgen_SLFI, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc208ULL: s390_format_RIL_RI(s390_irgen_AGFI, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc209ULL: s390_format_RIL_RI(s390_irgen_AFI, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc20aULL: s390_format_RIL_RU(s390_irgen_ALGFI, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc20bULL: s390_format_RIL_RU(s390_irgen_ALFI, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc20cULL: s390_format_RIL_RI(s390_irgen_CGFI, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc20dULL: s390_format_RIL_RI(s390_irgen_CFI, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc20eULL: s390_format_RIL_RU(s390_irgen_CLGFI, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc20fULL: s390_format_RIL_RU(s390_irgen_CLFI, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc402ULL: s390_format_RIL_RP(s390_irgen_LLHRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc404ULL: s390_format_RIL_RP(s390_irgen_LGHRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc405ULL: s390_format_RIL_RP(s390_irgen_LHRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc406ULL: s390_format_RIL_RP(s390_irgen_LLGHRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc407ULL: s390_format_RIL_RP(s390_irgen_STHRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc408ULL: s390_format_RIL_RP(s390_irgen_LGRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc40bULL: s390_format_RIL_RP(s390_irgen_STGRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc40cULL: s390_format_RIL_RP(s390_irgen_LGFRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc40dULL: s390_format_RIL_RP(s390_irgen_LRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc40eULL: s390_format_RIL_RP(s390_irgen_LLGFRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc40fULL: s390_format_RIL_RP(s390_irgen_STRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc600ULL: s390_format_RIL_RP(s390_irgen_EXRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc602ULL: s390_format_RIL_UP(s390_irgen_PFDRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc604ULL: s390_format_RIL_RP(s390_irgen_CGHRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc605ULL: s390_format_RIL_RP(s390_irgen_CHRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc606ULL: s390_format_RIL_RP(s390_irgen_CLGHRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc607ULL: s390_format_RIL_RP(s390_irgen_CLHRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc608ULL: s390_format_RIL_RP(s390_irgen_CGRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc60aULL: s390_format_RIL_RP(s390_irgen_CLGRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc60cULL: s390_format_RIL_RP(s390_irgen_CGFRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc60dULL: s390_format_RIL_RP(s390_irgen_CRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc60eULL: s390_format_RIL_RP(s390_irgen_CLGFRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xc60fULL: s390_format_RIL_RP(s390_irgen_CLRL, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
    case 0xc800ULL: /* MVCOS */ goto unimplemented;
    case 0xc801ULL: /* ECTG */ goto unimplemented;
    case 0xc802ULL: /* CSST */ goto unimplemented;
    case 0xc804ULL: /* LPD */ goto unimplemented;
    case 0xc805ULL: /* LPDG */ goto unimplemented;
-   case 0xcc06ULL:  s390_format_RIL_RP(s390_irgen_BRCTH, ovl.fmt.RIL.r1,
-                                       ovl.fmt.RIL.i2);  goto ok;
-   case 0xcc08ULL: s390_format_RIL_RI(s390_irgen_AIH, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xcc0aULL: s390_format_RIL_RI(s390_irgen_ALSIH, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xcc0bULL: s390_format_RIL_RI(s390_irgen_ALSIHN, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xcc0dULL: s390_format_RIL_RI(s390_irgen_CIH, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   case 0xcc0fULL: s390_format_RIL_RU(s390_irgen_CLIH, ovl.fmt.RIL.r1,
-                                      ovl.fmt.RIL.i2);  goto ok;
-   }
-
-   switch (((ovl.value >> 16) & 0xff0000000000ULL) >> 40) {
+   case 0xcc06ULL:  s390_format_RIL_RP(s390_irgen_BRCTH, RIL_r1(ovl),
+                                       RIL_i2(ovl));  goto ok;
+   case 0xcc08ULL: s390_format_RIL_RI(s390_irgen_AIH, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xcc0aULL: s390_format_RIL_RI(s390_irgen_ALSIH, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xcc0bULL: s390_format_RIL_RI(s390_irgen_ALSIHN, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xcc0dULL: s390_format_RIL_RI(s390_irgen_CIH, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   case 0xcc0fULL: s390_format_RIL_RU(s390_irgen_CLIH, RIL_r1(ovl),
+                                      RIL_i2(ovl));  goto ok;
+   }
+
+   switch (((ovl >> 16) & 0xff0000000000ULL) >> 40) {
    case 0xc5ULL: /* BPRP */ goto unimplemented;
    case 0xc7ULL: /* BPP */ goto unimplemented;
    case 0xd0ULL: /* TRTR */ goto unimplemented;
    case 0xd1ULL: /* MVN */ goto unimplemented;
-   case 0xd2ULL: s390_format_SS_L0RDRD(s390_irgen_MVC, ovl.fmt.SS.l,
-                                       ovl.fmt.SS.b1, ovl.fmt.SS.d1,
-                                       ovl.fmt.SS.b2, ovl.fmt.SS.d2);  goto ok;
+   case 0xd2ULL: s390_format_SS_L0RDRD(s390_irgen_MVC, SS_l(ovl),
+                                       SS_b1(ovl), SS_d1(ovl),
+                                       SS_b2(ovl), SS_d2(ovl));  goto ok;
    case 0xd3ULL: /* MVZ */ goto unimplemented;
-   case 0xd4ULL: s390_format_SS_L0RDRD(s390_irgen_NC, ovl.fmt.SS.l,
-                                       ovl.fmt.SS.b1, ovl.fmt.SS.d1,
-                                       ovl.fmt.SS.b2, ovl.fmt.SS.d2);  goto ok;
-   case 0xd5ULL: s390_format_SS_L0RDRD(s390_irgen_CLC, ovl.fmt.SS.l,
-                                       ovl.fmt.SS.b1, ovl.fmt.SS.d1,
-                                       ovl.fmt.SS.b2, ovl.fmt.SS.d2);  goto ok;
-   case 0xd6ULL: s390_format_SS_L0RDRD(s390_irgen_OC, ovl.fmt.SS.l,
-                                       ovl.fmt.SS.b1, ovl.fmt.SS.d1,
-                                       ovl.fmt.SS.b2, ovl.fmt.SS.d2);  goto ok;
+   case 0xd4ULL: s390_format_SS_L0RDRD(s390_irgen_NC, SS_l(ovl),
+                                       SS_b1(ovl), SS_d1(ovl),
+                                       SS_b2(ovl), SS_d2(ovl));  goto ok;
+   case 0xd5ULL: s390_format_SS_L0RDRD(s390_irgen_CLC, SS_l(ovl),
+                                       SS_b1(ovl), SS_d1(ovl),
+                                       SS_b2(ovl), SS_d2(ovl));  goto ok;
+   case 0xd6ULL: s390_format_SS_L0RDRD(s390_irgen_OC, SS_l(ovl),
+                                       SS_b1(ovl), SS_d1(ovl),
+                                       SS_b2(ovl), SS_d2(ovl));  goto ok;
    case 0xd7ULL:
-      if (ovl.fmt.SS.b1 == ovl.fmt.SS.b2 && ovl.fmt.SS.d1 == ovl.fmt.SS.d2)
-         s390_irgen_XC_sameloc(ovl.fmt.SS.l, ovl.fmt.SS.b1, ovl.fmt.SS.d1);
+      if (SS_b1(ovl) == SS_b2(ovl) && SS_d1(ovl) == SS_d2(ovl))
+         s390_irgen_XC_sameloc(SS_l(ovl), SS_b1(ovl), SS_d1(ovl));
       else
-        s390_format_SS_L0RDRD(s390_irgen_XC, ovl.fmt.SS.l,
-                              ovl.fmt.SS.b1, ovl.fmt.SS.d1,
-                              ovl.fmt.SS.b2, ovl.fmt.SS.d2);
+        s390_format_SS_L0RDRD(s390_irgen_XC, SS_l(ovl),
+                              SS_b1(ovl), SS_d1(ovl),
+                              SS_b2(ovl), SS_d2(ovl));
       goto ok;
    case 0xd9ULL: /* MVCK */ goto unimplemented;
    case 0xdaULL: /* MVCP */ goto unimplemented;
    case 0xdbULL: /* MVCS */ goto unimplemented;
-   case 0xdcULL: s390_format_SS_L0RDRD(s390_irgen_TR, ovl.fmt.SS.l,
-                                       ovl.fmt.SS.b1, ovl.fmt.SS.d1,
-                                       ovl.fmt.SS.b2, ovl.fmt.SS.d2);  goto ok;
+   case 0xdcULL: s390_format_SS_L0RDRD(s390_irgen_TR, SS_l(ovl),
+                                       SS_b1(ovl), SS_d1(ovl),
+                                       SS_b2(ovl), SS_d2(ovl));  goto ok;
    case 0xddULL: /* TRT */ goto unimplemented;
    case 0xdeULL: /* ED */ goto unimplemented;
    case 0xdfULL: /* EDMK */ goto unimplemented;
    case 0xe1ULL: /* PKU */ goto unimplemented;
    case 0xe2ULL: /* UNPKU */ goto unimplemented;
-   case 0xe8ULL: s390_format_SS_L0RDRD(s390_irgen_MVCIN, ovl.fmt.SS.l,
-                                       ovl.fmt.SS.b1, ovl.fmt.SS.d1,
-                                       ovl.fmt.SS.b2, ovl.fmt.SS.d2);  goto ok;
+   case 0xe8ULL: s390_format_SS_L0RDRD(s390_irgen_MVCIN, SS_l(ovl),
+                                       SS_b1(ovl), SS_d1(ovl),
+                                       SS_b2(ovl), SS_d2(ovl));  goto ok;
    case 0xe9ULL: /* PKA */ goto unimplemented;
    case 0xeaULL: /* UNPKA */ goto unimplemented;
    case 0xeeULL: /* PLO */ goto unimplemented;
@@ -21805,38 +21546,38 @@ s390_decode_6byte_and_irgen(const UChar *bytes)
    case 0xfdULL: /* DP */ goto unimplemented;
    }
 
-   switch (((ovl.value >> 16) & 0xffff00000000ULL) >> 32) {
+   switch (((ovl >> 16) & 0xffff00000000ULL) >> 32) {
    case 0xe500ULL: /* LASP */ goto unimplemented;
    case 0xe501ULL: /* TPROT */ goto unimplemented;
    case 0xe502ULL: /* STRAG */ goto unimplemented;
    case 0xe50eULL: /* MVCSK */ goto unimplemented;
    case 0xe50fULL: /* MVCDK */ goto unimplemented;
-   case 0xe544ULL: s390_format_SIL_RDI(s390_irgen_MVHHI, ovl.fmt.SIL.b1,
-                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+   case 0xe544ULL: s390_format_SIL_RDI(s390_irgen_MVHHI, SIL_b1(ovl),
+                                       SIL_d1(ovl), SIL_i2(ovl));
                                        goto ok;
-   case 0xe548ULL: s390_format_SIL_RDI(s390_irgen_MVGHI, ovl.fmt.SIL.b1,
-                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+   case 0xe548ULL: s390_format_SIL_RDI(s390_irgen_MVGHI, SIL_b1(ovl),
+                                       SIL_d1(ovl), SIL_i2(ovl));
                                        goto ok;
-   case 0xe54cULL: s390_format_SIL_RDI(s390_irgen_MVHI, ovl.fmt.SIL.b1,
-                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+   case 0xe54cULL: s390_format_SIL_RDI(s390_irgen_MVHI, SIL_b1(ovl),
+                                       SIL_d1(ovl), SIL_i2(ovl));
                                        goto ok;
-   case 0xe554ULL: s390_format_SIL_RDI(s390_irgen_CHHSI, ovl.fmt.SIL.b1,
-                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+   case 0xe554ULL: s390_format_SIL_RDI(s390_irgen_CHHSI, SIL_b1(ovl),
+                                       SIL_d1(ovl), SIL_i2(ovl));
                                        goto ok;
-   case 0xe555ULL: s390_format_SIL_RDU(s390_irgen_CLHHSI, ovl.fmt.SIL.b1,
-                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+   case 0xe555ULL: s390_format_SIL_RDU(s390_irgen_CLHHSI, SIL_b1(ovl),
+                                       SIL_d1(ovl), SIL_i2(ovl));
                                        goto ok;
-   case 0xe558ULL: s390_format_SIL_RDI(s390_irgen_CGHSI, ovl.fmt.SIL.b1,
-                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+   case 0xe558ULL: s390_format_SIL_RDI(s390_irgen_CGHSI, SIL_b1(ovl),
+                                       SIL_d1(ovl), SIL_i2(ovl));
                                        goto ok;
-   case 0xe559ULL: s390_format_SIL_RDU(s390_irgen_CLGHSI, ovl.fmt.SIL.b1,
-                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+   case 0xe559ULL: s390_format_SIL_RDU(s390_irgen_CLGHSI, SIL_b1(ovl),
+                                       SIL_d1(ovl), SIL_i2(ovl));
                                        goto ok;
-   case 0xe55cULL: s390_format_SIL_RDI(s390_irgen_CHSI, ovl.fmt.SIL.b1,
-                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+   case 0xe55cULL: s390_format_SIL_RDI(s390_irgen_CHSI, SIL_b1(ovl),
+                                       SIL_d1(ovl), SIL_i2(ovl));
                                        goto ok;
-   case 0xe55dULL: s390_format_SIL_RDU(s390_irgen_CLFHSI, ovl.fmt.SIL.b1,
-                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+   case 0xe55dULL: s390_format_SIL_RDU(s390_irgen_CLFHSI, SIL_b1(ovl),
+                                       SIL_d1(ovl), SIL_i2(ovl));
                                        goto ok;
    case 0xe560ULL: /* TBEGIN */ goto unimplemented;
    case 0xe561ULL: /* TBEGINC */ goto unimplemented;
@@ -22091,9 +21832,6 @@ disInstr_S390(IRSB        *irsb_IN,
 {
    vassert(guest_arch == VexArchS390X);
 
-   /* The instruction decoder requires a big-endian machine. */
-   vassert(host_endness == VexEndnessBE);
-
    /* Set globals (see top of this file) */
    guest_IA_curr_instr = guest_IP;
    irsb = irsb_IN;