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;
 }

Reply via email to