From fa21e88ac38994435ad592fec5595db36cba2356 Mon Sep 17 00:00:00 2001 From: Florian Krohm Date: Thu, 15 Jan 2026 09:19:10 +0000 Subject: [PATCH] s390: Remove s390_format_RR and friends. This patch removes the functions: s390_format_RR, s390_format_RR_RR and s390_format_RR_FF. First, because of the disassembly changes in 370531396ad there is no longer a need to specialise s390_format_RR because the register class of its operands is now irrelevant. Hence s390_format_RR_RR and s390_format_RR_FF can go. Secondly, s390_irgen_RR only calls the function pointer being passed in. So we can call that function directly and s390_irgen_RR can go as well. The same reasoning also applies to other opcode formats. Patches will follow soon. Having several installments gives a chance to actually proofread them. --- VEX/priv/guest_s390_toIR.c | 113 +++++++++++++++---------------------- 1 file changed, 46 insertions(+), 67 deletions(-) diff --git a/VEX/priv/guest_s390_toIR.c b/VEX/priv/guest_s390_toIR.c index 11c50dc00..e9a4ea713 100644 --- a/VEX/priv/guest_s390_toIR.c +++ b/VEX/priv/guest_s390_toIR.c @@ -2885,27 +2885,6 @@ s390_format_RIS_RURDU(void (*irgen)(UChar r1, UChar m3, UChar i2, irgen(r1, m3, i2, op4addr); } -static void -s390_format_RR(void (*irgen)(UChar r1, UChar r2), - UChar r1, UChar r2) -{ - irgen(r1, r2); -} - -static void -s390_format_RR_RR(void (*irgen)(UChar r1, UChar r2), - UChar r1, UChar r2) -{ - irgen(r1, r2); -} - -static void -s390_format_RR_FF(void (*irgen)(UChar r1, UChar r2), - UChar r1, UChar r2) -{ - irgen(r1, r2); -} - static void s390_format_RRE(void (*irgen)(UChar r1, UChar r2), UChar r1, UChar r2) @@ -18216,51 +18195,51 @@ s390_decode_2byte_and_irgen(const UChar *bytes) switch ((ovl & 0xff00) >> 8) { case 0x04: /* SPM */ goto unimplemented; case 0x05: /* BALR */ goto unimplemented; - 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, RR_r1(ovl), RR_r2(ovl)); - goto ok; + case 0x06: s390_irgen_BCTR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x07: s390_irgen_BCR(RR_r1(ovl), RR_r2(ovl)); + 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, RR_r1(ovl), RR_r2(ovl)); - goto ok; - case 0x0e: s390_format_RR_RR(s390_irgen_MVCL, RR_r1(ovl), RR_r2(ovl)); - goto ok; - case 0x0f: s390_format_RR_RR(s390_irgen_CLCL, RR_r1(ovl), RR_r2(ovl)); - goto ok; - 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, RR_r1(ovl), RR_r2(ovl)); - goto ok; - 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, RR_r1(ovl), RR_r2(ovl)); - goto ok; - 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, RR_r1(ovl), RR_r2(ovl)); - goto ok; - 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, RR_r1(ovl), RR_r2(ovl)); - goto ok; - 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, RR_r1(ovl), RR_r2(ovl)); - goto ok; - 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, RR_r1(ovl), RR_r2(ovl)); - goto ok; - 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, RR_r1(ovl), RR_r2(ovl)); - goto ok; - 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, RR_r1(ovl), RR_r2(ovl)); - goto ok; + case 0x0d: s390_irgen_BASR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x0e: s390_irgen_MVCL(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x0f: s390_irgen_CLCL(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x10: s390_irgen_LPR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x11: s390_irgen_LNR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x12: s390_irgen_LTR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x13: s390_irgen_LCR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x14: s390_irgen_NR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x15: s390_irgen_CLR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x16: s390_irgen_OR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x17: s390_irgen_XR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x18: s390_irgen_LR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x19: s390_irgen_CR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x1a: s390_irgen_AR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x1b: s390_irgen_SR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x1c: s390_irgen_MR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x1d: s390_irgen_DR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x1e: s390_irgen_ALR(RR_r1(ovl), RR_r2(ovl)); + goto ok; + case 0x1f: s390_irgen_SLR(RR_r1(ovl), RR_r2(ovl)); + goto ok; case 0x20: /* LPDR */ goto unimplemented; case 0x21: /* LNDR */ goto unimplemented; case 0x22: /* LTDR */ goto unimplemented; @@ -18269,8 +18248,8 @@ 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, RR_r1(ovl), RR_r2(ovl)); - goto ok; + case 0x28: s390_irgen_LDR(RR_r1(ovl), RR_r2(ovl)); + goto ok; case 0x29: /* CDR */ goto unimplemented; case 0x2a: /* ADR */ goto unimplemented; case 0x2b: /* SDR */ goto unimplemented; @@ -18286,8 +18265,8 @@ 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, RR_r1(ovl), RR_r2(ovl)); - goto ok; + case 0x38: s390_irgen_LER(RR_r1(ovl), RR_r2(ovl)); + goto ok; case 0x39: /* CER */ goto unimplemented; case 0x3a: /* AER */ goto unimplemented; case 0x3b: /* SER */ goto unimplemented; -- 2.47.3