|
From: Andreas A. <ar...@so...> - 2019-03-15 14:53:16
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=7e9113cb7a249e0fae2a365462c6b0164de11566 commit 7e9113cb7a249e0fae2a365462c6b0164de11566 Author: Ilya Leoshkevich <ii...@li...> Date: Tue Mar 12 19:23:55 2019 +0100 Bug 405403 - s390x: Allow using disInstr_S390 on little-endian hosts 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 <ii...@li...> Diff: --- NEWS | 1 + VEX/priv/guest_s390_toIR.c | 5072 +++++++++++++++++++++----------------------- 2 files changed, 2406 insertions(+), 2667 deletions(-) diff --git a/NEWS b/NEWS index 981f69c..5bc357e 100644 --- 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 diff --git a/VEX/priv/guest_s390_toIR.c b/VEX/priv/guest_s390_toIR.c index d657238..b4b8e3d 100644 --- a/VEX/priv/guest_s390_toIR.c +++ b/VEX/priv/guest_s390_toIR.c @@ -92,6 +92,171 @@ typedef enum { /*------------------------------------------------------------*/ +/*--- 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... [truncated message content] |