Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/gnu/dist/gcc4/gcc/config/vax Only allow jbls/jblc x(r) iff (...



details:   https://anonhg.NetBSD.org/src/rev/06cb0dc1a62a
branches:  trunk
changeset: 756638:06cb0dc1a62a
user:      matt <matt%NetBSD.org@localhost>
date:      Tue Jul 27 01:13:41 2010 +0000

description:
Only allow jbls/jblc x(r) iff (x & 3) == 0

diffstat:

 gnu/dist/gcc4/gcc/config/vax/vax.md |  46 ++++++++++++++++++++++++++++--------
 1 files changed, 36 insertions(+), 10 deletions(-)

diffs (70 lines):

diff -r 2f576554138e -r 06cb0dc1a62a gnu/dist/gcc4/gcc/config/vax/vax.md
--- a/gnu/dist/gcc4/gcc/config/vax/vax.md       Mon Jul 26 22:40:11 2010 +0000
+++ b/gnu/dist/gcc4/gcc/config/vax/vax.md       Tue Jul 27 01:13:41 2010 +0000
@@ -1129,30 +1129,56 @@
 (define_insn ""
   [(set (pc)
        (if_then_else
-        (ne (zero_extract:SI (match_operand:QI 0 "memory_operand" "Q,g")
+        (ne (zero_extract:SI (match_operand:QI 0 "memory_operand" "Q")
                              (const_int 1)
-                             (match_operand:SI 1 "general_operand" "I,nrmT"))
+                             (const_int 0))
+            (const_int 0))
+        (label_ref (match_operand 1 "" ""))
+        (pc)))]
+  "GET_CODE (XEXP (operands[0], 0)) != PLUS
+   || !REG_P (XEXP (XEXP (operands[0], 0), 0))
+   || !CONST_INT_P (XEXP (XEXP (operands[0], 0), 1))
+   || (INTVAL (XEXP (XEXP (operands[0], 0), 1)) & 3) == 0"
+  "jlbs %0,%l1")
+
+(define_insn ""
+  [(set (pc)
+       (if_then_else
+        (ne (zero_extract:SI (match_operand:QI 0 "memory_operand" "g")
+                             (const_int 1)
+                             (match_operand:SI 1 "general_operand" "nrmT"))
             (const_int 0))
         (label_ref (match_operand 2 "" ""))
         (pc)))]
   ""
-  "@
-   jlbs %0,%l2
-   jbs %1,%0,%l2")
+  "jbs %1,%0,%l2")
 
 (define_insn ""
   [(set (pc)
        (if_then_else
-        (eq (zero_extract:SI (match_operand:QI 0 "memory_operand" "Q,g")
+        (eq (zero_extract:SI (match_operand:QI 0 "memory_operand" "Q")
                              (const_int 1)
-                             (match_operand:SI 1 "general_operand" "I,nrmT"))
+                             (const_int 0))
+            (const_int 0))
+        (label_ref (match_operand 1 "" ""))
+        (pc)))]
+  "GET_CODE (XEXP (operands[0], 0)) != PLUS
+   || !REG_P (XEXP (XEXP (operands[0], 0), 0))
+   || !CONST_INT_P (XEXP (XEXP (operands[0], 0), 1))
+   || (INTVAL (XEXP (XEXP (operands[0], 0), 1)) & 3) == 0"
+  "jlbc %0,%l1")
+
+(define_insn ""
+  [(set (pc)
+       (if_then_else
+        (eq (zero_extract:SI (match_operand:QI 0 "memory_operand" "g")
+                             (const_int 1)
+                             (match_operand:SI 1 "general_operand" "nrmT"))
             (const_int 0))
         (label_ref (match_operand 2 "" ""))
         (pc)))]
   ""
-  "@
-   jlbc %0,%l2
-   jbc %1,%0,%l2")
+  "jbc %1,%0,%l2")
 
 (define_insn ""
   [(set (pc)



Home | Main Index | Thread Index | Old Index