On Fri, 14 May 2021 at 17:33, Richard Henderson <[email protected]> wrote: > > On 5/13/21 5:47 AM, Peter Maydell wrote: > > On Fri, 30 Apr 2021 at 21:57, Richard Henderson > > <[email protected]> wrote: > >> > >> For SVE, we potentially have a 4th argument coming from the > >> movprfx instruction. Currently we do not optimize movprfx, > >> so the problem is not visible. > >> > >> Signed-off-by: Richard Henderson <[email protected]> > >> --- > >> v4: Fix double addition (zhiwei). > >> --- > >> target/arm/helper.h | 20 +++--- > >> target/arm/sve.decode | 7 ++- > >> target/arm/translate-a64.c | 15 ++++- > >> target/arm/translate-neon.c | 10 +-- > >> target/arm/translate-sve.c | 13 ++-- > >> target/arm/vec_helper.c | 120 ++++++++++++++++++++---------------- > >> 6 files changed, 109 insertions(+), 76 deletions(-) > > > >> diff --git a/target/arm/vec_helper.c b/target/arm/vec_helper.c > >> index a3d80ecad0..f88e572132 100644 > >> --- a/target/arm/vec_helper.c > >> +++ b/target/arm/vec_helper.c > >> @@ -375,71 +375,76 @@ void HELPER(sve2_sqrdmlsh_d)(void *vd, void *vn, > >> void *vm, > >> * All elements are treated equally, no matter where they are. > >> */ > >> > >> -void HELPER(gvec_sdot_b)(void *vd, void *vn, void *vm, uint32_t desc) > >> +void HELPER(gvec_sdot_b)(void *vd, void *vn, void *vm, void *va, uint32_t > >> desc) > >> { > >> intptr_t i, opr_sz = simd_oprsz(desc); > >> - uint32_t *d = vd; > >> + int32_t *d = vd, *a = va; > > > > Why the type change ? > > Oh, just because this is logically producing a signed result. Given that we > use -fwrapv, there is no functional change.
Seems reasonable, but can you put that in a separate patch if you want to do it, please? thanks -- PMM
