diff options
author | Bernd Schmidt <bernds@cygnus.co.uk> | 1999-09-04 22:08:44 +0000 |
---|---|---|
committer | Bernd Schmidt <crux@gcc.gnu.org> | 1999-09-04 22:08:44 +0000 |
commit | 34220a12295cfd5f36a04a0342287048d7a875b7 (patch) | |
tree | ba50ef36b34c0c2e6f0d788595bd3a542c688ab0 /gcc | |
parent | 6c7c62c6375e8fc0ea2c6d6da475db40d06191e9 (diff) | |
download | gcc-34220a12295cfd5f36a04a0342287048d7a875b7.zip gcc-34220a12295cfd5f36a04a0342287048d7a875b7.tar.gz gcc-34220a12295cfd5f36a04a0342287048d7a875b7.tar.bz2 |
Convert many single variables to arrays
From-SVN: r29110
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/expr.h | 549 | ||||
-rw-r--r-- | gcc/optabs.c | 170 |
3 files changed, 396 insertions, 333 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2178ca9..6049ab5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +Sat Sep 4 22:53:13 1999 Bernd Schmidt <bernds@cygnus.co.uk> + + * expr.h: Collapse individual optab and libfunc vars to arrays. + (optab_index, libfunc_index): New enumerations. + (optab_table, libfunc_table): New arrays. + Add accessor macros for both. + + * optabs.c (optab_table, libfunc_table): New. + Delete declarations for individual optab and libfunc vars. + Sat Sep 4 12:57:17 1999 Richard Henderson <rth@cygnus.com> * i386/sco5.h (RETURN_POPS_ARGS): Name change ix86_return_pops_args. @@ -293,50 +293,141 @@ typedef struct optab extern rtx (*const insn_gen_function[]) PROTO ((rtx, ...)); -extern optab add_optab; -extern optab sub_optab; -extern optab smul_optab; /* Signed and floating-point multiply */ -extern optab smul_highpart_optab; /* Signed multiply, return high word */ -extern optab umul_highpart_optab; -extern optab smul_widen_optab; /* Signed multiply with result - one machine mode wider than args */ -extern optab umul_widen_optab; -extern optab sdiv_optab; /* Signed divide */ -extern optab sdivmod_optab; /* Signed divide-and-remainder in one */ -extern optab udiv_optab; -extern optab udivmod_optab; -extern optab smod_optab; /* Signed remainder */ -extern optab umod_optab; -extern optab flodiv_optab; /* Optab for floating divide. */ -extern optab ftrunc_optab; /* Convert float to integer in float fmt */ -extern optab and_optab; /* Logical and */ -extern optab ior_optab; /* Logical or */ -extern optab xor_optab; /* Logical xor */ -extern optab ashl_optab; /* Arithmetic shift left */ -extern optab ashr_optab; /* Arithmetic shift right */ -extern optab lshr_optab; /* Logical shift right */ -extern optab rotl_optab; /* Rotate left */ -extern optab rotr_optab; /* Rotate right */ -extern optab smin_optab; /* Signed and floating-point minimum value */ -extern optab smax_optab; /* Signed and floating-point maximum value */ -extern optab umin_optab; /* Unsigned minimum value */ -extern optab umax_optab; /* Unsigned maximum value */ - -extern optab mov_optab; /* Move instruction. */ -extern optab movstrict_optab; /* Move, preserving high part of register. */ - -extern optab cmp_optab; /* Compare insn; two operands. */ -extern optab tst_optab; /* tst insn; compare one operand against 0 */ - -/* Unary operations */ -extern optab neg_optab; /* Negation */ -extern optab abs_optab; /* Abs value */ -extern optab one_cmpl_optab; /* Bitwise not */ -extern optab ffs_optab; /* Find first bit set */ -extern optab sqrt_optab; /* Square root */ -extern optab sin_optab; /* Sine */ -extern optab cos_optab; /* Cosine */ -extern optab strlen_optab; /* String length */ +/* Enumeration of valid indexes into optab_table. */ +enum optab_index +{ + OTI_add, + OTI_sub, + + /* Signed and fp multiply */ + OTI_smul, + /* Signed multiply, return high word */ + OTI_smul_highpart, + OTI_umul_highpart, + /* Signed multiply with result one machine mode wider than args */ + OTI_smul_widen, + OTI_umul_widen, + + /* Signed divide */ + OTI_sdiv, + /* Signed divide-and-remainder in one */ + OTI_sdivmod, + OTI_udiv, + OTI_udivmod, + /* Signed remainder */ + OTI_smod, + OTI_umod, + /* Optab for floating divide. */ + OTI_flodiv, + /* Convert float to integer in float fmt */ + OTI_ftrunc, + + /* Logical and */ + OTI_and, + /* Logical or */ + OTI_ior, + /* Logical xor */ + OTI_xor, + + /* Arithmetic shift left */ + OTI_ashl, + /* Logical shift right */ + OTI_lshr, + /* Arithmetic shift right */ + OTI_ashr, + /* Rotate left */ + OTI_rotl, + /* Rotate right */ + OTI_rotr, + /* Signed and floating-point minimum value */ + OTI_smin, + /* Signed and floating-point maximum value */ + OTI_smax, + /* Unsigned minimum value */ + OTI_umin, + /* Unsigned maximum value */ + OTI_umax, + + /* Move instruction. */ + OTI_mov, + /* Move, preserving high part of register. */ + OTI_movstrict, + + /* Unary operations */ + /* Negation */ + OTI_neg, + /* Abs value */ + OTI_abs, + /* Bitwise not */ + OTI_one_cmpl, + /* Find first bit set */ + OTI_ffs, + /* Square root */ + OTI_sqrt, + /* Sine */ + OTI_sin, + /* Cosine */ + OTI_cos, + + /* Compare insn; two operands. */ + OTI_cmp, + /* Used only for libcalls for unsigned comparisons. */ + OTI_ucmp, + /* tst insn; compare one operand against 0 */ + OTI_tst, + + /* String length */ + OTI_strlen, + + OTI_MAX +}; + +extern optab optab_table[OTI_MAX]; + +#define add_optab (optab_table[OTI_add]) +#define sub_optab (optab_table[OTI_sub]) +#define smul_optab (optab_table[OTI_smul]) +#define smul_highpart_optab (optab_table[OTI_smul_highpart]) +#define umul_highpart_optab (optab_table[OTI_umul_highpart]) +#define smul_widen_optab (optab_table[OTI_smul_widen]) +#define umul_widen_optab (optab_table[OTI_umul_widen]) +#define sdiv_optab (optab_table[OTI_sdiv]) +#define sdivmod_optab (optab_table[OTI_sdivmod]) +#define udiv_optab (optab_table[OTI_udiv]) +#define udivmod_optab (optab_table[OTI_udivmod]) +#define smod_optab (optab_table[OTI_smod]) +#define umod_optab (optab_table[OTI_umod]) +#define flodiv_optab (optab_table[OTI_flodiv]) +#define ftrunc_optab (optab_table[OTI_ftrunc]) +#define and_optab (optab_table[OTI_and]) +#define ior_optab (optab_table[OTI_ior]) +#define xor_optab (optab_table[OTI_xor]) +#define ashl_optab (optab_table[OTI_ashl]) +#define lshr_optab (optab_table[OTI_lshr]) +#define ashr_optab (optab_table[OTI_ashr]) +#define rotl_optab (optab_table[OTI_rotl]) +#define rotr_optab (optab_table[OTI_rotr]) +#define smin_optab (optab_table[OTI_smin]) +#define smax_optab (optab_table[OTI_smax]) +#define umin_optab (optab_table[OTI_umin]) +#define umax_optab (optab_table[OTI_umax]) + +#define mov_optab (optab_table[OTI_mov]) +#define movstrict_optab (optab_table[OTI_movstrict]) + +#define neg_optab (optab_table[OTI_neg]) +#define abs_optab (optab_table[OTI_abs]) +#define one_cmpl_optab (optab_table[OTI_one_cmpl]) +#define ffs_optab (optab_table[OTI_ffs]) +#define sqrt_optab (optab_table[OTI_sqrt]) +#define sin_optab (optab_table[OTI_sin]) +#define cos_optab (optab_table[OTI_cos]) + +#define cmp_optab (optab_table[OTI_cmp]) +#define ucmp_optab (optab_table[OTI_ucmp]) +#define tst_optab (optab_table[OTI_tst]) + +#define strlen_optab (optab_table[OTI_strlen]) /* Tables of patterns for extending one integer mode to another. */ extern enum insn_code extendtab[MAX_MACHINE_MODE][MAX_MACHINE_MODE][2]; @@ -364,130 +455,256 @@ enum optab_methods OPTAB_MUST_WIDEN }; +/* Enumeration of indexes into libfunc_table. */ +enum libfunc_index +{ + LTI_extendsfdf2, + LTI_extendsfxf2, + LTI_extendsftf2, + LTI_extenddfxf2, + LTI_extenddftf2, + + LTI_truncdfsf2, + LTI_truncxfsf2, + LTI_trunctfsf2, + LTI_truncxfdf2, + LTI_trunctfdf2, + + LTI_memcpy, + LTI_bcopy, + LTI_memcmp, + LTI_bcmp, + LTI_memset, + LTI_bzero, + + LTI_throw, + LTI_rethrow, + LTI_sjthrow, + LTI_sjpopnthrow, + LTI_terminate, + LTI_setjmp, + LTI_longjmp, + LTI_eh_rtime_match, + + LTI_eqhf2, + LTI_nehf2, + LTI_gthf2, + LTI_gehf2, + LTI_lthf2, + LTI_lehf2, + + LTI_eqsf2, + LTI_nesf2, + LTI_gtsf2, + LTI_gesf2, + LTI_ltsf2, + LTI_lesf2, + + LTI_eqdf2, + LTI_nedf2, + LTI_gtdf2, + LTI_gedf2, + LTI_ltdf2, + LTI_ledf2, + + LTI_eqxf2, + LTI_nexf2, + LTI_gtxf2, + LTI_gexf2, + LTI_ltxf2, + LTI_lexf2, + + LTI_eqtf2, + LTI_netf2, + LTI_gttf2, + LTI_getf2, + LTI_lttf2, + LTI_letf2, + + LTI_floatsisf, + LTI_floatdisf, + LTI_floattisf, + + LTI_floatsidf, + LTI_floatdidf, + LTI_floattidf, + + LTI_floatsixf, + LTI_floatdixf, + LTI_floattixf, + + LTI_floatsitf, + LTI_floatditf, + LTI_floattitf, + + LTI_fixsfsi, + LTI_fixsfdi, + LTI_fixsfti, + + LTI_fixdfsi, + LTI_fixdfdi, + LTI_fixdfti, + + LTI_fixxfsi, + LTI_fixxfdi, + LTI_fixxfti, + + LTI_fixtfsi, + LTI_fixtfdi, + LTI_fixtfti, + + LTI_fixunssfsi, + LTI_fixunssfdi, + LTI_fixunssfti, + + LTI_fixunsdfsi, + LTI_fixunsdfdi, + LTI_fixunsdfti, + + LTI_fixunsxfsi, + LTI_fixunsxfdi, + LTI_fixunsxfti, + + LTI_fixunstfsi, + LTI_fixunstfdi, + LTI_fixunstfti, + + LTI_chkr_check_addr, + LTI_chkr_set_right, + LTI_chkr_copy_bitmap, + LTI_chkr_check_exec, + LTI_chkr_check_str, + + LTI_profile_function_entry, + LTI_profile_function_exit, + + LTI_MAX +}; + /* SYMBOL_REF rtx's for the library functions that are called implicitly and not via optabs. */ - -extern rtx extendsfdf2_libfunc; -extern rtx extendsfxf2_libfunc; -extern rtx extendsftf2_libfunc; -extern rtx extenddfxf2_libfunc; -extern rtx extenddftf2_libfunc; - -extern rtx truncdfsf2_libfunc; -extern rtx truncxfsf2_libfunc; -extern rtx trunctfsf2_libfunc; -extern rtx truncxfdf2_libfunc; -extern rtx trunctfdf2_libfunc; - -extern rtx memcpy_libfunc; -extern rtx bcopy_libfunc; -extern rtx memcmp_libfunc; -extern rtx bcmp_libfunc; -extern rtx memset_libfunc; -extern rtx bzero_libfunc; - -extern rtx throw_libfunc; -extern rtx rethrow_libfunc; -extern rtx sjthrow_libfunc; -extern rtx sjpopnthrow_libfunc; -extern rtx terminate_libfunc; -extern rtx setjmp_libfunc; -extern rtx longjmp_libfunc; -extern rtx eh_rtime_match_libfunc; - -extern rtx eqhf2_libfunc; -extern rtx nehf2_libfunc; -extern rtx gthf2_libfunc; -extern rtx gehf2_libfunc; -extern rtx lthf2_libfunc; -extern rtx lehf2_libfunc; - -extern rtx eqsf2_libfunc; -extern rtx nesf2_libfunc; -extern rtx gtsf2_libfunc; -extern rtx gesf2_libfunc; -extern rtx ltsf2_libfunc; -extern rtx lesf2_libfunc; - -extern rtx eqdf2_libfunc; -extern rtx nedf2_libfunc; -extern rtx gtdf2_libfunc; -extern rtx gedf2_libfunc; -extern rtx ltdf2_libfunc; -extern rtx ledf2_libfunc; - -extern rtx eqxf2_libfunc; -extern rtx nexf2_libfunc; -extern rtx gtxf2_libfunc; -extern rtx gexf2_libfunc; -extern rtx ltxf2_libfunc; -extern rtx lexf2_libfunc; - -extern rtx eqtf2_libfunc; -extern rtx netf2_libfunc; -extern rtx gttf2_libfunc; -extern rtx getf2_libfunc; -extern rtx lttf2_libfunc; -extern rtx letf2_libfunc; - -extern rtx floatsisf_libfunc; -extern rtx floatdisf_libfunc; -extern rtx floattisf_libfunc; - -extern rtx floatsidf_libfunc; -extern rtx floatdidf_libfunc; -extern rtx floattidf_libfunc; - -extern rtx floatsixf_libfunc; -extern rtx floatdixf_libfunc; -extern rtx floattixf_libfunc; - -extern rtx floatsitf_libfunc; -extern rtx floatditf_libfunc; -extern rtx floattitf_libfunc; - -extern rtx fixsfsi_libfunc; -extern rtx fixsfdi_libfunc; -extern rtx fixsfti_libfunc; - -extern rtx fixdfsi_libfunc; -extern rtx fixdfdi_libfunc; -extern rtx fixdfti_libfunc; - -extern rtx fixxfsi_libfunc; -extern rtx fixxfdi_libfunc; -extern rtx fixxfti_libfunc; - -extern rtx fixtfsi_libfunc; -extern rtx fixtfdi_libfunc; -extern rtx fixtfti_libfunc; - -extern rtx fixunssfsi_libfunc; -extern rtx fixunssfdi_libfunc; -extern rtx fixunssfti_libfunc; - -extern rtx fixunsdfsi_libfunc; -extern rtx fixunsdfdi_libfunc; -extern rtx fixunsdfti_libfunc; - -extern rtx fixunsxfsi_libfunc; -extern rtx fixunsxfdi_libfunc; -extern rtx fixunsxfti_libfunc; - -extern rtx fixunstfsi_libfunc; -extern rtx fixunstfdi_libfunc; -extern rtx fixunstfti_libfunc; - -/* For check-memory-usage. */ -extern rtx chkr_check_addr_libfunc; -extern rtx chkr_set_right_libfunc; -extern rtx chkr_copy_bitmap_libfunc; -extern rtx chkr_check_exec_libfunc; -extern rtx chkr_check_str_libfunc; - -/* For instrument-functions. */ -extern rtx profile_function_entry_libfunc; -extern rtx profile_function_exit_libfunc; +extern rtx libfunc_table[LTI_MAX]; + +/* Accessor macros for libfunc_table. */ +#define extendsfdf2_libfunc (libfunc_table[LTI_extendsfdf2]) +#define extendsfxf2_libfunc (libfunc_table[LTI_extendsfxf2]) +#define extendsftf2_libfunc (libfunc_table[LTI_extendsftf2]) +#define extenddfxf2_libfunc (libfunc_table[LTI_extenddfxf2]) +#define extenddftf2_libfunc (libfunc_table[LTI_extenddftf2]) + +#define truncdfsf2_libfunc (libfunc_table[LTI_truncdfsf2]) +#define truncxfsf2_libfunc (libfunc_table[LTI_truncxfsf2]) +#define trunctfsf2_libfunc (libfunc_table[LTI_trunctfsf2]) +#define truncxfdf2_libfunc (libfunc_table[LTI_truncxfdf2]) +#define trunctfdf2_libfunc (libfunc_table[LTI_trunctfdf2]) + +#define memcpy_libfunc (libfunc_table[LTI_memcpy]) +#define bcopy_libfunc (libfunc_table[LTI_bcopy]) +#define memcmp_libfunc (libfunc_table[LTI_memcmp]) +#define bcmp_libfunc (libfunc_table[LTI_bcmp]) +#define memset_libfunc (libfunc_table[LTI_memset]) +#define bzero_libfunc (libfunc_table[LTI_bzero]) + +#define throw_libfunc (libfunc_table[LTI_throw]) +#define rethrow_libfunc (libfunc_table[LTI_rethrow]) +#define sjthrow_libfunc (libfunc_table[LTI_sjthrow]) +#define sjpopnthrow_libfunc (libfunc_table[LTI_sjpopnthrow]) +#define terminate_libfunc (libfunc_table[LTI_terminate]) +#define setjmp_libfunc (libfunc_table[LTI_setjmp]) +#define longjmp_libfunc (libfunc_table[LTI_longjmp]) +#define eh_rtime_match_libfunc (libfunc_table[LTI_eh_rtime_match]) + +#define eqhf2_libfunc (libfunc_table[LTI_eqhf2]) +#define nehf2_libfunc (libfunc_table[LTI_nehf2]) +#define gthf2_libfunc (libfunc_table[LTI_gthf2]) +#define gehf2_libfunc (libfunc_table[LTI_gehf2]) +#define lthf2_libfunc (libfunc_table[LTI_lthf2]) +#define lehf2_libfunc (libfunc_table[LTI_lehf2]) + +#define eqsf2_libfunc (libfunc_table[LTI_eqsf2]) +#define nesf2_libfunc (libfunc_table[LTI_nesf2]) +#define gtsf2_libfunc (libfunc_table[LTI_gtsf2]) +#define gesf2_libfunc (libfunc_table[LTI_gesf2]) +#define ltsf2_libfunc (libfunc_table[LTI_ltsf2]) +#define lesf2_libfunc (libfunc_table[LTI_lesf2]) + +#define eqdf2_libfunc (libfunc_table[LTI_eqdf2]) +#define nedf2_libfunc (libfunc_table[LTI_nedf2]) +#define gtdf2_libfunc (libfunc_table[LTI_gtdf2]) +#define gedf2_libfunc (libfunc_table[LTI_gedf2]) +#define ltdf2_libfunc (libfunc_table[LTI_ltdf2]) +#define ledf2_libfunc (libfunc_table[LTI_ledf2]) + +#define eqxf2_libfunc (libfunc_table[LTI_eqxf2]) +#define nexf2_libfunc (libfunc_table[LTI_nexf2]) +#define gtxf2_libfunc (libfunc_table[LTI_gtxf2]) +#define gexf2_libfunc (libfunc_table[LTI_gexf2]) +#define ltxf2_libfunc (libfunc_table[LTI_ltxf2]) +#define lexf2_libfunc (libfunc_table[LTI_lexf2]) + +#define eqtf2_libfunc (libfunc_table[LTI_eqtf2]) +#define netf2_libfunc (libfunc_table[LTI_netf2]) +#define gttf2_libfunc (libfunc_table[LTI_gttf2]) +#define getf2_libfunc (libfunc_table[LTI_getf2]) +#define lttf2_libfunc (libfunc_table[LTI_lttf2]) +#define letf2_libfunc (libfunc_table[LTI_letf2]) + +#define floatsisf_libfunc (libfunc_table[LTI_floatsisf]) +#define floatdisf_libfunc (libfunc_table[LTI_floatdisf]) +#define floattisf_libfunc (libfunc_table[LTI_floattisf]) + +#define floatsidf_libfunc (libfunc_table[LTI_floatsidf]) +#define floatdidf_libfunc (libfunc_table[LTI_floatdidf]) +#define floattidf_libfunc (libfunc_table[LTI_floattidf]) + +#define floatsixf_libfunc (libfunc_table[LTI_floatsixf]) +#define floatdixf_libfunc (libfunc_table[LTI_floatdixf]) +#define floattixf_libfunc (libfunc_table[LTI_floattixf]) + +#define floatsitf_libfunc (libfunc_table[LTI_floatsitf]) +#define floatditf_libfunc (libfunc_table[LTI_floatditf]) +#define floattitf_libfunc (libfunc_table[LTI_floattitf]) + +#define fixsfsi_libfunc (libfunc_table[LTI_fixsfsi]) +#define fixsfdi_libfunc (libfunc_table[LTI_fixsfdi]) +#define fixsfti_libfunc (libfunc_table[LTI_fixsfti]) + +#define fixdfsi_libfunc (libfunc_table[LTI_fixdfsi]) +#define fixdfdi_libfunc (libfunc_table[LTI_fixdfdi]) +#define fixdfti_libfunc (libfunc_table[LTI_fixdfti]) + +#define fixxfsi_libfunc (libfunc_table[LTI_fixxfsi]) +#define fixxfdi_libfunc (libfunc_table[LTI_fixxfdi]) +#define fixxfti_libfunc (libfunc_table[LTI_fixxfti]) + +#define fixtfsi_libfunc (libfunc_table[LTI_fixtfsi]) +#define fixtfdi_libfunc (libfunc_table[LTI_fixtfdi]) +#define fixtfti_libfunc (libfunc_table[LTI_fixtfti]) + +#define fixunssfsi_libfunc (libfunc_table[LTI_fixunssfsi]) +#define fixunssfdi_libfunc (libfunc_table[LTI_fixunssfdi]) +#define fixunssfti_libfunc (libfunc_table[LTI_fixunssfti]) + +#define fixunsdfsi_libfunc (libfunc_table[LTI_fixunsdfsi]) +#define fixunsdfdi_libfunc (libfunc_table[LTI_fixunsdfdi]) +#define fixunsdfti_libfunc (libfunc_table[LTI_fixunsdfti]) + +#define fixunsxfsi_libfunc (libfunc_table[LTI_fixunsxfsi]) +#define fixunsxfdi_libfunc (libfunc_table[LTI_fixunsxfdi]) +#define fixunsxfti_libfunc (libfunc_table[LTI_fixunsxfti]) + +#define fixunstfsi_libfunc (libfunc_table[LTI_fixunstfsi]) +#define fixunstfdi_libfunc (libfunc_table[LTI_fixunstfdi]) +#define fixunstfti_libfunc (libfunc_table[LTI_fixunstfti]) + +#define chkr_check_addr_libfunc (libfunc_table[LTI_chkr_check_addr]) +#define chkr_set_right_libfunc (libfunc_table[LTI_chkr_set_right]) +#define chkr_copy_bitmap_libfunc (libfunc_table[LTI_chkr_copy_bitmap]) +#define chkr_check_exec_libfunc (libfunc_table[LTI_chkr_check_exec]) +#define chkr_check_str_libfunc (libfunc_table[LTI_chkr_check_str]) + +#define profile_function_entry_libfunc (libfunc_table[LTI_profile_function_entry]) +#define profile_function_exit_libfunc (libfunc_table[LTI_profile_function_exit]) typedef rtx (*rtxfun) PROTO ((rtx)); diff --git a/gcc/optabs.c b/gcc/optabs.c index 82bfc6a..ae6a6ff 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -45,50 +45,9 @@ Boston, MA 02111-1307, USA. */ See expr.h for documentation of these optabs. */ -optab add_optab; -optab sub_optab; -optab smul_optab; -optab smul_highpart_optab; -optab umul_highpart_optab; -optab smul_widen_optab; -optab umul_widen_optab; -optab sdiv_optab; -optab sdivmod_optab; -optab udiv_optab; -optab udivmod_optab; -optab smod_optab; -optab umod_optab; -optab flodiv_optab; -optab ftrunc_optab; -optab and_optab; -optab ior_optab; -optab xor_optab; -optab ashl_optab; -optab lshr_optab; -optab ashr_optab; -optab rotl_optab; -optab rotr_optab; -optab smin_optab; -optab smax_optab; -optab umin_optab; -optab umax_optab; - -optab mov_optab; -optab movstrict_optab; - -optab neg_optab; -optab abs_optab; -optab one_cmpl_optab; -optab ffs_optab; -optab sqrt_optab; -optab sin_optab; -optab cos_optab; - -optab cmp_optab; -optab ucmp_optab; /* Used only for libcalls for unsigned comparisons. */ -optab tst_optab; - -optab strlen_optab; +optab optab_table[OTI_MAX]; + +rtx libfunc_table[LTI_MAX]; /* Tables of patterns for extending one integer mode to another. */ enum insn_code extendtab[MAX_MACHINE_MODE][MAX_MACHINE_MODE][2]; @@ -101,129 +60,6 @@ enum insn_code floattab[NUM_MACHINE_MODES][NUM_MACHINE_MODES][2]; /* Contains the optab used for each rtx code. */ optab code_to_optab[NUM_RTX_CODE + 1]; -/* SYMBOL_REF rtx's for the library functions that are called - implicitly and not via optabs. */ - -rtx extendsfdf2_libfunc; -rtx extendsfxf2_libfunc; -rtx extendsftf2_libfunc; -rtx extenddfxf2_libfunc; -rtx extenddftf2_libfunc; - -rtx truncdfsf2_libfunc; -rtx truncxfsf2_libfunc; -rtx trunctfsf2_libfunc; -rtx truncxfdf2_libfunc; -rtx trunctfdf2_libfunc; - -rtx memcpy_libfunc; -rtx bcopy_libfunc; -rtx memcmp_libfunc; -rtx bcmp_libfunc; -rtx memset_libfunc; -rtx bzero_libfunc; - -rtx throw_libfunc; -rtx rethrow_libfunc; -rtx sjthrow_libfunc; -rtx sjpopnthrow_libfunc; -rtx terminate_libfunc; -rtx setjmp_libfunc; -rtx longjmp_libfunc; -rtx eh_rtime_match_libfunc; - -rtx eqhf2_libfunc; -rtx nehf2_libfunc; -rtx gthf2_libfunc; -rtx gehf2_libfunc; -rtx lthf2_libfunc; -rtx lehf2_libfunc; - -rtx eqsf2_libfunc; -rtx nesf2_libfunc; -rtx gtsf2_libfunc; -rtx gesf2_libfunc; -rtx ltsf2_libfunc; -rtx lesf2_libfunc; - -rtx eqdf2_libfunc; -rtx nedf2_libfunc; -rtx gtdf2_libfunc; -rtx gedf2_libfunc; -rtx ltdf2_libfunc; -rtx ledf2_libfunc; - -rtx eqxf2_libfunc; -rtx nexf2_libfunc; -rtx gtxf2_libfunc; -rtx gexf2_libfunc; -rtx ltxf2_libfunc; -rtx lexf2_libfunc; - -rtx eqtf2_libfunc; -rtx netf2_libfunc; -rtx gttf2_libfunc; -rtx getf2_libfunc; -rtx lttf2_libfunc; -rtx letf2_libfunc; - -rtx floatsisf_libfunc; -rtx floatdisf_libfunc; -rtx floattisf_libfunc; - -rtx floatsidf_libfunc; -rtx floatdidf_libfunc; -rtx floattidf_libfunc; - -rtx floatsixf_libfunc; -rtx floatdixf_libfunc; -rtx floattixf_libfunc; - -rtx floatsitf_libfunc; -rtx floatditf_libfunc; -rtx floattitf_libfunc; - -rtx fixsfsi_libfunc; -rtx fixsfdi_libfunc; -rtx fixsfti_libfunc; - -rtx fixdfsi_libfunc; -rtx fixdfdi_libfunc; -rtx fixdfti_libfunc; - -rtx fixxfsi_libfunc; -rtx fixxfdi_libfunc; -rtx fixxfti_libfunc; - -rtx fixtfsi_libfunc; -rtx fixtfdi_libfunc; -rtx fixtfti_libfunc; - -rtx fixunssfsi_libfunc; -rtx fixunssfdi_libfunc; -rtx fixunssfti_libfunc; - -rtx fixunsdfsi_libfunc; -rtx fixunsdfdi_libfunc; -rtx fixunsdfti_libfunc; - -rtx fixunsxfsi_libfunc; -rtx fixunsxfdi_libfunc; -rtx fixunsxfti_libfunc; - -rtx fixunstfsi_libfunc; -rtx fixunstfdi_libfunc; -rtx fixunstfti_libfunc; - -rtx chkr_check_addr_libfunc; -rtx chkr_set_right_libfunc; -rtx chkr_copy_bitmap_libfunc; -rtx chkr_check_exec_libfunc; -rtx chkr_check_str_libfunc; - -rtx profile_function_entry_libfunc; -rtx profile_function_exit_libfunc; - /* Indexed by the rtx-code for a conditional (eg. EQ, LT,...) gives the gen_function to make a branch to test that condition. */ |