aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-12-08 15:40:54 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1994-12-08 15:40:54 -0500
commit16f323bef32ff1349158412bba7b030acd3062be (patch)
tree82c4c71f0b1ca93654d1eaf982a1a1f649319084 /gcc
parent53afc2565c3d37ea7ccb5c22049ecdacc8cf5683 (diff)
downloadgcc-16f323bef32ff1349158412bba7b030acd3062be.zip
gcc-16f323bef32ff1349158412bba7b030acd3062be.tar.gz
gcc-16f323bef32ff1349158412bba7b030acd3062be.tar.bz2
(extend_operator): New predicate.
From-SVN: r8630
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/m68k/m68k.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index dfc6eb5..7f57876 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -766,6 +766,33 @@ symbolic_operand (op, mode)
return 0;
}
}
+
+/* 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;
+ }
+}
/* Legitimize PIC addresses. If the address is already