Hi,

   The patch fixed the wrong "if" fall through in "cstore<mode>4" expand, which causes comparison pattern expanded twice on P10.

   The attachments are the patch diff and change log file.

    Bootstrapped and tested on powerpc64le-linux with no regressions. Is this okay for trunk? Any recommendations? Thanks a lot.

        PR target/100952
        * config/rs6000/rs6000.md (cstore<mode>4): Fix wrong fall through.
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 3f59b544f6a..3ae7aa29c1d 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -11627,7 +11627,7 @@ (define_expand "cstore<mode>4"
 
   /* Expanding EQ and NE directly to some machine instructions does not help
      but does hurt combine.  So don't.  */
-  if (GET_CODE (operands[1]) == EQ)
+  else if (GET_CODE (operands[1]) == EQ)
     emit_insn (gen_eq<mode>3 (operands[0], operands[2], operands[3]));
   else if (<MODE>mode == Pmode
           && GET_CODE (operands[1]) == NE)

Reply via email to