mirror of https://gitee.com/openkylin/qemu.git
target/arm: Move general-use constant expanders up in translate.c
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
This commit is contained in:
parent
32a290b8c3
commit
f7ed0c9433
|
@ -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.
|
||||
*/
|
||||
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue