From b6159fc9a67c78c0783db0b7e704b8f57f827f6b Mon Sep 17 00:00:00 2001 From: Anton Blanchard Date: Tue, 4 Jun 2019 20:01:14 +0100 Subject: [PATCH] target/ppc: Fix vsum2sws A recent cleanup changed the pre zeroing of the result from 64 bit to 32 bit operations: - result.u64[i] = 0; + result.VsrW(i) = 0; This corrupts the result. Fixes: 60594fea298d ("target/ppc: remove various HOST_WORDS_BIGENDIAN hacks in int_helper.c") Signed-off-by: Anton Blanchard Message-Id: <20190507004811.29968-9-anton@ozlabs.org> Signed-off-by: David Gibson (upstream commit 7fa0ddc1d63806769d1b6246a62708d3bde39037) Acked-by: David Gibson Signed-off-by: Michael Roth --- target/ppc/int_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/ppc/int_helper.c b/target/ppc/int_helper.c index 162add561eb..6bd1d32b1d2 100644 --- a/target/ppc/int_helper.c +++ b/target/ppc/int_helper.c @@ -2030,7 +2030,7 @@ void helper_vsum2sws(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) for (i = 0; i < ARRAY_SIZE(r->u64); i++) { int64_t t = (int64_t)b->VsrSW(upper + i * 2); - result.VsrW(i) = 0; + result.VsrD(i) = 0; for (j = 0; j < ARRAY_SIZE(r->u64); j++) { t += a->VsrSW(2 * i + j); } -- 2.39.5