Skip to content

Commit

Permalink
target/arm: Move general-use constant expanders up in translate.c
Browse files Browse the repository at this point in the history
The constant-expander functions like negate, plus_2, etc, are
generally useful; move them up in translate.c so we can use them in
the VFP/Neon decoders as well as in the A32/T32/T16 decoders.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20201119215617.29887-9-peter.maydell@linaro.org
  • Loading branch information
pm215 committed Dec 10, 2020
1 parent 32a290b commit f7ed0c9
Showing 1 changed file with 25 additions and 21 deletions.
46 changes: 25 additions & 21 deletions target/arm/translate.c
Expand Up @@ -109,6 +109,30 @@ static void arm_gen_condlabel(DisasContext *s)
}
}

/*
* Constant expanders for the decoders.
*/

static int negate(DisasContext *s, int x)
{
return -x;
}

static int plus_2(DisasContext *s, int x)
{
return x + 2;
}

static int times_2(DisasContext *s, int x)
{
return x * 2;
}

static int times_4(DisasContext *s, int x)
{
return x * 4;
}

/* Flags for the disas_set_da_iss info argument:
* lower bits hold the Rt register number, higher bits are flags.
*/
Expand Down Expand Up @@ -5177,29 +5201,9 @@ static void arm_skip_unless(DisasContext *s, uint32_t cond)


/*
* Constant expanders for the decoders.
* Constant expanders used by T16/T32 decode
*/

static int negate(DisasContext *s, int x)
{
return -x;
}

static int plus_2(DisasContext *s, int x)
{
return x + 2;
}

static int times_2(DisasContext *s, int x)
{
return x * 2;
}

static int times_4(DisasContext *s, int x)
{
return x * 4;
}

/* Return only the rotation part of T32ExpandImm. */
static int t32_expandimm_rot(DisasContext *s, int x)
{
Expand Down

0 comments on commit f7ed0c9

Please sign in to comment.