https://gcc.gnu.org/g:86eb8563626948a0bc690c1a61907bf75fb0b940
commit 86eb8563626948a0bc690c1a61907bf75fb0b940 Author: Michael Meissner <meiss...@linux.ibm.com> Date: Wed May 21 14:03:12 2025 -0400 Update ChangeLog.* Diff: --- gcc/ChangeLog.bugs | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/gcc/ChangeLog.bugs b/gcc/ChangeLog.bugs index 8eb6295859ab..91250828ad30 100644 --- a/gcc/ChangeLog.bugs +++ b/gcc/ChangeLog.bugs @@ -1,4 +1,4 @@ -==================== Branch work206-bugs, patch #110 ==================== +==================== Branch work206-bugs, patch #111 ==================== Fix PR 118541, do not generate unordered fp cmoves for IEEE compares. @@ -40,11 +40,16 @@ arguments is a signalling NaN and signalling NaNs can generate an interrupt. The IEEE comparison functions (isgreater, etc.) require that the comparison not raise an interrupt. -The following patch changes the PowerPC back end so that ifcvt.c will not change -the if/then test and move into a conditional move if the comparison is one of -the comparisons that do not raise an error with signalling NaNs and -Ofast is -not used. If a normal comparison is used or -Ofast is used, GCC will continue -to generate XSCMPGTDP and XXSEL. +The root cause of this is we allow floating point comparisons to be reversed +(i.e. LT will be reversed to UNGE). Before power9, this was ok because we only +generated the FCMPU or XSCMPUDP instructions. But with power9, we can generate +the XSCMPEQDP, XSCMPGTDP, or XSCMPGEDP instructions. If NaNs are allowed, we no +longer allow FP comparisons to be reversed. If FP comparisons can't be +reversed, the machine independent portions of the compiler will generate the +comparison with the arguments reversed. + +Since we do not support reversing FP comparisons, the code to support inverting +fpmask operations on power9 has been removed. For the following code: @@ -82,31 +87,28 @@ power9/power10 systems and there were no regressions. Can I check this patch into the GCC trunk, and after a waiting period, can I check this into the active older branches? -2025-05-20 Michael Meissner <meiss...@linux.ibm.com> +2025-05-21 Michael Meissner <meiss...@linux.ibm.com> gcc/ PR target/118541 - * config/rs6000/predicates.md (invert_fpmask_comparison_operator): Do - not allow UNLT and UNLE unless -ffast-math. - * config/rs6000/rs6000-protos.h (enum rev_cond_ordered): New enumeration. - (rs6000_reverse_condition): Add argument. - * config/rs6000/rs6000.cc (rs6000_reverse_condition): Do not allow - ordered comparisons to be reversed for floating point conditional moves, - but allow ordered comparisons to be reversed on jumps. - (rs6000_emit_sCOND): Adjust rs6000_reverse_condition call. + * config/rs6000/predicates.md (invert_fpmask_comparison_operator): + Delete. * config/rs6000/rs6000.h (REVERSIBLE_CC_MODE): Do not allow floating - point comparisons to be reversed on platforms that can generate the - xscmp{eq,gt,ge}{dp,qp} instructions. - (REVERSE_CONDITION): Adjust rs6000_reverse_condition call. - * config/rs6000/rs6000.md (reverse_branch_comparison): Name insn. - Adjust rs6000_reverse_condition calls. + point comparisons to be reversed unless -ffinite-math-only is used. + (rs6000_reverse_condition): Add argument. + * config/rs6000/rs6000.md (mov<SFDF:mode><SFDF2:mode>cc_p9): Add + comment. + (mov<SFDF:mode><SFDF2:mode>cc_invert_p9): Delete insns. + (mov<mode>cc_invert_p10): Likewise. gcc/testsuite/ PR target/118541 * gcc.target/powerpc/pr118541.c: New test. +==================== Branch work206-bugs, patch #110 was reverted ==================== + ==================== Branch work206-bugs, patch #101 ==================== PR 99293: Optimize splat of a V2DF/V2DI extract with constant element