osprey/kg++fe/gnu/optabs.c File Reference

#include "config.h"
#include "system.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 "gt-optabs.h"

Include dependency graph for optabs.c:

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)
static int expand_cmplxdiv_straight (rtx real0, rtx real1, rtx imag0, rtx imag1, rtx realr, rtx imagr, enum machine_mode submode, int unsignedp, enum optab_methods methods, enum mode_class class, optab binoptab)
static int expand_cmplxdiv_wide (rtx real0, rtx real1, rtx imag0, rtx imag1, rtx realr, rtx imagr, enum machine_mode submode, int unsignedp, enum optab_methods methods, enum mode_class class, optab binoptab)
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)
static rtx expand_vector_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1, rtx target, int unsignedp, enum optab_methods methods)
static rtx expand_vector_unop (enum machine_mode mode, optab unoptab, rtx op0, rtx target, int unsignedp)
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_binop (optab binoptab, rtx op0, rtx op1, rtx targ0, rtx targ1, int unsignedp)
rtx expand_simple_unop (enum machine_mode mode, enum rtx_code code, rtx op0, rtx target, int unsignedp)
rtx expand_unop (enum machine_mode mode, optab unoptab, rtx op0, rtx target, int unsignedp)
rtx expand_abs (enum machine_mode mode, rtx op0, rtx target, int result_unsignedp, int safe)
rtx expand_complex_abs (enum machine_mode mode, rtx op0, rtx target, int unsignedp)
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)
void emit_clr_insn (rtx x)
void emit_0_to_1_insn (rtx x)
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)
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 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)
static rtx ftruncify (rtx x)
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 ()
static optab init_optab (enum rtx_code code)
static optab init_optabv (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)
rtx init_one_libfunc (char *name) const
void init_optabs ()
rtx gen_cond_trap (code, rtx op1, op2, tcode)

Variables

optab optab_table [OTI_MAX]
rtx libfunc_table [LTI_MAX]
enum insn_code extendtab [MAX_MACHINE_MODE][MAX_MACHINE_MODE][2]
enum insn_code fixtab [NUM_MACHINE_MODES][NUM_MACHINE_MODES][2]
enum insn_code fixtrunctab [NUM_MACHINE_MODES][NUM_MACHINE_MODES][2]
enum insn_code floattab [NUM_MACHINE_MODES][NUM_MACHINE_MODES][2]
optab code_to_optab [NUM_RTX_CODE+1]
rtxfun bcc_gen_fctn [NUM_RTX_CODE]
enum insn_code setcc_gen_code [NUM_RTX_CODE]


Define Documentation

#define gen_conditional_trap ( a,
b   )     (abort (), NULL_RTX)

#define HAVE_conditional_trap   0


Function Documentation

int can_compare_p ( enum rtx_code  code,
enum machine_mode  mode,
enum can_compare_purpose  purpose 
)

enum insn_code can_extend_p ( enum machine_mode  to_mode,
enum machine_mode  from_mode,
int  unsignedp 
)

Definition at line 4452 of file optabs.c.

Referenced by compress_float_constant(), convert_move(), gen_extend_insn(), and init_expr_once().

static enum insn_code can_fix_p ( enum machine_mode  fixmode,
enum machine_mode  fltmode,
int  unsignedp,
int *  truncp_ptr 
) [static]

Definition at line 4486 of file optabs.c.

References CODE_FOR_nothing, fixtab, fixtrunctab, and ftrunc_optab.

Referenced by expand_fix().

static enum insn_code can_float_p ( enum machine_mode  fltmode,
enum machine_mode  fixmode,
int  unsignedp 
) [static]

Definition at line 4505 of file optabs.c.

References floattab.

Referenced by expand_float().

void emit_0_to_1_insn ( rtx  x  ) 

Definition at line 3294 of file optabs.c.

References const1_rtx, and emit_move_insn().

Referenced by expand_expr().

void emit_clr_insn ( rtx  x  ) 

Definition at line 3284 of file optabs.c.

References const0_rtx, and emit_move_insn().

Referenced by expand_expr().

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]

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 
)

void emit_indirect_jump ( rtx  loc  ) 

void emit_libcall_block ( rtx  insns,
rtx  target,
rtx  result,
rtx  equiv 
)

rtx emit_no_conflict_block ( rtx  insns,
rtx  target,
rtx  op0,
rtx  op1,
rtx  equiv 
)

void emit_unop_insn ( int  icode,
rtx  target,
rtx  op0,
enum rtx_code  code 
)

Definition at line 2927 of file optabs.c.

Referenced by compress_float_constant(), convert_move(), expand_fix(), and expand_float().

rtx expand_abs ( enum machine_mode  mode,
rtx  op0,
rtx  target,
int  result_unsignedp,
int  safe 
)

rtx expand_binop ( enum machine_mode  mode,
optab  binoptab,
rtx  op0,
rtx  op1,
rtx  target,
int  unsignedp,
enum optab_methods  methods 
)

Definition at line 680 of file optabs.c.

Referenced by adjust_stack(), allocate_dynamic_stack_space(), alpha_emit_set_const_1(), alpha_expand_block_clear(), alpha_expand_block_move(), alpha_expand_unaligned_load(), alpha_expand_unaligned_load_words(), alpha_expand_unaligned_store(), alpha_expand_unaligned_store_words(), alpha_initialize_trampoline(), anti_adjust_stack(), cris_expand_pic_call_address(), do_jump_by_parts_equality_rtx(), do_jump_by_parts_zero_rtx(), do_store_flag(), emit_case_bit_tests(), emit_group_load(), emit_group_store(), emit_move_insn_1(), emit_push_insn(), emit_store_flag(), expand_abs(), expand_abs_nojump(), expand_absneg_bit(), expand_and(), expand_binop(), expand_builtin_mathfn_2(), expand_builtin_next_arg(), expand_builtin_signbit(), expand_cmplxdiv_straight(), expand_cmplxdiv_wide(), expand_complex_abs(), expand_copysign(), expand_copysign_absneg(), expand_copysign_bit(), expand_dec(), expand_divmod(), expand_doubleword_mult(), expand_expr(), expand_expr_real_1(), expand_fix(), expand_float(), expand_inc(), expand_increment(), expand_mult(), expand_mult_highpart(), expand_mult_highpart_optab(), expand_parity(), expand_powi(), expand_sdiv_pow2(), expand_shift(), expand_simple_binop(), expand_smod_pow2(), expand_subword_shift(), expand_unop(), expand_vector_binop(), expand_vector_unop(), extract_fixed_bit_field(), extract_split_bit_field(), gen_conditional_move(), hppa_builtin_saveregs(), ia64_expand_fetch_and_op(), ia64_expand_op_and_fetch(), ix86_expand_branch(), ix86_expand_int_movcc(), ix86_expand_strlensi_unroll_1(), mips_zero_if_equal(), mn10300_builtin_saveregs(), noce_emit_move_insn(), noce_try_sign_mask(), optimize_bitfield_assignment_op(), prepare_move_operands(), probe_stack_range(), push_block(), round_push(), rs6000_emit_sync(), rs6000_expand_compare_and_swapqhi(), s390_expand_clrmem(), s390_expand_cmpmem(), s390_expand_movmem(), s390_expand_setmem(), sign_expand_binop(), simplify_expand_binop(), sparc_initialize_trampoline(), store_expr(), store_fixed_bit_field(), widen_clz(), x86_initialize_trampoline(), and xstormy16_expand_casesi().

static int expand_cmplxdiv_straight ( rtx  real0,
rtx  real1,
rtx  imag0,
rtx  imag1,
rtx  realr,
rtx  imagr,
enum machine_mode  submode,
int  unsignedp,
enum optab_methods  methods,
enum mode_class  class,
optab  binoptab 
) [static]

static int expand_cmplxdiv_wide ( rtx  real0,
rtx  real1,
rtx  imag0,
rtx  imag1,
rtx  realr,
rtx  imagr,
enum machine_mode  submode,
int  unsignedp,
enum optab_methods  methods,
enum mode_class  class,
optab  binoptab 
) [static]

