summaryrefslogtreecommitdiff
path: root/gcc/targhooks.c
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-04 08:50:36 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-04 08:50:36 +0000
commitc49547c45490b7a0c0281d90f79848aa3191ba88 (patch)
tree4320b41f468e28f9439feab3f57dff953085081c /gcc/targhooks.c
parentc068056a5c1064f44c6ad502c60981420b4a4562 (diff)
downloadgcc-c49547c45490b7a0c0281d90f79848aa3191ba88.tar.gz
* doc/md.texi (shift patterns): New anchor. Add reference to
TARGET_SHIFT_TRUNCATION_MASK. * doc/tm.texi (TARGET_SHIFT_TRUNCATION_MASK): Document. * target.h (shift_truncation_mask): New target hook. * targhook.h (default_shift_truncation_mask): Declare. * targhook.c (default_shift_truncation_mask): Define. * target-def.h (TARGET_SHIFT_TRUNCATION_MASK): Define. (TARGET_INITIALIZER): Include it. * simplify-rtx.c (simplify_binary_operation): Combine ASHIFT, ASHIFTRT and LSHIFTRT cases. Truncate arg1 if SHIFT_COUNT_TRUNCATED, otherwise reject all out-of-range values. Fix sign-extension code for modes whose width is smaller than HOST_BITS_PER_WIDE_INT. * optabs.c (simplify_expand_binop, force_expand_binop): New functions. (expand_superword_shift, expand_subword_shift): Likewise. (expand_doubleword_shift_condmove, expand_doubleword_shift): Likewise. (expand_binop): Use them to implement double-word shifts. * config/arm/arm.c (arm_shift_truncation_mask): New function. (TARGET_SHIFT_TRUNCATION_MASK): Define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87079 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/targhooks.c')
-rw-r--r--gcc/targhooks.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index 6aa2e07117b..5ecb6d8370d 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -135,6 +135,14 @@ default_eh_return_filter_mode (void)
return word_mode;
}
+/* The default implementation of TARGET_SHIFT_TRUNCATION_MASK. */
+
+unsigned HOST_WIDE_INT
+default_shift_truncation_mask (enum machine_mode mode)
+{
+ return SHIFT_COUNT_TRUNCATED ? GET_MODE_BITSIZE (mode) - 1 : 0;
+}
+
/* Generic hook that takes a CUMULATIVE_ARGS pointer and returns true. */
bool