From: Richard Henderson Date: Thu, 4 Jun 2026 23:48:43 +0000 (-0700) Subject: target/arm: Enable zeroing in DO_FCVT{N, L}T macros in sve_helper.c X-Git-Tag: v11.1.0-rc0~57^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=75659d38ee1dbdfcd7f33b51f5c006ebd668fdf8;p=thirdparty%2Fqemu.git target/arm: Enable zeroing in DO_FCVT{N, L}T macros in sve_helper.c Use the low bit of simd_data to hold a 'zeroing' bit. The simd_data field is currently unused and always 0. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-id: 20260604234852.573178-17-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index f8e62cb11b..a0a189eb1e 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -8595,6 +8595,7 @@ void HELPER(NAME)(void *vd, void *vn, void *vg, \ float_status *status, uint32_t desc) \ { \ intptr_t i = simd_oprsz(desc); \ + bool zeroing = simd_data(desc) & 1; \ uint64_t *g = vg; \ do { \ uint64_t pg = g[(i - 1) >> 6]; \ @@ -8603,6 +8604,8 @@ void HELPER(NAME)(void *vd, void *vn, void *vg, \ if (likely((pg >> (i & 63)) & 1)) { \ TYPEW nn = *(TYPEW *)(vn + HW(i)); \ *(TYPEN *)(vd + HN(i + sizeof(TYPEN))) = OP(nn, status); \ + } else if (zeroing) { \ + *(TYPEN *)(vd + HN(i + sizeof(TYPEN))) = 0; \ } \ } while (i & 63); \ } while (i != 0); \ @@ -8617,6 +8620,7 @@ void HELPER(NAME)(void *vd, void *vn, void *vg, \ float_status *status, uint32_t desc) \ { \ intptr_t i = simd_oprsz(desc); \ + bool zeroing = simd_data(desc) & 1; \ uint64_t *g = vg; \ do { \ uint64_t pg = g[(i - 1) >> 6]; \ @@ -8625,6 +8629,8 @@ void HELPER(NAME)(void *vd, void *vn, void *vg, \ if (likely((pg >> (i & 63)) & 1)) { \ TYPEN nn = *(TYPEN *)(vn + HN(i + sizeof(TYPEN))); \ *(TYPEW *)(vd + HW(i)) = OP(nn, status); \ + } else if (zeroing) { \ + *(TYPEW *)(vd + HW(i)) = 0; \ } \ } while (i & 63); \ } while (i != 0); \