rtx expand_complex_abs ( enum machine_mode  mode,
rtx  op0,
rtx  target,
int  unsignedp 
)

void expand_fix ( rtx  to,
rtx  from,
int  unsignedp 
)

void expand_float ( rtx  to,
rtx  from,
int  unsignedp 
)

rtx expand_simple_binop ( enum machine_mode  mode,
enum rtx_code  code,
rtx  op0,
rtx  op1,
rtx  target,
int  unsignedp,
enum optab_methods  methods 
)

Definition at line 653 of file optabs.c.

Referenced by alpha_expand_compare_and_swap_12(), alpha_expand_lock_test_and_set_12(), alpha_expand_unaligned_load(), alpha_expand_unaligned_store(), alpha_legitimize_address(), emit_block_move_via_loop(), emit_case_nodes(), emit_move_resolve_push(), emit_unrolled_add(), expand_builtin_apply(), expand_expr_addr_expr_1(), expand_main_function(), expand_sync_fetch_operation(), expand_sync_operation(), extract_force_align_mem_bit_field(), final_giv_value(), force_operand(), gen_edge_profiler(), gen_mod_pow2(), gen_mod_subtract(), gen_tablejump(), get_unaligned_offset(), ia64_expand_atomic_op(), ia64_expand_move(), ia64_expand_tls_address(), init_alignment_context(), instantiate_virtual_regs_in_insn(), ix86_expand_int_movcc(), ix86_expand_move(), ix86_expand_push(), ix86_expand_vector_init_duplicate(), ix86_expand_vector_init_general(), ix86_expand_vector_init_one_var(), legitimize_pic_address(), m32c_expand_neg_mulpsi3(), mdx_block_move_loop(), mips_block_move_loop(), move_movables(), noce_try_addcc(), noce_try_minmax(), noce_try_store_flag_constants(), noce_try_store_flag_inc(), noce_try_store_flag_mask(), romp_initialize_trampoline(), round_trampoline_addr(), rtl_gen_const_delta_profiler(), rtl_gen_edge_profiler(), rtl_gen_interval_profiler(), rtl_gen_one_value_profiler_no_edge_manipulation(), rtl_gen_pow2_profiler(), s390_expand_addcc(), s390_expand_atomic(), s390_expand_cs_hqi(), s390_expand_mask_and_shift(), score_add_offset(), unroll_loop_runtime_iterations(), and x86_emit_floatuns().

rtx expand_simple_unop ( enum machine_mode  mode,
enum rtx_code  code,
rtx  op0,
rtx  target,
int  unsignedp 
)

int expand_twoval_binop ( optab  binoptab,
rtx  op0,
rtx  op1,
rtx  targ0,
rtx  targ1,
int  unsignedp 
)

Definition at line 2191 of file optabs.c.

Referenced by expand_divmod(), and expand_twoval_binop().

rtx expand_unop ( enum machine_mode  mode,
optab  unoptab,
rtx  op0,
rtx  target,
int  unsignedp 
)

static rtx expand_vector_binop ( enum machine_mode  mode,
optab  binoptab,
rtx  op0,
rtx  op1,
rtx  target,
int  unsignedp,
enum optab_methods  methods 
) [static]

static rtx expand_vector_unop ( enum machine_mode  mode,
optab  unoptab,
rtx  op0,
rtx  target,
int  unsignedp 
) [static]

static rtx ftruncify ( rtx  x  )  [static]

Definition at line 4780 of file optabs.c.

References expand_unop(), ftrunc_optab, gen_reg_rtx(), and GET_MODE.

Referenced by expand_fix().

rtx gen_add2_insn ( rtx  x,
rtx  y 
)

rtx gen_add3_insn ( rtx  r0,
rtx  r1,
rtx  c 
)

rtx gen_cond_trap ( code  ,
rtx  op1,
op2  ,
tcode   
)

rtx gen_extend_insn ( rtx  x,
rtx  y,
enum machine_mode  mto,
enum machine_mode  mfrom,
int  unsignedp 
)

Definition at line 4468 of file optabs.c.

Referenced by alpha_expand_unaligned_load(), and ia64_expand_atomic_op().

