(extend_operator): New predicate.
authorRichard Kenner <kenner@gcc.gnu.org>
Thu, 8 Dec 1994 20:40:54 +0000 (15:40 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Thu, 8 Dec 1994 20:40:54 +0000 (15:40 -0500)
From-SVN: r8630

gcc/config/m68k/m68k.c

index dfc6eb54b18ffe54bb7d4306a5b706e930062542..7f57876eeb7df6a6892d027beb5f162bdfa4588b 100644 (file)
@@ -766,6 +766,33 @@ symbolic_operand (op, mode)
       return 0;
     }
 }
+\f
+/* Check for sign_extend or zero_extend.  Used for bit-count operands. */
+
+int
+extend_operator(x, mode)
+     rtx x;
+     enum machine_mode mode;
+{
+    if (GET_MODE(x) != SImode)
+       return 0;
+    switch (GET_CODE(x))
+       {
+       case SIGN_EXTEND :
+       case ZERO_EXTEND :
+           break;
+       default :
+           return 0;
+       }
+    switch (GET_MODE(XEXP(x, 0)))
+       {
+       case HImode :
+       case QImode :
+           return 1;
+       default :
+           return 0;
+       }
+}
 
 \f
 /* Legitimize PIC addresses.  If the address is already