mirror of https://github.com/xemu-project/xemu.git
target/arm: Fix MVE VSLI by 0 and VSRI by <dt>
In the MVE shift-and-insert insns, we special case VSLI by 0 and VSRI by <dt>. VSRI by <dt> means "don't update the destination", which is what we've implemented. However VSLI by 0 is "set destination to the input", so we don't want to use the same special-casing that we do for VSRI by <dt>. Since the generic logic gives the right answer for a shift by 0, just use that. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
aa29190826
commit
c88ff88498
|
@ -1279,11 +1279,12 @@ DO_2SHIFT_S(vrshli_s, DO_VRSHLS)
|
|||
uint16_t mask; \
|
||||
uint64_t shiftmask; \
|
||||
unsigned e; \
|
||||
if (shift == 0 || shift == ESIZE * 8) { \
|
||||
if (shift == ESIZE * 8) { \
|
||||
/* \
|
||||
* Only VSLI can shift by 0; only VSRI can shift by <dt>. \
|
||||
* The generic logic would give the right answer for 0 but \
|
||||
* fails for <dt>. \
|
||||
* Only VSRI can shift by <dt>; it should mean "don't \
|
||||
* update the destination". The generic logic can't handle \
|
||||
* this because it would try to shift by an out-of-range \
|
||||
* amount, so special case it here. \
|
||||
*/ \
|
||||
goto done; \
|
||||
} \
|
||||
|
|
Loading…
Reference in New Issue