From 11aac14fcefc15b085f4172ae4eb39542f505b5a Mon Sep 17 00:00:00 2001
From: David Edelsohn <edelsohn@gnu.org>
Date: Wed, 10 Aug 2005 14:21:52 +0000
Subject: [PATCH] predicates.md (indexed_or_indirect_address): New.

	* config/rs6000/predicates.md (indexed_or_indirect_address): New.
	* config/rs6000/rs6000.md (prefetch): Remove operand 0 mode and
	change predicate to indexed_or_indirect_address.

From-SVN: r102950
---
 gcc/ChangeLog                   | 6 ++++++
 gcc/config/rs6000/predicates.md | 8 ++++++++
 gcc/config/rs6000/rs6000.md     | 2 +-
 3 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8092a46e2bb4..567c4923f22f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2005-08-10  David Edelsohn  <edelsohn@gnu.org>
+
+	* config/rs6000/predicates.md (indexed_or_indirect_address): New.
+	* config/rs6000/rs6000.md (prefetch): Remove operand 0 mode and
+	change predicate to indexed_or_indirect_address.
+
 2005-08-10  Richard Sandiford  <richard@codesourcery.com>
 
 	* config/arm/lib1funcs.asm (__aeabi_uidiv, __aeabi_idiv): New aliases.
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index a5bad7bfcd47..68c824a077f3 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -369,6 +369,14 @@
 		    || GET_CODE (XEXP (XEXP (op, 0), 1)) != CONST_INT
 		    || INTVAL (XEXP (XEXP (op, 0), 1)) % 4 == 0")))
 
+;; Return 1 if the operand is an indexed or indirect address.
+(define_predicate "indexed_or_indirect_address"
+  (and (match_operand 0 "address_operand")
+       (match_test "REG_P (op)
+		    || (GET_CODE (op) == PLUS
+			&& REG_P (XEXP (op, 0)) 
+			&& REG_P (XEXP (op, 1)))")))
+
 ;; Used for the destination of the fix_truncdfsi2 expander.
 ;; If stfiwx will be used, the result goes to memory; otherwise,
 ;; we're going to emit a store and a load of a subreg, so the dest is a
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 3cc613a82edc..05ff9bd3b491 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -14016,7 +14016,7 @@
 }")
 
 (define_insn "prefetch"
-  [(prefetch (match_operand:V4SI 0 "address_operand" "p")
+  [(prefetch (match_operand 0 "indexed_or_indirect_address" "p")
 	     (match_operand:SI 1 "const_int_operand" "n")
 	     (match_operand:SI 2 "const_int_operand" "n"))]
   "TARGET_POWERPC"
-- 
GitLab