mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 10:13:56 -06:00
target/arm: Implement MVE VSHLL
Implement the MVE VHLL (vector shift left long) insn. This has two encodings: the T1 encoding is the usual shift-by-immediate format, and the T2 encoding is a special case where the shift count is always equal to the element size. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20210628135835.6690-10-peter.maydell@linaro.org
This commit is contained in:
parent
3394116f47
commit
c226270703
4 changed files with 105 additions and 4 deletions
|
@ -893,3 +893,18 @@ DO_2SHIFT(VSHRI_S, vshli_s, true)
|
|||
DO_2SHIFT(VSHRI_U, vshli_u, true)
|
||||
DO_2SHIFT(VRSHRI_S, vrshli_s, true)
|
||||
DO_2SHIFT(VRSHRI_U, vrshli_u, true)
|
||||
|
||||
#define DO_VSHLL(INSN, FN) \
|
||||
static bool trans_##INSN(DisasContext *s, arg_2shift *a) \
|
||||
{ \
|
||||
static MVEGenTwoOpShiftFn * const fns[] = { \
|
||||
gen_helper_mve_##FN##b, \
|
||||
gen_helper_mve_##FN##h, \
|
||||
}; \
|
||||
return do_2shift(s, a, fns[a->size], false); \
|
||||
}
|
||||
|
||||
DO_VSHLL(VSHLL_BS, vshllbs)
|
||||
DO_VSHLL(VSHLL_BU, vshllbu)
|
||||
DO_VSHLL(VSHLL_TS, vshllts)
|
||||
DO_VSHLL(VSHLL_TU, vshlltu)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue