aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1999-09-22 20:11:22 +0000
committerJeff Law <law@gcc.gnu.org>1999-09-22 14:11:22 -0600
commit80559c31a6955c02751911a9af2a8446432f2eae (patch)
tree9d4da045fbfbef6a557d7c5d1605c695505824a8
parent635d1437cbd05f98760849ae56a87e0e94e6b431 (diff)
downloadgcc-80559c31a6955c02751911a9af2a8446432f2eae.zip
gcc-80559c31a6955c02751911a9af2a8446432f2eae.tar.gz
gcc-80559c31a6955c02751911a9af2a8446432f2eae.tar.bz2
pa.md (subsi3): Turn into an expander.
* pa.md (subsi3): Turn into an expander. Create two anonymous patterns. One for PA2.0 one for PA1.x. Use mtsarcm for PA2.0. * pa.h (EXTRA_CONSTRAINT): Handle 'S'. From-SVN: r29597
-rw-r--r--gcc/ChangeLog1
-rw-r--r--gcc/config/pa/pa.h8
2 files changed, 6 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 46d9677..6cd7f82 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -39,6 +39,7 @@ Wed Sep 22 06:06:57 1999 Jeffrey A Law (law@cygnus.com)
* pa.md (subsi3): Turn into an expander. Create two anonymous
patterns. One for PA2.0 one for PA1.x. Use mtsarcm for PA2.0.
+ * pa.h (EXTRA_CONSTRAINT): Handle 'S'.
* pa.md (floatunssisf2, floatunssidf2): Generate different RTL
for TARGET_PA_20.
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h
index 4734057..ffbccea 100644
--- a/gcc/config/pa/pa.h
+++ b/gcc/config/pa/pa.h
@@ -1315,7 +1315,7 @@ extern struct rtx_def *hppa_va_arg();
`R' is used for scaled indexed addresses.
- `S' is unused.
+ `S' is the constant 31.
`T' is for fp loads and stores. */
#define EXTRA_CONSTRAINT(OP, C) \
@@ -1343,7 +1343,9 @@ extern struct rtx_def *hppa_va_arg();
&& memory_address_p (DFmode, XEXP (OP, 0)) \
&& !(GET_CODE (XEXP (OP, 0)) == PLUS \
&& (GET_CODE (XEXP (XEXP (OP, 0), 0)) == MULT\
- || GET_CODE (XEXP (XEXP (OP, 0), 1)) == MULT))) : 0)))
+ || GET_CODE (XEXP (XEXP (OP, 0), 1)) == MULT)))
+ : ((C) == 'S' ? \
+ (GET_CODE (OP) == CONST_INT && INTVAL (OP) == 31) : 0))))
/* The macros REG_OK_FOR..._P assume that the arg is a REG rtx
and check its validity for a certain class.
@@ -1706,7 +1708,7 @@ while (0)
/* Specify the machine mode that pointers have.
After generation of rtl, the compiler makes no further distinction
between pointers and any other objects of this machine mode. */
-#define Pmode word_mode
+#define Pmode SImode
/* Add any extra modes needed to represent the condition code.