Fix loading up negative 0 vector 16-bit floating point.

2025-10-17  Michael Meissner  <meissner@linux.ibm.com>

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.
This commit is contained in:
Michael Meissner 2025-10-17 13:17:57 -04:00
parent 6f8a483024
commit 178177fb26
1 changed files with 4 additions and 6 deletions

View File

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