From: David Hildenbrand <da...@redhat.com> We can fit this nicely into less LOC, without harming readability.
Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Reviewed-by: Thomas Huth <th...@redhat.com> Signed-off-by: David Hildenbrand <da...@redhat.com> Message-Id: <20180927130303.12236-10-da...@redhat.com> Signed-off-by: Cornelia Huck <coh...@redhat.com> --- target/s390x/translate.c | 34 ++++++---------------------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/target/s390x/translate.c b/target/s390x/translate.c index f6813d0674..18861cd186 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -6092,34 +6092,12 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s) /* Check for insn specification exceptions. */ if (insn->spec) { - int spec = insn->spec, excp = 0, r; - - if (spec & SPEC_r1_even) { - r = get_field(&f, r1); - if (r & 1) { - excp = PGM_SPECIFICATION; - } - } - if (spec & SPEC_r2_even) { - r = get_field(&f, r2); - if (r & 1) { - excp = PGM_SPECIFICATION; - } - } - if (spec & SPEC_r3_even) { - r = get_field(&f, r3); - if (r & 1) { - excp = PGM_SPECIFICATION; - } - } - if (spec & SPEC_r1_f128 && !is_fp_pair(get_field(&f, r1))) { - excp = PGM_SPECIFICATION; - } - if (spec & SPEC_r2_f128 && !is_fp_pair(get_field(&f, r2))) { - excp = PGM_SPECIFICATION; - } - if (excp) { - gen_program_exception(s, excp); + if ((insn->spec & SPEC_r1_even && get_field(&f, r1) & 1) || + (insn->spec & SPEC_r2_even && get_field(&f, r2) & 1) || + (insn->spec & SPEC_r3_even && get_field(&f, r3) & 1) || + (insn->spec & SPEC_r1_f128 && !is_fp_pair(get_field(&f, r1))) || + (insn->spec & SPEC_r2_f128 && !is_fp_pair(get_field(&f, r2)))) { + gen_program_exception(s, PGM_SPECIFICATION); return DISAS_NORETURN; } } -- 2.14.4