https://gcc.gnu.org/g:178177fb262cf691e642638c9c352a4df3180c15
commit 178177fb262cf691e642638c9c352a4df3180c15 Author: Michael Meissner <[email protected]> Date: Fri Oct 17 13:17:57 2025 -0400 Fix loading up negative 0 vector 16-bit floating point. 2025-10-17 Michael Meissner <[email protected]> gcc/ * config/rs6000/float16.md (neg<mode>2, VFP16_HW iterator): Force -0.0 vector constant to memory. (abs<mode>2, VFP16_HW iterator): Likewise. Diff: --- 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>mode, v); - if (!TARGET_PREFIXED) - vneg0 = force_const_mem (<MODE>mode, vneg0); + rtx vneg0 = force_const_mem (<MODE>mode, + gen_rtx_CONST_VECTOR (<MODE>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>mode, v); - if (!TARGET_PREFIXED) - vneg0 = force_const_mem (<MODE>mode, vneg0); + rtx vneg0 = force_const_mem (<MODE>mode, + gen_rtx_CONST_VECTOR (<MODE>mode, v)); operands[3] = vneg0; }
