From 178177fb262cf691e642638c9c352a4df3180c15 Mon Sep 17 00:00:00 2001 From: Michael Meissner Date: Fri, 17 Oct 2025 13:17:57 -0400 Subject: [PATCH] Fix loading up negative 0 vector 16-bit floating point. 2025-10-17 Michael Meissner gcc/ * config/rs6000/float16.md (neg2, VFP16_HW iterator): Force -0.0 vector constant to memory. (abs2, VFP16_HW iterator): Likewise. --- gcc/config/rs6000/float16.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/gcc/config/rs6000/float16.md b/gcc/config/rs6000/float16.md index cb684a41ec47..676ab69336aa 100644 --- a/gcc/config/rs6000/float16.md +++ b/gcc/config/rs6000/float16.md @@ -735,9 +735,8 @@ for (size_t i = 0; i < 8; i++) RTVEC_ELT (v, i) = neg0; - rtx vneg0 = gen_rtx_CONST_VECTOR (mode, v); - if (!TARGET_PREFIXED) - vneg0 = force_const_mem (mode, vneg0); + rtx vneg0 = force_const_mem (mode, + gen_rtx_CONST_VECTOR (mode, v)); operands[3] = vneg0; } @@ -783,9 +782,8 @@ for (size_t i = 0; i < 8; i++) RTVEC_ELT (v, i) = neg0; - rtx vneg0 = gen_rtx_CONST_VECTOR (mode, v); - if (!TARGET_PREFIXED) - vneg0 = force_const_mem (mode, vneg0); + rtx vneg0 = force_const_mem (mode, + gen_rtx_CONST_VECTOR (mode, v)); operands[3] = vneg0; }