Module Name:    src
Committed By:   matt
Date:           Tue Jul 27 01:13:41 UTC 2010

Modified Files:
        src/gnu/dist/gcc4/gcc/config/vax: vax.md

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


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/gnu/dist/gcc4/gcc/config/vax/vax.md

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/gnu/dist/gcc4/gcc/config/vax/vax.md
diff -u src/gnu/dist/gcc4/gcc/config/vax/vax.md:1.12 src/gnu/dist/gcc4/gcc/config/vax/vax.md:1.13
--- src/gnu/dist/gcc4/gcc/config/vax/vax.md:1.12	Fri Apr 20 16:30:32 2007
+++ src/gnu/dist/gcc4/gcc/config/vax/vax.md	Tue Jul 27 01:13:41 2010
@@ -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)

Reply via email to