rtx gen_move_insn ( rtx  x,
rtx  y 
)

rtx gen_sub2_insn ( rtx  x,
rtx  y 
)

Definition at line 4309 of file optabs.c.

Referenced by inc_for_reload().

rtx gen_sub3_insn ( rtx  r0,
rtx  r1,
rtx  c 
)

static GTY ( ()   )  [static]

int have_add2_insn ( rtx  x,
rtx  y 
)

Definition at line 4282 of file optabs.c.

Referenced by reload_cse_move2add().

int have_insn_for ( enum rtx_code  code,
enum machine_mode  mode 
)

int have_sub2_insn ( rtx  x,
rtx  y 
)

Definition at line 4346 of file optabs.c.

static void init_floating_libfuncs ( optab  optable,
const char *  opname,
int  suffix 
) [static]

Definition at line 5129 of file optabs.c.

References init_libfuncs().

Referenced by init_optabs().

static void init_integral_libfuncs ( optab  optable,
const char *  opname,
int  suffix 
) [static]

Definition at line 5115 of file optabs.c.

References init_libfuncs().

Referenced by init_optabs().

static void init_libfuncs ( optab  optable,
int  first_mode,
int  last_mode,
const char *  opname,
int  suffix 
) [static]

rtx init_one_libfunc ( char *  name  )  const

static optab init_optab ( enum rtx_code  code  )  [inline, static]

Definition at line 5036 of file optabs.c.

References code_to_optab, and new_optab().

Referenced by init_optabs().

void init_optabs ( void   ) 

Definition at line 5159 of file optabs.c.

Referenced by lang_dependent_init().

static optab init_optabv ( enum rtx_code  code  )  [inline, static]

Definition at line 5048 of file optabs.c.

References new_optab().

Referenced by init_optabs().

static optab new_optab ( void   )  [static]

Definition at line 5020 of file optabs.c.

References CODE_FOR_nothing, ggc_alloc, i, and NUM_MACHINE_MODES.

Referenced by init_optab(), and init_optabv().

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]

static void prepare_float_lib_cmp ( rtx px,
rtx py,
enum rtx_code pcomparison,
enum machine_mode pmode,
int *  punsignedp 
) [static]

rtx prepare_operand ( int  icode,
rtx  x,
int  opnum,
enum machine_mode  mode,
enum machine_mode  wider_mode,
int  unsignedp 
)

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 2129 of file optabs.c.

Referenced by expand_divmod().

static rtx widen_operand ( rtx  op,
enum machine_mode  mode,
enum machine_mode  oldmode,
int  unsignedp,
int  no_extend 
) [static]


Variable Documentation

rtxfun bcc_gen_fctn[NUM_RTX_CODE]

optab code_to_optab[NUM_RTX_CODE+1]

enum insn_code extendtab[MAX_MACHINE_MODE][MAX_MACHINE_MODE][2]

Definition at line 63 of file optabs.c.

Referenced by can_extend_p(), gen_extend_insn(), init_all_optabs(), init_optabs(), and pj_output_rval().

enum insn_code fixtab[NUM_MACHINE_MODES][NUM_MACHINE_MODES][2]

Definition at line 66 of file optabs.c.

Referenced by can_fix_p(), and init_optabs().

enum insn_code fixtrunctab[NUM_MACHINE_MODES][NUM_MACHINE_MODES][2]

Definition at line 67 of file optabs.c.

Referenced by can_fix_p(), init_all_optabs(), init_optabs(), and pj_output_rval().

enum insn_code floattab[NUM_MACHINE_MODES][NUM_MACHINE_MODES][2]

Definition at line 68 of file optabs.c.

Referenced by can_float_p(), init_all_optabs(), init_optabs(), and pj_output_rval().

rtx libfunc_table[LTI_MAX]

Definition at line 60 of file optabs.c.

optab optab_table[OTI_MAX]

Definition at line 58 of file optabs.c.

enum insn_code setcc_gen_code[NUM_RTX_CODE]


Generated on Wed Apr 8 15:41:19 2009 for Open64 by  doxygen 1.5.6