Skip to content

Commit

Permalink
target/arm: Expand frint_fns for MO_8
Browse files Browse the repository at this point in the history
Simplify indexing of this array.  This will allow folding
of the illegal esz == 0 into the normal fn == NULL check.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220527181907.189259-93-richard.henderson@linaro.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
  • Loading branch information
rth7680 authored and pm215 committed May 30, 2022
1 parent de58c6b commit ed6bb6b
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions target/arm/translate-sve.c
Expand Up @@ -4167,7 +4167,8 @@ static bool trans_FCVTZU_dd(DisasContext *s, arg_rpr_esz *a)
return do_zpz_ptr(s, a->rd, a->rn, a->pg, false, gen_helper_sve_fcvtzu_dd);
}

static gen_helper_gvec_3_ptr * const frint_fns[3] = {
static gen_helper_gvec_3_ptr * const frint_fns[] = {
NULL,
gen_helper_sve_frint_h,
gen_helper_sve_frint_s,
gen_helper_sve_frint_d
Expand All @@ -4179,7 +4180,7 @@ static bool trans_FRINTI(DisasContext *s, arg_rpr_esz *a)
return false;
}
return do_zpz_ptr(s, a->rd, a->rn, a->pg, a->esz == MO_16,
frint_fns[a->esz - 1]);
frint_fns[a->esz]);
}

static bool trans_FRINTX(DisasContext *s, arg_rpr_esz *a)
Expand Down Expand Up @@ -4222,39 +4223,39 @@ static bool trans_FRINTN(DisasContext *s, arg_rpr_esz *a)
if (a->esz == 0) {
return false;
}
return do_frint_mode(s, a, float_round_nearest_even, frint_fns[a->esz - 1]);
return do_frint_mode(s, a, float_round_nearest_even, frint_fns[a->esz]);
}

static bool trans_FRINTP(DisasContext *s, arg_rpr_esz *a)
{
if (a->esz == 0) {
return false;
}
return do_frint_mode(s, a, float_round_up, frint_fns[a->esz - 1]);
return do_frint_mode(s, a, float_round_up, frint_fns[a->esz]);
}

static bool trans_FRINTM(DisasContext *s, arg_rpr_esz *a)
{
if (a->esz == 0) {
return false;
}
return do_frint_mode(s, a, float_round_down, frint_fns[a->esz - 1]);
return do_frint_mode(s, a, float_round_down, frint_fns[a->esz]);
}

static bool trans_FRINTZ(DisasContext *s, arg_rpr_esz *a)
{
if (a->esz == 0) {
return false;
}
return do_frint_mode(s, a, float_round_to_zero, frint_fns[a->esz - 1]);
return do_frint_mode(s, a, float_round_to_zero, frint_fns[a->esz]);
}

static bool trans_FRINTA(DisasContext *s, arg_rpr_esz *a)
{
if (a->esz == 0) {
return false;
}
return do_frint_mode(s, a, float_round_ties_away, frint_fns[a->esz - 1]);
return do_frint_mode(s, a, float_round_ties_away, frint_fns[a->esz]);
}

static bool trans_FRECPX(DisasContext *s, arg_rpr_esz *a)
Expand Down

0 comments on commit ed6bb6b

Please sign in to comment.