pa.md (subsi3): Turn into an expander.
authorJeffrey A Law <law@cygnus.com>
Wed, 22 Sep 1999 20:11:22 +0000 (20:11 +0000)
committerJeff Law <law@gcc.gnu.org>
Wed, 22 Sep 1999 20:11:22 +0000 (14:11 -0600)
        * 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

gcc/ChangeLog
gcc/config/pa/pa.h

index 46d9677..6cd7f82 100644 (file)
@@ -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.
index 4734057..ffbccea 100644 (file)
@@ -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.