s390.md: Add a splitter for NOT rtx.
authorAndreas Krebbel <Andreas.Krebbel@de.ibm.com>
Fri, 11 Apr 2014 10:42:27 +0000 (10:42 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Fri, 11 Apr 2014 10:42:27 +0000 (10:42 +0000)
2014-04-11  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

* config/s390/s390.md: Add a splitter for NOT rtx.

From-SVN: r209295

gcc/ChangeLog
gcc/config/s390/s390.md

index d702fae..b4173bc 100644 (file)
@@ -1,3 +1,7 @@
+2014-04-11  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+       * config/s390/s390.md: Add a splitter for NOT rtx.
+
 2014-04-11  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/60663
index 7d9d1ad..b17c1fa 100644 (file)
   ""
   "s390_expand_logical_operator (XOR, <MODE>mode, operands); DONE;")
 
+; Combine replaces (xor (x) (const_int -1)) with (not (x)) when doing
+; simplifications.  So its better to have something matching.
+(define_split
+  [(set (match_operand:INT 0 "nonimmediate_operand" "")
+        (not:INT (match_operand:INT 1 "nonimmediate_operand" "")))]
+  ""
+  [(parallel
+    [(set (match_dup 0) (xor:INT (match_dup 1) (match_dup 2)))
+     (clobber (reg:CC CC_REGNUM))])]
+{
+  operands[2] = constm1_rtx;
+  if (!s390_logical_operator_ok_p (operands))
+    FAIL;
+})
+
 ;
 ; xordi3 instruction pattern(s).
 ;