aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/config/rs6000/predicates.md8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index 345d9c337af..5ef505bb1c4 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -932,6 +932,14 @@
return false;
addr = XEXP (inner, 0);
+
+ /* The LWA instruction uses the DS-form instruction format which requires
+ that the bottom two bits of the offset must be 0. The prefixed PLWA does
+ not have this restriction. While the actual load from memory is 32-bits,
+ we pass in DImode here to test for using a DS instruction. */
+ if (address_is_prefixed (addr, DImode, NON_PREFIXED_DS))
+ return true;
+
if (GET_CODE (addr) == PRE_INC
|| GET_CODE (addr) == PRE_DEC
|| (GET_CODE (addr) == PRE_MODIFY