#include "config.h"#include "system.h"#include "coretypes.h"#include "tm.h"#include "toplev.h"#include "insn-config.h"#include "rtl.h"#include "tree.h"#include "tm_p.h"#include "flags.h"#include "function.h"#include "except.h"#include "expr.h"#include "optabs.h"#include "libfuncs.h"#include "recog.h"#include "reload.h"#include "ggc.h"#include "real.h"#include "basic-block.h"#include "target.h"#include "gt-optabs.h"

Go to the source code of this file.
Defines | |
| #define | HAVE_conditional_trap 0 |
| #define | gen_conditional_trap(a, b) (abort (), NULL_RTX) |
Functions/Subroutines | |
| static | GTY (()) |
| static rtx | widen_operand (rtx op, enum machine_mode mode, enum machine_mode oldmode, int unsignedp, int no_extend) |
| optab | optab_for_tree_code (enum tree_code code, tree type) |
| rtx | expand_ternary_op (enum machine_mode mode, optab ternary_optab, rtx op0, rtx op1, rtx op2, rtx target, int unsignedp) |
| static rtx | simplify_expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1, rtx target, int unsignedp, enum optab_methods methods) |
| bool | force_expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1, rtx target, int unsignedp, enum optab_methods methods) |
| static bool | expand_superword_shift (optab binoptab, rtx outof_input, rtx superword_op1, rtx outof_target, rtx into_target, int unsignedp, enum optab_methods methods) |
| static bool | expand_subword_shift (enum machine_mode op1_mode, optab binoptab, rtx outof_input, rtx into_input, rtx op1, rtx outof_target, rtx into_target, int unsignedp, enum optab_methods methods, unsigned HOST_WIDE_INT shift_mask) |
| static bool | expand_doubleword_shift (enum machine_mode op1_mode, optab binoptab, rtx outof_input, rtx into_input, rtx op1, rtx outof_target, rtx into_target, int unsignedp, enum optab_methods methods, unsigned HOST_WIDE_INT shift_mask) |
| rtx | expand_simple_binop (enum machine_mode mode, enum rtx_code code, rtx op0, rtx op1, rtx target, int unsignedp, enum optab_methods methods) |
| rtx | expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1, rtx target, int unsignedp, enum optab_methods methods) |
| rtx | sign_expand_binop (enum machine_mode mode, optab uoptab, optab soptab, rtx op0, rtx op1, rtx target, int unsignedp, enum optab_methods methods) |
| int | expand_twoval_unop (optab unoptab, rtx op0, rtx targ0, rtx targ1, int unsignedp) |
| int | expand_twoval_binop (optab binoptab, rtx op0, rtx op1, rtx targ0, rtx targ1, int unsignedp) |
| bool | expand_twoval_binop_libfunc (optab binoptab, rtx op0, rtx op1, rtx targ0, rtx targ1, enum rtx_code code) |
| rtx | expand_simple_unop (enum machine_mode mode, enum rtx_code code, rtx op0, rtx target, int unsignedp) |
| static rtx | widen_clz (enum machine_mode mode, rtx op0, rtx target) |
| static rtx | expand_parity (enum machine_mode mode, rtx op0, rtx target) |
| static rtx | lowpart_subreg_maybe_copy (enum machine_mode omode, rtx val, enum machine_mode imode) |
| static rtx | expand_absneg_bit (enum rtx_code code, enum machine_mode mode, rtx op0, rtx target) |
| rtx | expand_unop (enum machine_mode mode, optab unoptab, rtx op0, rtx target, int unsignedp) |
| rtx | expand_abs_nojump (enum machine_mode mode, rtx op0, rtx target, int result_unsignedp) |
| rtx | expand_abs (enum machine_mode mode, rtx op0, rtx target, int result_unsignedp, int safe) |
| rtx | expand_copysign_absneg (enum machine_mode mode, rtx op0, rtx op1, rtx target, int bitpos, bool op0_is_abs) |
| static rtx | expand_copysign_bit (enum machine_mode mode, rtx op0, rtx op1, rtx target, int bitpos, bool op0_is_abs) |
| rtx | expand_copysign (rtx op0, rtx op1, rtx target) |
| void | emit_unop_insn (int icode, rtx target, rtx op0, enum rtx_code code) |
| rtx | emit_no_conflict_block (rtx insns, rtx target, rtx op0, rtx op1, rtx equiv) |
| void | emit_libcall_block (rtx insns, rtx target, rtx result, rtx equiv) |
| int | can_compare_p (enum rtx_code code, enum machine_mode mode, enum can_compare_purpose purpose) |
| static void | prepare_cmp_insn (rtx *px, rtx *py, enum rtx_code *pcomparison, rtx size, enum machine_mode *pmode, int *punsignedp, enum can_compare_purpose purpose) |
| static rtx | prepare_operand (int icode, rtx x, int opnum, enum machine_mode mode, enum machine_mode wider_mode, int unsignedp) |
| static void | emit_cmp_and_jump_insn_1 (rtx x, rtx y, enum machine_mode mode, enum rtx_code comparison, int unsignedp, rtx label) |
| void | emit_cmp_and_jump_insns (rtx x, rtx y, enum rtx_code comparison, rtx size, enum machine_mode mode, int unsignedp, rtx label) |
| void | emit_cmp_insn (rtx x, rtx y, enum rtx_code comparison, rtx size, enum machine_mode mode, int unsignedp) |
| static void | prepare_float_lib_cmp (rtx *px, rtx *py, enum rtx_code *pcomparison, enum machine_mode *pmode, int *punsignedp) |
| void | emit_indirect_jump (rtx loc) |
| rtx | emit_conditional_add (rtx target, enum rtx_code code, rtx op0, rtx op1, enum machine_mode cmode, rtx op2, rtx op3, enum machine_mode mode, int unsignedp) |
| rtx | gen_add2_insn (rtx x, rtx y) |
| rtx | gen_add3_insn (rtx r0, rtx r1, rtx c) |
| int | have_add2_insn (rtx x, rtx y) |
| rtx | gen_sub2_insn (rtx x, rtx y) |
| rtx | gen_sub3_insn (rtx r0, rtx r1, rtx c) |
| int | have_sub2_insn (rtx x, rtx y) |
| rtx | gen_move_insn (rtx x, rtx y) |
| enum insn_code | can_extend_p (enum machine_mode to_mode, enum machine_mode from_mode, int unsignedp) |
| rtx | gen_extend_insn (rtx x, rtx y, enum machine_mode mto, enum machine_mode mfrom, int unsignedp) |
| static enum insn_code | can_fix_p (enum machine_mode fixmode, enum machine_mode fltmode, int unsignedp, int *truncp_ptr) |
| static enum insn_code | can_float_p (enum machine_mode fltmode, enum machine_mode fixmode, int unsignedp) |
| void | expand_float (rtx to, rtx from, int unsignedp) |
| void | expand_fix (rtx to, rtx from, int unsignedp) |
| int | have_insn_for (enum rtx_code code, enum machine_mode mode) |
| static optab | new_optab (void) |
| static convert_optab | new_convert_optab (void) |
| static optab | init_optab (enum rtx_code code) |
| static optab | init_optabv (enum rtx_code code) |
| static convert_optab | init_convert_optab (enum rtx_code code) |
| static void | init_libfuncs (optab optable, int first_mode, int last_mode, const char *opname, int suffix) |
| static void | init_integral_libfuncs (optab optable, const char *opname, int suffix) |
| static void | init_floating_libfuncs (optab optable, const char *opname, int suffix) |
| static void | init_interclass_conv_libfuncs (convert_optab tab, const char *opname, enum mode_class from_class, enum mode_class to_class) |
| static void | init_intraclass_conv_libfuncs (convert_optab tab, const char *opname, enum mode_class class, bool widening) |
| rtx | init_one_libfunc (const char *name) |
| void | set_optab_libfunc (optab optable, enum machine_mode mode, const char *name) |
| void | set_conv_libfunc (convert_optab optable, enum machine_mode tmode, enum machine_mode fmode, const char *name) |
| void | init_optabs (void) |
| rtx | gen_cond_trap (enum rtx_code code ATTRIBUTE_UNUSED, rtx op1, rtx op2 ATTRIBUTE_UNUSED, rtx tcode ATTRIBUTE_UNUSED) |
| static enum rtx_code | get_rtx_code (enum tree_code tcode, bool unsignedp) |
| static rtx | vector_compare_rtx (tree cond, bool unsignedp, enum insn_code icode) |
| static enum insn_code | get_vcond_icode (tree expr, enum machine_mode mode) |
| bool | expand_vec_cond_expr_p (tree expr, enum machine_mode vmode) |
| rtx | expand_vec_cond_expr (tree vec_cond_expr, rtx target) |
Variables | |
| optab | optab_table [OTI_MAX] |
| rtx | libfunc_table [LTI_MAX] |
| convert_optab | convert_optab_table [CTI_MAX] |
| optab | code_to_optab [NUM_RTX_CODE+1] |
| rtxfun | bcc_gen_fctn [NUM_RTX_CODE] |
| enum insn_code | setcc_gen_code [NUM_RTX_CODE] |
| enum insn_code | vcond_gen_code [NUM_MACHINE_MODES] |
| enum insn_code | vcondu_gen_code [NUM_MACHINE_MODES] |
| #define HAVE_conditional_trap 0 |
| int can_compare_p | ( | enum rtx_code | code, | |
| enum machine_mode | mode, | |||
| enum can_compare_purpose | purpose | |||
| ) |
Definition at line 3255 of file optabs.c.
References bcc_gen_fctn, cbranch_optab, ccp_cmov, ccp_jump, ccp_store_flag, cmov_optab, cmp_optab, CODE_FOR_nothing, cstore_optab, GET_MODE_WIDER_MODE, NULL, and setcc_gen_code.
| enum insn_code can_extend_p | ( | enum machine_mode | to_mode, | |
| enum machine_mode | from_mode, | |||
| int | unsignedp | |||
| ) |
Definition at line 4160 of file optabs.c.
References CODE_FOR_ptr_extend, sext_optab, tab, and zext_optab.
| static enum insn_code can_fix_p | ( | enum machine_mode | fixmode, | |
| enum machine_mode | fltmode, | |||
| int | unsignedp, | |||
| int * | truncp_ptr | |||
| ) | [static] |
Definition at line 4194 of file optabs.c.
References CODE_FOR_nothing, ftrunc_optab, sfix_optab, sfixtrunc_optab, tab, ufix_optab, and ufixtrunc_optab.
| static enum insn_code can_float_p | ( | enum machine_mode | fltmode, | |
| enum machine_mode | fixmode, | |||
| int | unsignedp | |||
| ) | [static] |
| static void emit_cmp_and_jump_insn_1 | ( | rtx | x, | |
| rtx | y, | |||
| enum machine_mode | mode, | |||
| enum rtx_code | comparison, | |||
| int | unsignedp, | |||
| rtx | label | |||
| ) | [static] |
Definition at line 3502 of file optabs.c.
References abort, bcc_gen_fctn, cbranch_optab, cmp_optab, CODE_FOR_nothing, CONST0_RTX, emit_insn(), emit_jump_insn(), GEN_FCN, gen_rtx_fmt_ee(), GET_MODE_CLASS, GET_MODE_WIDER_MODE, MODE_COMPLEX_FLOAT, MODE_FLOAT, MODE_INT, prepare_operand(), PUT_MODE, and tst_optab.
| void emit_cmp_and_jump_insns | ( | rtx | x, | |
| rtx | y, | |||
| enum rtx_code | comparison, | |||
| rtx | size, | |||
| enum machine_mode | mode, | |||
| int | unsignedp, | |||
| rtx | label | |||
| ) |
Definition at line 3582 of file optabs.c.
References abort, ccp_jump, CONSTANT_P, emit_cmp_and_jump_insn_1(), force_reg(), prepare_cmp_insn(), swap_commutative_operands_p(), swap_condition(), and unsigned_condition().
| rtx emit_conditional_add | ( | rtx | target, | |
| enum rtx_code | code, | |||
| rtx | op0, | |||
| rtx | op1, | |||
| enum machine_mode | cmode, | |||
| rtx | op2, | |||
| rtx | op3, | |||
| enum machine_mode | mode, | |||
| int | unsignedp | |||
| ) |
Definition at line 3753 of file optabs.c.
References CODE_FOR_indirect_jump, copy_to_mode_reg(), emit_barrier(), emit_jump_insn(), gen_indirect_jump(), and Pmode.
Definition at line 3101 of file optabs.c.
References add_insn(), CALL_P, CODE_FOR_nothing, constm1_rtx, control_flow_insn_p(), copy_rtx(), emit_move_insn(), find_reg_note(), first, FIRST_PSEUDO_REGISTER, flag_non_call_exceptions, gen_reg_rtx(), gen_rtx_EXPR_LIST, gen_rtx_INSN_LIST, get_insns(), get_last_insn(), GET_MODE, insn, INSN_P, INTVAL, LABEL_P, last, may_trap_p(), modified_between_p(), modified_in_p(), mov_optab, next, NEXT_INSN, NULL, NULL_RTX, PATTERN, prev, PREV_INSN, REG_EH_REGION, REG_EQUAL, REG_LIBCALL, reg_mentioned_p(), REG_NOTES, REG_P, REG_RETVAL, reg_used_between_p(), REG_USERVAR_P, REGNO, remove_note(), SET_DEST, SET_SRC, set_unique_reg_note(), single_set, and XEXP.
Definition at line 2964 of file optabs.c.
References abort, add_insn(), CODE_FOR_nothing, emit_insn(), emit_move_insn(), find_reg_note(), first, gen_rtx_CLOBBER, gen_rtx_EXPR_LIST, gen_rtx_INSN_LIST, GET_CODE, get_insns(), get_last_insn(), GET_MODE, i, insn, last, mov_optab, next, NEXT_INSN, NONJUMP_INSN_P, NULL, NULL_RTX, PATTERN, prev, PREV_INSN, REG_EQUAL, REG_LIBCALL, REG_NO_CONFLICT, REG_NOTES, reg_overlap_mentioned_p(), REG_P, REG_RETVAL, reload_in_progress, remove_note(), SET, SET_DEST, set_unique_reg_note(), USE, XVECEXP, and XVECLEN.
Definition at line 2901 of file optabs.c.
References copy_to_mode_reg(), emit_insn(), emit_move_insn(), flag_force_mem, force_not_mem(), GEN_FCN, gen_reg_rtx(), GET_MODE, INSN_P, MEM_P, NEXT_INSN, NULL_RTX, SIGN_EXTEND, and UNKNOWN.
| rtx expand_abs | ( | enum machine_mode | mode, | |
| rtx | op0, | |||
| rtx | target, | |||
| int | result_unsignedp, | |||
| int | safe | |||
| ) |
Definition at line 2610 of file optabs.c.
References can_compare_p(), ccp_jump, CONST0_RTX, const0_rtx, do_compare_rtx_and_jump(), do_jump_by_parts_greater_rtx(), emit_label(), emit_move_insn(), expand_abs_nojump(), expand_unop(), FIRST_PSEUDO_REGISTER, flag_trapv, GE, gen_label_rtx(), gen_reg_rtx(), GET_MODE, GET_MODE_CLASS, MEM_P, MEM_VOLATILE_P, MODE_INT, neg_optab, negv_optab, NO_DEFER_POP, NULL_RTX, OK_DEFER_POP, REG_P, and REGNO.
| rtx expand_abs_nojump | ( | enum machine_mode | mode, | |
| rtx | op0, | |||
| rtx | target, | |||
| int | result_unsignedp | |||
| ) |
| static rtx expand_absneg_bit | ( | enum rtx_code | code, | |
| enum machine_mode | mode, | |||
| rtx | op0, | |||
| rtx | target | |||
| ) | [static] |
Definition at line 2155 of file optabs.c.
References ABS, and_optab, bitpos(), BITS_PER_WORD, copy_rtx(), emit_move_insn(), emit_no_conflict_block(), end_sequence(), expand_binop(), FLOAT_WORDS_BIG_ENDIAN, gen_lowpart, gen_reg_rtx(), gen_rtx_fmt_e(), get_insns(), get_last_insn(), GET_MODE_BITSIZE, GET_MODE_SIZE, real_format::has_signed_zero, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, i, immed_double_const(), insns, int_mode_for_mode(), lo, lowpart_subreg_maybe_copy(), NULL, NULL_RTX, operand_subword(), operand_subword_force(), OPTAB_LIB_WIDEN, REAL_MODE_FORMAT, REG_EQUAL, set_unique_reg_note(), real_format::signbit, start_sequence(), UNITS_PER_WORD, word_mode, and xor_optab.
Referenced by expand_abs_nojump(), and expand_unop().
| rtx expand_binop | ( | enum machine_mode | mode, | |
| optab | binoptab, | |||
| rtx | op0, | |||
| rtx | op1, | |||
| rtx | target, | |||
| int | unsignedp, | |||
| enum optab_methods | methods | |||
| ) |
Definition at line 786 of file optabs.c.
References add_optab, and_optab, ashl_optab, ashr_optab, BITS_PER_WORD, CODE_FOR_nothing, CONST0_RTX, const0_rtx, CONSTANT_P, convert_modes(), convert_move(), convert_to_mode(), copy_rtx(), copy_to_mode_reg(), COSTS_N_INSNS, delete_insns_since(), emit_insn(), emit_libcall_block(), emit_library_call_value(), emit_move_insn(), emit_no_conflict_block(), emit_store_flag_force(), end_sequence(), expand_binop(), expand_doubleword_shift(), flag_force_mem, force_not_mem(), force_reg(), GEN_FCN, GEN_INT, gen_lowpart, gen_reg_rtx(), gen_rtx_CLOBBER, gen_rtx_fmt_ee(), GET_CODE, get_insns(), get_last_insn(), GET_MODE, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_SIZE, GET_MODE_WIDER_MODE, GET_RTX_CLASS, GT, high, HOST_WIDE_INT, i, index(), INSN_P, insns, INTVAL, ior_optab, last, LCT_CONST, low, lshr_optab, LT, MODE_COMPLEX_FLOAT, MODE_FLOAT, MODE_INT, mov_optab, negate_rtx(), NEXT_INSN, NULL_RTX, operand_subword(), operand_subword_force(), OPTAB_DIRECT, OPTAB_LIB, OPTAB_LIB_WIDEN, OPTAB_MUST_WIDEN, OPTAB_WIDEN, optimize, optimize_size, REG_EQUAL, REG_P, ROTATE, rotl_optab, rotr_optab, RTX_COMM_ARITH, rtx_cost(), rtx_equal_p(), set_unique_reg_note(), shift_count, shift_op(), gcc_target::shift_truncation_mask, smul_highpart_optab, smul_optab, smul_widen_optab, start_sequence(), STORE_FLAG_VALUE, sub_optab, targetm, tmp, umul_highpart_optab, umul_widen_optab, UNITS_PER_WORD, UNKNOWN, volatile_refs_p(), widen_operand(), word_mode, WORDS_BIG_ENDIAN, x, and xor_optab.
| rtx expand_copysign_absneg | ( | enum machine_mode | mode, | |
| rtx | op0, | |||
| rtx | op1, | |||
| rtx | target, | |||
| int | bitpos, | |||
| bool | op0_is_abs | |||
| ) |
Definition at line 2666 of file optabs.c.
References abs_optab, and_optab, BITS_PER_WORD, const0_rtx, copy_to_reg(), emit_cmp_and_jump_insns(), emit_label(), emit_move_insn(), EQ, expand_binop(), expand_unop(), FLOAT_WORDS_BIG_ENDIAN, gen_label_rtx(), gen_lowpart, GET_CODE, GET_MODE_BITSIZE, GET_MODE_SIZE, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, immed_double_const(), int_mode_for_mode(), lo, neg_optab, NULL, NULL_RTX, operand_subword_force(), OPTAB_LIB_WIDEN, simplify_unary_operation(), UNITS_PER_WORD, and word_mode.
Referenced by expand_copysign().
| static rtx expand_copysign_bit | ( | enum machine_mode | mode, | |
| rtx | op0, | |||
| rtx | op1, | |||
| rtx | target, | |||
| int | bitpos, | |||
| bool | op0_is_abs | |||
| ) | [static] |
Definition at line 2746 of file optabs.c.
References and_optab, BITS_PER_WORD, emit_move_insn(), emit_no_conflict_block(), end_sequence(), expand_binop(), FLOAT_WORDS_BIG_ENDIAN, gen_lowpart, gen_reg_rtx(), get_insns(), GET_MODE_BITSIZE, GET_MODE_SIZE, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, i, immed_double_const(), insns, int_mode_for_mode(), ior_optab, lo, lowpart_subreg_maybe_copy(), NULL_RTX, operand_subword(), operand_subword_force(), OPTAB_LIB_WIDEN, start_sequence(), UNITS_PER_WORD, and word_mode.
Referenced by expand_copysign().
| static bool expand_doubleword_shift | ( | enum machine_mode | op1_mode, | |
| optab | binoptab, | |||
| rtx | outof_input, | |||
| rtx | into_input, | |||
| rtx | op1, | |||
| rtx | outof_target, | |||
| rtx | into_target, | |||
| int | unsignedp, | |||
| enum optab_methods | methods, | |||
| unsigned HOST_WIDE_INT | shift_mask | |||
| ) | [static] |
Definition at line 642 of file optabs.c.
References and_optab, BITS_PER_WORD, CONST0_RTX, const0_rtx, CONSTANT_P, delete_insns_since(), do_compare_rtx_and_jump(), emit_barrier(), emit_jump_insn(), emit_label(), EQ, expand_subword_shift(), expand_superword_shift(), force_expand_binop(), gen_jump(), gen_label_rtx(), GET_CODE, get_last_insn(), immed_double_const(), LT, simplify_expand_binop(), simplify_relational_operation(), start, sub_optab, tmp, and word_mode.
Referenced by expand_binop(), and expand_doubleword_shift().
Definition at line 4443 of file optabs.c.
References abort, can_fix_p(), CODE_FOR_nothing, CONST_DOUBLE_FROM_REAL_VALUE, convert_move(), convert_to_mode(), copy_rtx(), do_pending_stack_adjust(), emit_barrier(), emit_cmp_and_jump_insns(), emit_jump_insn(), emit_label(), emit_libcall_block(), emit_library_call_value(), emit_move_insn(), emit_unop_insn(), end_sequence(), expand_binop(), expand_fix(), expand_unop(), FIX, flag_force_mem, force_not_mem(), ftrunc_optab, GE, gen_int_mode(), gen_jump(), gen_label_rtx(), gen_reg_rtx(), gen_rtx_fmt_e(), get_insns(), GET_MODE, GET_MODE_BITSIZE, GET_MODE_SIZE, GET_MODE_WIDER_MODE, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, insns, LCT_CONST, mov_optab, NULL_RTX, offset, OPTAB_LIB_WIDEN, real_2expN(), REAL_VALUE_TYPE, REG_EQUAL, set_unique_reg_note(), sfix_optab, start_sequence(), sub_optab, tab, ufix_optab, and xor_optab.
Definition at line 4241 of file optabs.c.
References abort, add_optab, and_optab, can_float_p(), CODE_FOR_nothing, const0_rtx, const1_rtx, CONST_DOUBLE_FROM_REAL_VALUE, convert_move(), convert_to_mode(), do_pending_stack_adjust(), emit_barrier(), emit_cmp_and_jump_insns(), emit_jump_insn(), emit_label(), emit_libcall_block(), emit_library_call_value(), emit_move_insn(), emit_unop_insn(), end_sequence(), expand_binop(), expand_float(), expand_shift(), FIRST_PSEUDO_REGISTER, flag_force_mem, FLOAT, force_not_mem(), GE, gen_jump(), gen_label_rtx(), gen_reg_rtx(), gen_rtx_FLOAT, get_insns(), GET_MODE, GET_MODE_BITSIZE, GET_MODE_SIZE, GET_MODE_WIDER_MODE, insns, integer_one_node, ior_optab, LCT_CONST, LT, NULL_RTX, offset, OPTAB_LIB_WIDEN, real_2expN(), REAL_VALUE_TYPE, REG_P, REGNO, sfloat_optab, significand_size(), start_sequence(), tab, and ufloat_optab.
| static rtx expand_parity | ( | enum machine_mode | mode, | |
| rtx | op0, | |||
| rtx | target | |||
| ) | [static] |
Definition at line 2097 of file optabs.c.
References and_optab, CODE_FOR_nothing, const1_rtx, delete_insns_since(), expand_binop(), expand_unop(), gen_reg_rtx(), get_last_insn(), GET_MODE_CLASS, GET_MODE_WIDER_MODE, last, MODE_COMPLEX_FLOAT, MODE_FLOAT, MODE_INT, NULL_RTX, OPTAB_DIRECT, popcount_optab, and widen_operand().
Referenced by expand_unop().
| rtx expand_simple_binop | ( | enum machine_mode | mode, | |
| enum rtx_code | code, | |||
| rtx | op0, | |||
| rtx | op1, | |||
| rtx | target, | |||
| int | unsignedp, | |||
| enum optab_methods | methods | |||
| ) |
| rtx expand_simple_unop | ( | enum machine_mode | mode, | |
| enum rtx_code | code, | |||
| rtx | op0, | |||
| rtx | target, | |||
| int | unsignedp | |||
| ) |
| static bool expand_subword_shift | ( | enum machine_mode | op1_mode, | |
| optab | binoptab, | |||
| rtx | outof_input, | |||
| rtx | into_input, | |||
| rtx | op1, | |||
| rtx | outof_target, | |||
| rtx | into_target, | |||
| int | unsignedp, | |||
| enum optab_methods | methods, | |||
| unsigned HOST_WIDE_INT | shift_mask | |||
| ) | [static] |
Definition at line 477 of file optabs.c.
References ashl_optab, BITS_PER_WORD, const1_rtx, CONSTANT_P, expand_binop(), force_expand_binop(), immed_double_const(), ior_optab, lshr_optab, simplify_expand_binop(), sub_optab, tmp, word_mode, and xor_optab.
Referenced by expand_doubleword_shift().
| static bool expand_superword_shift | ( | optab | binoptab, | |
| rtx | outof_input, | |||
| rtx | superword_op1, | |||
| rtx | outof_target, | |||
| rtx | into_target, | |||
| int | unsignedp, | |||
| enum optab_methods | methods | |||
| ) | [static] |
Definition at line 448 of file optabs.c.
References ashr_optab, BITS_PER_WORD, CONST0_RTX, emit_move_insn(), force_expand_binop(), GEN_INT, and word_mode.
Referenced by expand_doubleword_shift().
Definition at line 1873 of file optabs.c.
References abort, CODE_FOR_nothing, CONSTANT_P, convert_modes(), convert_move(), copy_to_mode_reg(), COSTS_N_INSNS, delete_insns_since(), emit_insn(), expand_twoval_binop(), flag_force_mem, force_not_mem(), force_reg(), GEN_FCN, gen_reg_rtx(), get_last_insn(), GET_MODE, GET_MODE_CLASS, GET_MODE_WIDER_MODE, last, mode, MODE_COMPLEX_FLOAT, MODE_FLOAT, MODE_INT, optimize, rtx_cost(), and t1.
Definition at line 1777 of file optabs.c.
Referenced by expand_builtin_mathfn_3(), expand_builtin_sincos(), and expand_twoval_unop().
| rtx expand_unop | ( | enum machine_mode | mode, | |
| optab | unoptab, | |||
| rtx | op0, | |||
| rtx | target, | |||
| int | unsignedp | |||
| ) |
Definition at line 2268 of file optabs.c.
References BITS_PER_WORD, clz_optab, CODE_FOR_nothing, CONST0_RTX, convert_move(), convert_to_mode(), copy_rtx(), copy_to_mode_reg(), ctz_optab, delete_insns_since(), emit_insn(), emit_libcall_block(), emit_library_call_value(), emit_move_insn(), emit_no_conflict_block(), end_sequence(), expand_absneg_bit(), expand_binop(), expand_parity(), expand_unop(), ffs_optab, flag_force_mem, force_not_mem(), GEN_FCN, GEN_INT, gen_lowpart, gen_reg_rtx(), gen_rtx_fmt_e(), get_insns(), get_last_insn(), GET_MODE, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_SIZE, GET_MODE_WIDER_MODE, hard_libcall_value(), HONOR_SIGNED_ZEROS, i, INSN_P, insns, integer_type_node, last, LCT_CONST, MODE_COMPLEX_FLOAT, MODE_FLOAT, MODE_INT, neg_optab, negv_optab, NEXT_INSN, NULL_RTX, one_cmpl_optab, operand_subword(), operand_subword_force(), OPTAB_DIRECT, OPTAB_LIB_WIDEN, parity_optab, popcount_optab, start_sequence(), sub_optab, subv_optab, TYPE_MODE, UNITS_PER_WORD, widen_clz(), widen_operand(), word_mode, and x.
| bool expand_vec_cond_expr_p | ( | tree | expr, | |
| enum machine_mode | vmode | |||
| ) |
| bool force_expand_binop | ( | enum machine_mode | mode, | |
| optab | binoptab, | |||
| rtx | op0, | |||
| rtx | op1, | |||
| rtx | target, | |||
| int | unsignedp, | |||
| enum optab_methods | methods | |||
| ) |
Definition at line 428 of file optabs.c.
Referenced by expand_doubleword_shift(), expand_subword_shift(), expand_superword_shift(), and shift_return_value().
| rtx gen_cond_trap | ( | enum rtx_code code | ATTRIBUTE_UNUSED, | |
| rtx | op1, | |||
| rtx op2 | ATTRIBUTE_UNUSED, | |||
| rtx tcode | ATTRIBUTE_UNUSED | |||
| ) |
Definition at line 5263 of file optabs.c.
References cmp_optab, CODE_FOR_nothing, emit_insn(), end_sequence(), gen_conditional_trap, GEN_FCN, get_insns(), GET_MODE, HAVE_conditional_trap, prepare_operand(), PUT_CODE, and start_sequence().
| rtx gen_extend_insn | ( | rtx | x, | |
| rtx | y, | |||
| enum machine_mode | mto, | |||
| enum machine_mode | mfrom, | |||
| int | unsignedp | |||
| ) |
Definition at line 4144 of file optabs.c.
References emit_move_insn_1(), end_sequence(), get_insns(), and start_sequence().
| static enum insn_code get_vcond_icode | ( | tree | expr, | |
| enum machine_mode | mode | |||
| ) | [inline, static] |
Definition at line 5403 of file optabs.c.
References CODE_FOR_nothing, TREE_TYPE, TYPE_UNSIGNED, vcond_gen_code, and vcondu_gen_code.
Referenced by expand_vec_cond_expr(), and expand_vec_cond_expr_p().
| static GTY | ( | () | ) | [static] |
Definition at line 96 of file optabs.c.
References abort, copy_rtx(), gen_rtx_fmt_e(), gen_rtx_fmt_ee(), GET_CODE, GET_MODE, GET_RTX_CLASS, insn, INSN_P, last_insn, NEXT_INSN, NULL_RTX, PREV_INSN, REG_EQUAL, reg_overlap_mentioned_p(), reg_set_p(), RTX_BIN_ARITH, RTX_COMM_ARITH, RTX_COMM_COMPARE, RTX_COMPARE, rtx_equal_p(), RTX_UNARY, SET_DEST, set_unique_reg_note(), single_set, and XEXP.
| int have_insn_for | ( | enum rtx_code | code, | |
| enum machine_mode | mode | |||
| ) |
| static convert_optab init_convert_optab | ( | enum rtx_code | code | ) | [inline, static] |
Definition at line 4684 of file optabs.c.
References new_convert_optab().
Referenced by init_optabs().
Definition at line 4745 of file optabs.c.
References BITS_PER_WORD, init_libfuncs(), LONG_LONG_TYPE_SIZE, mode_for_size(), MODE_INT, and word_mode.
| static void init_interclass_conv_libfuncs | ( | convert_optab | tab, | |
| const char * | opname, | |||
| enum mode_class | from_class, | |||
| enum mode_class | to_class | |||
| ) | [static] |
Definition at line 4772 of file optabs.c.
References alloca, GET_CLASS_NARROWEST_MODE, GET_MODE_NAME, GET_MODE_WIDER_MODE, ggc_alloc_string(), init_one_libfunc(), MAX, memcpy, p, q, strlen(), and TOLOWER.
Referenced by init_optabs().
| static void init_intraclass_conv_libfuncs | ( | convert_optab | tab, | |
| const char * | opname, | |||
| enum mode_class | class, | |||
| bool | widening | |||
| ) | [static] |
Definition at line 4831 of file optabs.c.
References alloca, GET_CLASS_NARROWEST_MODE, GET_MODE_NAME, GET_MODE_WIDER_MODE, ggc_alloc_string(), init_one_libfunc(), MAX, memcpy, p, q, strlen(), and TOLOWER.
Referenced by init_optabs().
| static void init_libfuncs | ( | optab | optable, | |
| int | first_mode, | |||
| int | last_mode, | |||
| const char * | opname, | |||
| int | suffix | |||
| ) | [static] |
Definition at line 4709 of file optabs.c.
References alloca, GET_MODE_NAME, ggc_alloc_string(), init_one_libfunc(), p, q, strlen(), and TOLOWER.
Definition at line 4931 of file optabs.c.
References abort_libfunc, ABS, abs_optab, absv_optab, acos_optab, add_optab, addcc_optab, addv_optab, AND, and_optab, ashl_optab, ashr_optab, asin_optab, atan2_optab, atan_optab, btrunc_optab, cbranch_optab, ceil_optab, clrmem_optab, clz_optab, cmov_optab, cmp_optab, cmpmem_optab, cmpstr_optab, CODE_FOR_nothing, COMPARE, complex_double_type_node, copysign_optab, cos_optab, cstore_optab, ctz_optab, DIV, drem_optab, EQ, eq_optab, exp10_optab, exp2_optab, exp_optab, expm1_optab, ffs_optab, FIX, FLOAT, floor_optab, fmod_optab, ftrunc_optab, gcov_flush_libfunc, GE, ge_optab, gen_rtx_fmt_ee(), GT, gt_optab, HAVE_conditional_trap, i, ilogb_optab, init_all_optabs(), init_convert_optab(), init_floating_libfuncs(), init_integral_libfuncs(), init_interclass_conv_libfuncs(), init_intraclass_conv_libfuncs(), gcc_target::init_libfuncs, init_one_libfunc(), init_optab(), init_optabv(), INT_TYPE_SIZE, ior_optab, ldexp_optab, LE, le_optab, log10_optab, log1p_optab, log2_optab, log_optab, logb_optab, longjmp_libfunc, lshr_optab, LT, lt_optab, memcmp_libfunc, memcpy_libfunc, memmove_libfunc, memset_libfunc, MINUS, MOD, MODE_FLOAT, mode_for_size(), MODE_INT, mov_optab, movmem_optab, movmisalign_optab, movstrict_optab, NE, ne_optab, nearbyint_optab, neg_optab, negv_optab, NOT, NULL_RTX, NUM_MACHINE_MODES, NUM_RTX_CODE, one_cmpl_optab, parity_optab, PLUS, popcount_optab, pow_optab, powi_optab, profile_function_entry_libfunc, profile_function_exit_libfunc, push_optab, reload_in_optab, reload_out_optab, rint_optab, ROTATE, rotl_optab, rotr_optab, round_optab, sdiv_optab, sdivmod_optab, sdivv_optab, SET, setbits_libfunc, setcc_gen_code, setjmp_libfunc, sext_optab, sfix_optab, sfixtrunc_optab, sfloat_optab, SIGN_EXTEND, sin_optab, sincos_optab, smax_optab, smin_optab, smod_optab, smul_highpart_optab, smul_optab, smul_widen_optab, smulv_optab, sqrt_optab, strlen_optab, sub_optab, subv_optab, tan_optab, targetm, trunc_optab, TRUNCATE, tst_optab, TYPE_MODE, ucmp_optab, udiv_optab, udivmod_optab, ufix_optab, ufixtrunc_optab, ufloat_optab, umax_optab, umin_optab, umod_optab, umul_highpart_optab, umul_widen_optab, UNKNOWN, unord_optab, unwind_resume_libfunc, unwind_sjlj_register_libfunc, unwind_sjlj_unregister_libfunc, USING_SJLJ_EXCEPTIONS, vcond_gen_code, vcondu_gen_code, vec_extract_optab, vec_init_optab, vec_realign_load_optab, vec_set_optab, XOR, xor_optab, and zext_optab.
| static rtx lowpart_subreg_maybe_copy | ( | enum machine_mode | omode, | |
| rtx | val, | |||
| enum machine_mode | imode | |||
| ) | [static] |
Definition at line 2137 of file optabs.c.
References force_reg(), gcc_assert, lowpart_subreg(), NULL, and ret.
Referenced by expand_absneg_bit(), and expand_copysign_bit().
| static convert_optab new_convert_optab | ( | void | ) | [static] |
Definition at line 4648 of file optabs.c.
References CODE_FOR_nothing, ggc_alloc, i, and NUM_MACHINE_MODES.
Referenced by init_convert_optab().
Definition at line 4634 of file optabs.c.
References CODE_FOR_nothing, ggc_alloc, i, and NUM_MACHINE_MODES.
Definition at line 248 of file optabs.c.
Referenced by expand_expr_real_1(), expand_vector_operations_1(), expand_widen_pattern_expr(), vect_create_epilog_for_reduction(), vect_pattern_recog_1(), vectorizable_operation(), and vectorizable_reduction().
| static void prepare_cmp_insn | ( | rtx * | px, | |
| rtx * | py, | |||
| enum rtx_code * | pcomparison, | |||
| rtx | size, | |||
| enum machine_mode * | pmode, | |||
| int * | punsignedp, | |||
| enum can_compare_purpose | purpose | |||
| ) | [static] |
Definition at line 3303 of file optabs.c.
References abort, BITS_PER_UNIT, can_compare_p(), cmp_optab, cmpmem_optab, cmpstr_optab, CODE_FOR_nothing, COMPARE, const0_rtx, const1_rtx, CONSTANT_P, convert_to_mode(), COSTS_N_INSNS, emit_insn(), emit_library_call_value(), flag_force_mem, flag_non_call_exceptions, force_not_mem(), force_reg(), GEN_FCN, GEN_INT, gen_reg_rtx(), GET_CLASS_NARROWEST_MODE, GET_CODE, GET_MODE, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_WIDER_MODE, integer_type_node, INTVAL, LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK, may_trap_p(), MEM_ALIGN, memcmp_libfunc, MIN, mode, MODE_FLOAT, MODE_INT, NULL_RTX, optimize, Pmode, prepare_float_lib_cmp(), result, rtx_cost(), rtx_equal_p(), sizetype, TARGET_LIB_INT_CMP_BIASED, TYPE_MODE, TYPE_UNSIGNED, ucmp_optab, volatile_refs_p(), word_mode, x, XEXP, and is::y.
| static void prepare_float_lib_cmp | ( | rtx * | px, | |
| rtx * | py, | |||
| enum rtx_code * | pcomparison, | |||
| enum machine_mode * | pmode, | |||
| int * | punsignedp | |||
| ) | [static] |
Definition at line 3628 of file optabs.c.
References abort, code_to_optab, const0_rtx, const1_rtx, constm1_rtx, convert_to_mode(), emit_libcall_block(), emit_library_call_value(), end_sequence(), EQ, false_rtx, FLOAT_LIB_COMPARE_RETURNS_BOOL, GE, gen_reg_rtx(), get_insns(), GET_MODE, GET_MODE_WIDER_MODE, GT, insns, LCT_CONST, LE, LT, mode, NE, NULL_RTX, reverse_condition_maybe_unordered(), simplify_gen_relational(), simplify_gen_ternary(), start_sequence(), swap_condition(), target, tmp, true_rtx, word_mode, x, and is::y.
| static rtx prepare_operand | ( | int | icode, | |
| rtx | x, | |||
| int | opnum, | |||
| enum machine_mode | mode, | |||
| enum machine_mode | wider_mode, | |||
| int | unsignedp | |||
| ) | [static] |
Definition at line 3479 of file optabs.c.
References convert_modes(), copy_to_mode_reg(), no_new_pseudos, and NULL_RTX.
| void set_conv_libfunc | ( | convert_optab | optable, | |
| enum machine_mode | tmode, | |||
| enum machine_mode | fmode, | |||
| const char * | name | |||
| ) |
Definition at line 4918 of file optabs.c.
Referenced by arm_init_libfuncs(), frv_init_libfuncs(), gofast_maybe_init_libfuncs(), ia64_init_libfuncs(), mips_init_libfuncs(), rs6000_init_libfuncs(), and sparc_init_libfuncs().
| void set_optab_libfunc | ( | optab | optable, | |
| enum machine_mode | mode, | |||
| const char * | name | |||
| ) |
Definition at line 4906 of file optabs.c.
Referenced by alpha_init_libfuncs(), arm_init_libfuncs(), c4x_init_libfuncs(), cris_init_libfuncs(), frv_init_libfuncs(), gofast_maybe_init_libfuncs(), h8300_init_libfuncs(), i860_init_libfuncs(), ia64_hpux_init_libfuncs(), ia64_init_libfuncs(), ia64_sysv4_init_libfuncs(), ia64_vms_init_libfuncs(), ip2k_init_libfuncs(), mips_init_libfuncs(), rs6000_init_libfuncs(), sparc_init_libfuncs(), and vax_init_libfuncs().
| rtx sign_expand_binop | ( | enum machine_mode | mode, | |
| optab | uoptab, | |||
| optab | soptab, | |||
| rtx | op0, | |||
| rtx | op1, | |||
| rtx | target, | |||
| int | unsignedp, | |||
| enum optab_methods | methods | |||
| ) |
Definition at line 1719 of file optabs.c.
References CODE_FOR_nothing, expand_binop(), OPTAB_DIRECT, OPTAB_LIB, and OPTAB_WIDEN.
| static rtx simplify_expand_binop | ( | enum machine_mode | mode, | |
| optab | binoptab, | |||
| rtx | op0, | |||
| rtx | op1, | |||
| rtx | target, | |||
| int | unsignedp, | |||
| enum optab_methods | methods | |||
| ) | [static] |
Definition at line 414 of file optabs.c.
References CONSTANT_P, expand_binop(), and simplify_gen_binary().
Referenced by expand_doubleword_shift(), expand_subword_shift(), and force_expand_binop().
Definition at line 5365 of file optabs.c.
References abort, COMPARISON_CLASS_P, expand_expr(), force_reg(), gen_rtx_fmt_ee(), GET_MODE, get_rtx_code(), NULL_RTX, rcode, TREE_CODE, TREE_OPERAND, TREE_TYPE, and TYPE_MODE.
Referenced by expand_vec_cond_expr().
| static rtx widen_clz | ( | enum machine_mode | mode, | |
| rtx | op0, | |||
| rtx | target | |||
| ) | [static] |
Definition at line 2059 of file optabs.c.
References clz_optab, CODE_FOR_nothing, delete_insns_since(), expand_binop(), expand_unop(), GEN_INT, gen_reg_rtx(), get_last_insn(), GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_WIDER_MODE, last, MODE_COMPLEX_FLOAT, MODE_FLOAT, MODE_INT, NULL_RTX, OPTAB_DIRECT, sub_optab, and widen_operand().
Referenced by expand_unop().
| static rtx widen_operand | ( | rtx | op, | |
| enum machine_mode | mode, | |||
| enum machine_mode | oldmode, | |||
| int | unsignedp, | |||
| int | no_extend | |||
| ) | [static] |
Definition at line 211 of file optabs.c.
References convert_modes(), emit_insn(), emit_move_insn(), force_reg(), gen_lowpart, gen_reg_rtx(), gen_rtx_CLOBBER, gen_rtx_SUBREG(), GET_CODE, GET_MODE, GET_MODE_SIZE, result, SUBREG_PROMOTED_UNSIGNED_P, SUBREG_PROMOTED_VAR_P, and UNITS_PER_WORD.
| rtxfun bcc_gen_fctn[NUM_RTX_CODE] |
| optab code_to_optab[NUM_RTX_CODE+1] |
| convert_optab convert_optab_table[CTI_MAX] |
| rtx libfunc_table[LTI_MAX] |
| optab optab_table[OTI_MAX] |
| enum insn_code setcc_gen_code[NUM_RTX_CODE] |
| enum insn_code vcond_gen_code[NUM_MACHINE_MODES] |
| enum insn_code vcondu_gen_code[NUM_MACHINE_MODES] |
1.5.6