aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.h
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2001-08-22 00:33:33 +0000
committerZack Weinberg <zack@gcc.gnu.org>2001-08-22 00:33:33 +0000
commitda92057001929e2c650454e11d828d4296217e3d (patch)
tree129eec34d330cb3fc70326b18b8ff46f6e80e5e2 /gcc/expr.h
parentd8693c6fa425fecaf6570114f1cd69aaf3c08043 (diff)
downloadgcc-da92057001929e2c650454e11d828d4296217e3d.zip
gcc-da92057001929e2c650454e11d828d4296217e3d.tar.gz
gcc-da92057001929e2c650454e11d828d4296217e3d.tar.bz2
expmed.c (mode_for_extraction): New function.
* expmed.c (mode_for_extraction): New function. (store_bit_field, extract_bit_field): Use it. * expr.h: Prototype it and provide an enum for its first argument. * combine.c, function.c, recog.c: Don't include insn-codes.h. Use mode_for_extraction rather than testing HAVE_insv/extv/extzv and digging through the insn_data tables. * Makefile.in: Update dependencies. From-SVN: r45086
Diffstat (limited to 'gcc/expr.h')
-rw-r--r--gcc/expr.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/expr.h b/gcc/expr.h
index 22e537d..9bf2adb 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -715,6 +715,14 @@ extern rtx hard_libcall_value PARAMS ((enum machine_mode));
of STACK_BOUNDARY / BITS_PER_UNIT. */
extern rtx round_push PARAMS ((rtx));
+/* Return the mode desired by operand N of a particular bitfield
+ insert/extract insn, or MAX_MACHINE_MODE if no such insn is
+ available. */
+
+enum extraction_pattern { EP_insv, EP_extv, EP_extzv };
+extern enum machine_mode
+mode_for_extraction PARAMS ((enum extraction_pattern, int));
+
extern rtx store_bit_field PARAMS ((rtx, unsigned HOST_WIDE_INT,
unsigned HOST_WIDE_INT,
enum machine_mode, rtx,