target/arm: Fix LD1W and LDFF1W (scalar plus vector)

'I' was being double-incremented; correctly within the inner loop
and incorrectly within the outer loop.

Backports commit 628fc75f3a3bb115de3b445c1a18547c44613cfe from qemu
This commit is contained in:
Richard Henderson 2018-07-17 12:32:47 -04:00 committed by Lioncash
parent 103c5054e7
commit bd9975a8ab
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7

View file

@ -4456,7 +4456,7 @@ void HELPER(NAME)(CPUARMState *env, void *vd, void *vg, void *vm, \
intptr_t i, oprsz = simd_oprsz(desc); \
unsigned scale = simd_data(desc); \
uintptr_t ra = GETPC(); \
for (i = 0; i < oprsz; i++) { \
for (i = 0; i < oprsz; ) { \
uint16_t pg = *(uint16_t *)(vg + H1_2(i >> 3)); \
do { \
TYPEM m = 0; \
@ -4537,7 +4537,7 @@ void HELPER(NAME)(CPUARMState *env, void *vd, void *vg, void *vm, \
uintptr_t ra = GETPC(); \
bool first = true; \
mmap_lock(); \
for (i = 0; i < oprsz; i++) { \
for (i = 0; i < oprsz; ) { \
uint16_t pg = *(uint16_t *)(vg + H1_2(i >> 3)); \
do { \
TYPEM m = 0; \