osprey/kg++fe/gnu/config/ia64/ia64.c File Reference

#include "config.h"
#include "system.h"
#include "rtl.h"
#include "tree.h"
#include "regs.h"
#include "hard-reg-set.h"
#include "real.h"
#include "insn-config.h"
#include "conditions.h"
#include "output.h"
#include "insn-attr.h"
#include "flags.h"
#include "recog.h"
#include "expr.h"
#include "optabs.h"
#include "except.h"
#include "function.h"
#include "ggc.h"
#include "basic-block.h"
#include "toplev.h"
#include "sched-int.h"
#include "timevar.h"
#include "target.h"
#include "target-def.h"
#include "tm_p.h"
#include "langhooks.h"
#include "gt-ia64.h"

Include dependency graph for ia64.c:

Go to the source code of this file.

Data Types

type  ia64_frame_info
type  spill_fill_data
type  reg_write_state
type  reg_flags
type  group
type  bundle
type  ia64_packet
type  extern_func_list

Defines

#define TARGET_ATTRIBUTE_TABLE   ia64_attribute_table
#define TARGET_INIT_BUILTINS   ia64_init_builtins
#define TARGET_EXPAND_BUILTIN   ia64_expand_builtin
#define TARGET_ASM_BYTE_OP   "\tdata1\t"
#define TARGET_ASM_ALIGNED_HI_OP   "\tdata2\t"
#define TARGET_ASM_ALIGNED_SI_OP   "\tdata4\t"
#define TARGET_ASM_ALIGNED_DI_OP   "\tdata8\t"
#define TARGET_ASM_UNALIGNED_HI_OP   "\tdata2.ua\t"
#define TARGET_ASM_UNALIGNED_SI_OP   "\tdata4.ua\t"
#define TARGET_ASM_UNALIGNED_DI_OP   "\tdata8.ua\t"
#define TARGET_ASM_INTEGER   ia64_assemble_integer
#define TARGET_ASM_FUNCTION_PROLOGUE   ia64_output_function_prologue
#define TARGET_ASM_FUNCTION_END_PROLOGUE   ia64_output_function_end_prologue
#define TARGET_ASM_FUNCTION_EPILOGUE   ia64_output_function_epilogue
#define TARGET_IN_SMALL_DATA_P   ia64_in_small_data_p
#define TARGET_ENCODE_SECTION_INFO   ia64_encode_section_info
#define TARGET_STRIP_NAME_ENCODING   ia64_strip_name_encoding
#define TARGET_SCHED_ADJUST_COST   ia64_adjust_cost
#define TARGET_SCHED_ISSUE_RATE   ia64_issue_rate
#define TARGET_SCHED_VARIABLE_ISSUE   ia64_variable_issue
#define TARGET_SCHED_INIT   ia64_sched_init
#define TARGET_SCHED_FINISH   ia64_sched_finish
#define TARGET_SCHED_REORDER   ia64_sched_reorder
#define TARGET_SCHED_REORDER2   ia64_sched_reorder2
#define TARGET_ASM_OUTPUT_MI_THUNK   ia64_output_mi_thunk
#define TARGET_ASM_CAN_OUTPUT_MI_THUNK   hook_bool_tree_hwi_hwi_tree_true
#define REG_GP   (GR_REG (1))
#define REG_RP   (BR_REG (0))
#define REG_AR_CFM   (FIRST_PSEUDO_REGISTER + 1)
#define REG_VOLATILE   (FIRST_PSEUDO_REGISTER + 2)
#define AR_UNAT_BIT_0   (FIRST_PSEUDO_REGISTER + 3)
#define NUM_REGS   (AR_UNAT_BIT_0 + 64)
#define NR_BUNDLES   10
#define NR_PACKETS   (NR_BUNDLES * NR_BUNDLES)
#define def_builtin(name, type, code)   builtin_function ((name), (type), (code), BUILT_IN_MD, NULL, NULL_TREE)

Functions/Subroutines

static rtx gen_tls_get_addr PARAMS ((void))
static int find_gr_spill PARAMS ((int))
static void mark_reg_gr_used_mask PARAMS ((rtx, void *))
static void ia64_compute_frame_size PARAMS ((HOST_WIDE_INT))
static void setup_spill_pointers PARAMS ((int, rtx, HOST_WIDE_INT))
static rtx spill_restore_mem PARAMS ((rtx, HOST_WIDE_INT))
static void do_spill PARAMS ((rtx(*)(rtx, rtx, rtx), rtx, HOST_WIDE_INT, rtx))
static void do_restore PARAMS ((rtx(*)(rtx, rtx, rtx), rtx, HOST_WIDE_INT))
static rtx gen_movdi_x PARAMS ((rtx, rtx, rtx))
static enum machine_mode
hfa_element_mode 
PARAMS ((tree, int))
static void fix_range PARAMS ((const char *))
static void
emit_insn_group_barriers 
PARAMS ((FILE *, rtx))
static bool ia64_in_small_data_p PARAMS ((tree))
static rtx ia64_expand_fetch_and_op PARAMS ((optab, enum machine_mode, tree, rtx))
static rtx
ia64_expand_compare_and_swap 
PARAMS ((enum machine_mode, int, tree, rtx))
static rtx
ia64_expand_lock_test_and_set 
PARAMS ((enum machine_mode, tree, rtx))
static bool ia64_assemble_integer PARAMS ((rtx, unsigned int, int))
static void
ia64_output_function_prologue 
PARAMS ((FILE *, HOST_WIDE_INT))
static void
ia64_output_function_end_prologue 
PARAMS ((FILE *))
static int ia64_adjust_cost PARAMS ((rtx, rtx, rtx, int))
static void ia64_sched_init PARAMS ((FILE *, int, int))
static void ia64_sched_finish PARAMS ((FILE *, int))
static int
ia64_internal_sched_reorder 
PARAMS ((FILE *, int, rtx *, int *, int, int))
static int ia64_sched_reorder PARAMS ((FILE *, int, rtx *, int *, int))
static int ia64_variable_issue PARAMS ((FILE *, int, rtx, int))
static void ia64_output_mi_thunk PARAMS ((FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT, tree))
static void ia64_select_rtx_section PARAMS ((enum machine_mode, rtx, unsigned HOST_WIDE_INT))
static void
ia64_rwreloc_select_section 
PARAMS ((tree, int, unsigned HOST_WIDE_INT))
int call_operand (rtx op, enum machine_mode mode)
int sdata_symbolic_operand (rtx op, mode)
int got_symbolic_operand (rtx op, mode)
int symbolic_operand (rtx op, mode)
int tls_symbolic_operand (rtx op, mode)
int function_operand (rtx op, mode)
int setjmp_operand (rtx op, mode)
int move_operand (rtx op, enum machine_mode mode)
int gr_register_operand (rtx op, enum machine_mode mode)
int fr_register_operand (rtx op, enum machine_mode mode)
int grfr_register_operand (rtx op, enum machine_mode mode)
int gr_nonimmediate_operand (rtx op, enum machine_mode mode)
int fr_nonimmediate_operand (rtx op, enum machine_mode mode)
int grfr_nonimmediate_operand (rtx op, enum machine_mode mode)
int gr_reg_or_0_operand (rtx op, enum machine_mode mode)
int gr_reg_or_5bit_operand (rtx op, enum machine_mode mode)
int gr_reg_or_6bit_operand (rtx op, enum machine_mode mode)
int gr_reg_or_8bit_operand (rtx op, enum machine_mode mode)
int grfr_reg_or_8bit_operand (rtx op, enum machine_mode mode)
int gr_reg_or_8bit_adjusted_operand (rtx op, enum machine_mode mode)
int gr_reg_or_8bit_and_adjusted_operand (rtx op, enum machine_mode mode)
int gr_reg_or_14bit_operand (rtx op, enum machine_mode mode)
int gr_reg_or_22bit_operand (rtx op, enum machine_mode mode)
int shift_count_operand (rtx op, mode)
int shift_32bit_count_operand (rtx op, mode)
int shladd_operand (rtx op, mode)
int fetchadd_operand (rtx op, mode)
int fr_reg_or_fp01_operand (rtx op, enum machine_mode mode)
int destination_operand (rtx op, enum machine_mode mode)
int not_postinc_memory_operand (rtx op, enum machine_mode mode)
int normal_comparison_operator (rtx op, enum machine_mode mode)
int adjusted_comparison_operator (rtx op, enum machine_mode mode)
int signed_inequality_operator (rtx op, enum machine_mode mode)
int predicate_operator (rtx op, enum machine_mode mode)
int condop_operator (rtx op, enum machine_mode mode)
int ar_lc_reg_operand (rtx op, enum machine_mode mode)
int ar_ccv_reg_operand (rtx op, enum machine_mode mode)
int ar_pfs_reg_operand (rtx op, enum machine_mode mode)
int general_tfmode_operand (rtx op, enum machine_mode mode)
int destination_tfmode_operand (rtx op, enum machine_mode mode)
int tfreg_or_fp01_operand (rtx op, enum machine_mode mode)
int basereg_operand (rtx op, enum machine_mode mode)
int ia64_move_ok (rtx dst, rtx src)
int addp4_optimize_ok (rtx op1, rtx op2)
int ia64_depz_field_mask (rtx rop, rtx rshift)
void ia64_expand_load_address (rtx dest, rtx src, rtx scratch)
static GTY (())
rtx ia64_expand_move (rtx op0, rtx op1)
rtx ia64_split_timode (out, rtx in, rtx scratch)
rtx spill_tfmode_operand (rtx in, int force)
rtx ia64_expand_compare (enum rtx_code code, enum machine_mode mode)
void ia64_expand_call (rtx retval, rtx addr, nextarg, int sibcall_p)
void ia64_reload_gp ()
void ia64_split_call (rtx retval, rtx addr, rtx retaddr, rtx scratch_r, rtx scratch_b, int noreturn_p, int sibcall_p)
void emit_safe_across_calls (FILE *f)
static int find_gr_spill (int try_locals)
static int next_scratch_gr_reg ()
static void mark_reg_gr_used_mask (rtx reg, data)
static void ia64_compute_frame_size (HOST_WIDE_INT size)
HOST_WIDE_INT ia64_initial_elimination_offset (int from, int to)
static void setup_spill_pointers (int n_spills, rtx init_reg, HOST_WIDE_INT cfa_off)
static void finish_spill_pointers ()
static rtx spill_restore_mem (rtx reg, HOST_WIDE_INT cfa_off)
static void do_spill (rtx *move_fn, rtx reg, HOST_WIDE_INT cfa_off, rtx frame_reg)
static void do_restore (rtx *move_fn, rtx reg, HOST_WIDE_INT cfa_off)
static rtx gen_movdi_x (rtx dest, rtx src, offset)
static rtx gen_fr_spill_x (rtx dest, rtx src, offset)
static rtx gen_fr_restore_x (rtx dest, rtx src, offset)
void ia64_expand_prologue ()
void ia64_expand_epilogue (int sibcall_p)
int ia64_direct_return ()
int ia64_hard_regno_rename_ok (int from, int to)
static bool ia64_assemble_integer (rtx x, unsigned int size, int aligned_p)
static void ia64_output_function_prologue (FILE *file, size)
static void ia64_output_function_end_prologue (FILE *file)
static void ia64_output_function_epilogue (file, size)
int ia64_dbx_register_number (int regno)
void ia64_initialize_trampoline (rtx addr, rtx fnaddr, rtx static_chain)
void ia64_setup_incoming_varargs (CUMULATIVE_ARGS cum, int int_mode, tree type, int *pretend_size, second_time)
static enum machine_mode hfa_element_mode (tree type, int nested)
rtx ia64_function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type, int named, int incoming)
int ia64_function_arg_partial_nregs (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type, named)
void ia64_function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type, int named)
int ia64_function_arg_pass_by_reference (cum, mode, tree type, named)
rtx ia64_va_arg (tree valist, tree type)
int ia64_return_in_memory (tree valtype)
rtx ia64_function_value (tree valtype, func)
void ia64_print_operand_address (stream, address)
void ia64_print_operand (FILE *file, rtx x, int code)
int ia64_register_move_cost (enum machine_mode mode, enum reg_class from, enum reg_class to)
enum reg_class ia64_secondary_reload_class (enum reg_class class, mode, rtx x)
void ia64_asm_output_external (FILE *file, tree decl, const char *name)
static void fix_range (char *const_str) const
static struct machine_functionia64_init_machine_status ()
void ia64_override_options ()
static enum
attr_itanium_requires_unit0
ia64_safe_itanium_requires_unit0 
PARAMS ((rtx))
static enum
attr_itanium_requires_unit0 
ia64_safe_itanium_requires_unit0 (rtx insn)
static enum attr_itanium_class ia64_safe_itanium_class (rtx insn)
static enum attr_type ia64_safe_type (rtx insn)
static void rws_update PARAMS ((struct reg_write_state *, int, struct reg_flags, int))
static int rws_access_regno PARAMS ((int, struct reg_flags, int))
static int rws_access_reg PARAMS ((rtx, struct reg_flags, int))
static void update_set_flags PARAMS ((rtx, struct reg_flags *, int *, rtx *))
static int set_src_needs_barrier PARAMS ((rtx, struct reg_flags, int, rtx))
static void rws_update (struct reg_write_state *rws, int regno, struct reg_flags flags, int pred)
static int rws_access_regno (int regno, struct reg_flags flags, int pred)
static int rws_access_reg (rtx reg, struct reg_flags flags, int pred)
static void update_set_flags (rtx x, struct reg_flags *pflags, int *ppred, rtx *pcond)
static int set_src_needs_barrier (rtx x, struct reg_flags flags, int pred, rtx cond)
static int rtx_needs_barrier (rtx x, struct reg_flags flags, int pred)
static void init_insn_group_barriers ()
static int group_barrier_needed_p (rtx insn)
static int safe_group_barrier_needed_p (rtx insn)
static void emit_insn_group_barriers (FILE *dump, rtx insns)
static void emit_all_insn_group_barriers (dump, rtx insns)
static int errata_find_address_regs PARAMS ((rtx *, void *))
static int errata_find_address_regs (rtx *xp, data)
static void errata_emit_nops (rtx insn)
static void fixup_errata ()
static int itanium_split_issue PARAMS ((const struct ia64_packet *, int))
static int insn_matches_slot PARAMS ((const struct ia64_packet *, enum attr_type, int, rtx))
static void ia64_emit_insn_before PARAMS ((rtx, rtx))
static void nop_cycles_until PARAMS ((int, FILE *))
static int packet_matches_p PARAMS ((const struct ia64_packet *, int, int *))
static int find_best_insn PARAMS ((rtx *, enum attr_type *, int, const struct ia64_packet *, int))
static void find_best_packet PARAMS ((int *, const struct ia64_packet **, rtx *, enum attr_type *, int))
static int itanium_reorder PARAMS ((FILE *, rtx *, rtx *, int))
static rtx gen_nop_type PARAMS ((enum attr_type))
const char * get_bundle_name (int b)
static int itanium_split_issue (struct ia64_packet *p, int begin) const
static int ia64_issue_rate ()
static rtx ia64_single_set (rtx insn)
static int ia64_adjust_cost (rtx insn, rtx link, rtx dep_insn, int cost)
static enum attr_type *static
sched_types int 
insn_matches_slot (struct ia64_packet *p, enum attr_type itype, int slot, rtx insn) const
static void ia64_emit_insn_before (rtx insn, rtx before)
static void finish_last_head (FILE *dump, int start)
static void cycle_end_fill_slots (FILE *dump)
static void rotate_one_bundle (FILE *dump)
static void rotate_two_bundles (FILE *dump)
static void ia64_sched_init (dump, sched_verbose, int max_ready)
static int packet_matches_p (struct ia64_packet *p, int split, int *pslot) const
static int get_split (struct ia64_packet *p, int first) const
static int find_best_insn (rtx *ready, enum attr_type *types, int n_ready, const struct ia64_packet *p, int slot)
static void find_best_packet (int *pbest, const struct ia64_packet **ppacket, rtx *ready, enum attr_type *types, int n_ready)
static int itanium_reorder (FILE *dump, rtx *ready, rtx *e_ready, int may_fail)
static void dump_current_packet (FILE *dump)
static void schedule_stop (FILE *dump)
static void maybe_rotate (FILE *dump)
static void nop_cycles_until (int clock_var, FILE *dump)
static int ia64_internal_sched_reorder (dump, sched_verbose, rtx *ready, int *pn_ready, int reorder_type, int clock_var)
static int ia64_sched_reorder (FILE *dump, int sched_verbose, rtx *ready, int *pn_ready, int clock_var)
static int ia64_sched_reorder2 (dump, sched_verbose, rtx *ready, int *pn_ready, int clock_var)
static int ia64_variable_issue (FILE *dump, int sched_verbose, rtx insn, can_issue_more)
static void ia64_sched_finish (FILE *dump, int sched_verbose)
static void emit_predicate_relation_info ()
static rtx gen_nop_type (enum attr_type t)
static void ia64_emit_nops ()
void ia64_reorg (rtx insns)
int ia64_epilogue_uses (int regno)
int ia64_eh_uses (int regno)
static bool ia64_in_small_data_p (tree exp)
static void ia64_encode_section_info (tree decl, first)
static const char * ia64_strip_name_encoding (char *str) const
bool ia64_function_ok_for_sibcall (tree decl)
static void process_epilogue ()
static int process_set (FILE *asm_out_file, rtx pat)
void process_for_unwind_directive (FILE *asm_out_file, rtx insn)
void ia64_init_builtins ()
static rtx ia64_expand_fetch_and_op (optab binoptab, enum machine_mode mode, tree arglist, rtx target)
static rtx ia64_expand_op_and_fetch (optab binoptab, enum machine_mode mode, tree arglist, rtx target)
static rtx ia64_expand_compare_and_swap (enum machine_mode mode, int boolp, tree arglist, rtx target)
static rtx ia64_expand_lock_test_and_set (enum machine_mode mode, tree arglist, rtx target)
static rtx ia64_expand_lock_release (enum machine_mode mode, tree arglist, target)
rtx ia64_expand_builtin (tree exp, rtx target, subtarget, mode, ignore)
enum direction ia64_hpux_function_arg_padding (enum machine_mode mode, tree type)
static void ia64_hpux_add_extern_decl (char *name) const
void ia64_hpux_asm_file_end (FILE *file)
static void ia64_select_rtx_section (enum machine_mode mode, rtx x, unsigned HOST_WIDE_INT align)
static void ia64_rwreloc_select_section (tree exp, int reloc, unsigned HOST_WIDE_INT align)
static void ia64_rwreloc_unique_section (tree decl, int reloc)
static void ia64_rwreloc_select_rtx_section (enum machine_mode mode, rtx x, unsigned HOST_WIDE_INT align)
static unsigned int ia64_rwreloc_section_type_flags (tree decl, const char *name, int reloc)
static void ia64_output_mi_thunk (FILE *file, thunk, HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset, tree function)

Variables

int ia64_asm_output_label = 0
struct rtx_def * ia64_compare_op0
struct rtx_def * ia64_compare_op1
static const char *const ia64_reg_numbers [96]
static const char *const ia64_input_reg_names [8]
static const char *const ia64_local_reg_names [80]
static const char *const ia64_output_reg_names [8]
const char * ia64_fixed_range_string
int ia64_tls_size = 22
const char * ia64_tls_size_string
static int ia64_flag_schedule_insns2
unsigned int ia64_section_threshold
static struct ia64_frame_info current_frame_info
struct gcc_target targetm = TARGET_INITIALIZER
static int last_scratch_gr_reg
static struct spill_fill_data spill_fill_data
struct reg_write_state rws_sum [NUM_REGS]
struct reg_write_state rws_insn [NUM_REGS]
static int first_instruction
static struct group last_group [2]
static int group_idx
static struct bundle bundle [NR_BUNDLES]
static struct ia64_packet packets [NR_PACKETS]
static const char *const type_names []
int ia64_final_schedule = 0
type {
   int   first_slot
   int   cur
   struct ia64_packet *   packet
   int   split
   enum attr_type   types [6]
   rtx   insns [6]
   int   stopbit [6]
   int   last_was_stop
sched_data
static rtxsched_ready
static int prev_cycle
static int prev_first
static bool last_block
static bool need_copy_state
struct extern_func_listextern_func_head


Define Documentation

#define AR_UNAT_BIT_0   (FIRST_PSEUDO_REGISTER + 3)

Definition at line 4391 of file ia64.c.

Referenced by rtx_needs_barrier().

#define def_builtin ( name,
type,
code   )     builtin_function ((name), (type), (code), BUILT_IN_MD, NULL, NULL_TREE)

#define NR_BUNDLES   10

Definition at line 5481 of file ia64.c.

Referenced by ia64_sched_init(), and rotate_one_bundle().

#define NR_PACKETS   (NR_BUNDLES * NR_BUNDLES)

Definition at line 5519 of file ia64.c.

Referenced by find_best_packet(), ia64_sched_init(), ia64_sched_reorder2(), and schedule_stop().

#define NUM_REGS   (AR_UNAT_BIT_0 + 64)

Definition at line 4392 of file ia64.c.

#define REG_AR_CFM   (FIRST_PSEUDO_REGISTER + 1)

Definition at line 4387 of file ia64.c.

Referenced by rtx_needs_barrier().

#define REG_GP   (GR_REG (1))

Definition at line 4385 of file ia64.c.

#define REG_RP   (BR_REG (0))

Definition at line 4386 of file ia64.c.

Referenced by rtx_needs_barrier().

#define REG_VOLATILE   (FIRST_PSEUDO_REGISTER + 2)

Definition at line 4390 of file ia64.c.

Referenced by group_barrier_needed(), group_barrier_needed_p(), and rtx_needs_barrier().

#define TARGET_ASM_ALIGNED_DI_OP   "\tdata8\t"

Definition at line 243 of file ia64.c.

#define TARGET_ASM_ALIGNED_HI_OP   "\tdata2\t"

Definition at line 239 of file ia64.c.

#define TARGET_ASM_ALIGNED_SI_OP   "\tdata4\t"

Definition at line 241 of file ia64.c.

#define TARGET_ASM_BYTE_OP   "\tdata1\t"

Definition at line 237 of file ia64.c.

#define TARGET_ASM_CAN_OUTPUT_MI_THUNK   hook_bool_tree_hwi_hwi_tree_true

Definition at line 290 of file ia64.c.

#define TARGET_ASM_FUNCTION_END_PROLOGUE   ia64_output_function_end_prologue

Definition at line 256 of file ia64.c.

#define TARGET_ASM_FUNCTION_EPILOGUE   ia64_output_function_epilogue

Definition at line 258 of file ia64.c.

#define TARGET_ASM_FUNCTION_PROLOGUE   ia64_output_function_prologue

Definition at line 254 of file ia64.c.

#define TARGET_ASM_INTEGER   ia64_assemble_integer

Definition at line 251 of file ia64.c.

#define TARGET_ASM_OUTPUT_MI_THUNK   ia64_output_mi_thunk

Definition at line 288 of file ia64.c.

#define TARGET_ASM_UNALIGNED_DI_OP   "\tdata8.ua\t"

Definition at line 249 of file ia64.c.

#define TARGET_ASM_UNALIGNED_HI_OP   "\tdata2.ua\t"

Definition at line 245 of file ia64.c.

#define TARGET_ASM_UNALIGNED_SI_OP   "\tdata4.ua\t"

Definition at line 247 of file ia64.c.

#define TARGET_ATTRIBUTE_TABLE   ia64_attribute_table

Definition at line 228 of file ia64.c.

#define TARGET_ENCODE_SECTION_INFO   ia64_encode_section_info

Definition at line 263 of file ia64.c.

#define TARGET_EXPAND_BUILTIN   ia64_expand_builtin

Definition at line 234 of file ia64.c.

#define TARGET_IN_SMALL_DATA_P   ia64_in_small_data_p

Definition at line 261 of file ia64.c.

#define TARGET_INIT_BUILTINS   ia64_init_builtins

Definition at line 231 of file ia64.c.

#define TARGET_SCHED_ADJUST_COST   ia64_adjust_cost

Definition at line 268 of file ia64.c.

#define TARGET_SCHED_FINISH   ia64_sched_finish

Definition at line 276 of file ia64.c.

#define TARGET_SCHED_INIT   ia64_sched_init

Definition at line 274 of file ia64.c.

#define TARGET_SCHED_ISSUE_RATE   ia64_issue_rate

Definition at line 270 of file ia64.c.

#define TARGET_SCHED_REORDER   ia64_sched_reorder

Definition at line 278 of file ia64.c.

#define TARGET_SCHED_REORDER2   ia64_sched_reorder2

Definition at line 280 of file ia64.c.

#define TARGET_SCHED_VARIABLE_ISSUE   ia64_variable_issue

Definition at line 272 of file ia64.c.

#define TARGET_STRIP_NAME_ENCODING   ia64_strip_name_encoding

Definition at line 265 of file ia64.c.


Function Documentation

int addp4_optimize_ok ( rtx  op1,
rtx  op2 
)

Definition at line 1018 of file ia64.c.

References basereg_operand(), GET_MODE, and strcmp().

Referenced by recog_11(), and recog_4().

int adjusted_comparison_operator ( rtx  op,
enum machine_mode  mode 
)

Definition at line 851 of file ia64.c.

References GE, GET_CODE, GET_MODE, and LT.

Referenced by recog_1(), and recog_9().

int ar_ccv_reg_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 914 of file ia64.c.

References AR_CCV_REGNUM, GET_CODE, GET_MODE, REG, and REGNO.

Referenced by recog_11(), and recog_5().

int ar_lc_reg_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 901 of file ia64.c.

References AR_LC_REGNUM, GET_CODE, GET_MODE, REG, and REGNO.

Referenced by recog_5().

int ar_pfs_reg_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 926 of file ia64.c.

References AR_PFS_REGNUM, GET_CODE, GET_MODE, REG, and REGNO.

int basereg_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 978 of file ia64.c.

References GET_CODE, REG_POINTER, register_operand(), and SUBREG_REG.

Referenced by addp4_optimize_ok(), recog_11(), and recog_4().

int call_operand ( rtx  op,
enum machine_mode mode   
)

Definition at line 297 of file ia64.c.

References GET_CODE, GET_MODE, REG, and XEXP.

int condop_operator ( rtx  op,
enum machine_mode  mode 
)

Definition at line 888 of file ia64.c.

References AND, GET_CODE, GET_MODE, MINUS, PLUS, and XOR.

Referenced by recog_4(), and split_1().

static void cycle_end_fill_slots ( FILE dump  )  [static]

int destination_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 809 of file ia64.c.

References GET_CODE, MEM, nonimmediate_operand(), REG, and XEXP.

Referenced by destination_tfmode_operand(), recog_2(), recog_4(), recog_7(), and split_1().

int destination_tfmode_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 952 of file ia64.c.

References ADDRESSOF, destination_operand(), GET_CODE, MEM, and XEXP.

Referenced by recog_4(), and recog_7().

static void do_restore ( rtx move_fn,
rtx  reg,
HOST_WIDE_INT  cfa_off 
) [static]

Definition at line 2250 of file ia64.c.

References emit_insn(), GEN_INT, insn, iter, and spill_restore_mem().

Referenced by ia64_expand_epilogue().

static void do_spill ( rtx move_fn,
rtx  reg,
HOST_WIDE_INT  cfa_off,
rtx  frame_reg 
) [static]

static void dump_current_packet ( FILE dump  )  [static]

static void emit_all_insn_group_barriers ( dump  ,
rtx  insns 
) [static]

static void emit_insn_group_barriers ( FILE dump,
rtx  insns 
) [static]

static void emit_predicate_relation_info ( void   )  [static]

void emit_safe_across_calls ( FILE f  ) 

Definition at line 1579 of file ia64.c.

References call_used_regs, fprintf(), fputc(), fputs(), and PR_REG.

Referenced by ia64_file_start(), output_270(), and output_272().

static void errata_emit_nops ( rtx  insn  )  [static]

static int errata_find_address_regs ( rtx xp,
data   
) [static]

Definition at line 5343 of file ia64.c.

References GET_CODE, group::gr_reg_conditionally_set, last_group, MEM, REG, REGNO, TEST_HARD_REG_BIT, x, and XEXP.

Referenced by errata_emit_nops().

int fetchadd_operand ( rtx  op,
mode   
)

Definition at line 783 of file ia64.c.

References GET_CODE, and INTVAL.

Referenced by ia64_expand_atomic_op(), ia64_expand_fetch_and_op(), recog_11(), and recog_5().

static int find_best_insn ( rtx ready,
enum attr_type types,
int  n_ready,
const struct ia64_packet p,
int  slot 
) [static]

static void find_best_packet ( int *  pbest,
const struct ia64_packet **  ppacket,
rtx ready,
enum attr_type types,
int  n_ready 
) [static]

static int find_gr_spill ( int  try_locals  )  [static]

static void finish_last_head ( FILE dump,
int  start 
) [static]

static void finish_spill_pointers ( void   )  [static]

Definition at line 2084 of file ia64.c.

References current_frame_info.

Referenced by ia64_expand_epilogue(), and ia64_expand_prologue().

static void fix_range ( char *  const_str  )  const [static]

static void fixup_errata (  )  [static]

Definition at line 5442 of file ia64.c.

References errata_emit_nops(), get_insns(), ia64_safe_type(), insn, INSN_P, last_group, memset, NEXT_INSN, TARGET_B_STEP, and TYPE_S.

Referenced by ia64_reorg().

int fr_nonimmediate_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 597 of file ia64.c.

References FIRST_PSEUDO_REGISTER, FR_REGNO_P, GET_CODE, nonimmediate_operand(), REG, REGNO, and SUBREG_REG.

int fr_reg_or_fp01_operand ( rtx  op,
enum machine_mode  mode 
)

int fr_register_operand ( rtx  op,
enum machine_mode  mode 
)

int function_operand ( rtx  op,
mode   
)

Definition at line 437 of file ia64.c.

References GET_CODE, and SYMBOL_REF_FLAG.

Referenced by ia64_legitimate_constant_p(), recog_2(), and recog_7().

static rtx gen_fr_restore_x ( rtx  dest,
rtx  src,
offset   
) [static]

Definition at line 2284 of file ia64.c.

References gen_fr_restore().

Referenced by ia64_expand_epilogue().

static rtx gen_fr_spill_x ( rtx  dest,
rtx  src,
offset   
) [static]

Definition at line 2276 of file ia64.c.

References gen_fr_spill().

Referenced by ia64_expand_prologue().

static rtx gen_movdi_x ( rtx  dest,
rtx  src,
offset   
) [static]

Definition at line 2268 of file ia64.c.

References gen_movdi().

Referenced by ia64_expand_epilogue(), and ia64_expand_prologue().

static rtx gen_nop_type ( enum attr_type  t  )  [static]

Definition at line 6986 of file ia64.c.

References abort, gen_nop_b(), gen_nop_f(), gen_nop_i(), gen_nop_m(), gen_nop_x(), TYPE_B, TYPE_F, TYPE_I, TYPE_M, and TYPE_X.

Referenced by ia64_emit_nops(), and nop_cycles_until().

int general_tfmode_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 938 of file ia64.c.

References ADDRESSOF, general_operand(), GET_CODE, MEM, and XEXP.

Referenced by recog_4(), and recog_7().

const char* get_bundle_name ( int  b  ) 

Definition at line 5557 of file ia64.c.

References bundle::name.

Referenced by output_253(), and output_255().

static int get_split ( struct ia64_packet p,
int  first 
) const [static]

Definition at line 6131 of file ia64.c.

References itanium_split_issue().

Referenced by find_best_packet(), ia64_sched_reorder2(), and schedule_stop().

int got_symbolic_operand ( rtx  op,
mode   
)

Definition at line 343 of file ia64.c.

References CONST, GET_CODE, INTVAL, PLUS, rtx_equal_function_value_matters, TARGET_AUTO_PIC, TARGET_NO_PIC, and XEXP.

Referenced by recog_2(), and recog_8().

int gr_nonimmediate_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 577 of file ia64.c.

References FIRST_PSEUDO_REGISTER, GENERAL_REGNO_P, GET_CODE, nonimmediate_operand(), REG, REGNO, and SUBREG_REG.

Referenced by recog_2(), and recog_7().

int gr_reg_or_0_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 637 of file ia64.c.

References const0_rtx, and gr_register_operand().

Referenced by recog_1(), recog_10(), recog_11(), recog_2(), and recog_9().

int gr_reg_or_14bit_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 724 of file ia64.c.

References CONST_OK_FOR_I, GET_CODE, gr_register_operand(), and INTVAL.

Referenced by recog_11(), recog_4(), and split_2().

int gr_reg_or_22bit_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 736 of file ia64.c.

References CONST_OK_FOR_J, GET_CODE, gr_register_operand(), and INTVAL.

Referenced by recog_11(), recog_2(), recog_4(), recog_5(), recog_8(), and split_1().

int gr_reg_or_5bit_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 647 of file ia64.c.

References GET_CODE, gr_register_operand(), and INTVAL.

Referenced by recog_4(), recog_8(), and split_1().

int gr_reg_or_6bit_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 659 of file ia64.c.

References CONST_OK_FOR_M, GET_CODE, gr_register_operand(), and INTVAL.

Referenced by recog_2(), and recog_8().

int gr_reg_or_8bit_adjusted_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 696 of file ia64.c.

References CONST_OK_FOR_L, GET_CODE, gr_register_operand(), and INTVAL.

Referenced by recog_1(), and recog_9().

int gr_reg_or_8bit_and_adjusted_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 711 of file ia64.c.

References CONST_OK_FOR_K, CONST_OK_FOR_L, GET_CODE, gr_register_operand(), and INTVAL.

int gr_reg_or_8bit_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 671 of file ia64.c.

References CONST_OK_FOR_K, GET_CODE, gr_register_operand(), and INTVAL.

Referenced by recog_1(), recog_10(), recog_2(), recog_4(), recog_8(), and recog_9().

int gr_register_operand ( rtx  op,
enum machine_mode  mode 
)

int grfr_nonimmediate_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 617 of file ia64.c.

References FIRST_PSEUDO_REGISTER, FR_REGNO_P, GENERAL_REGNO_P, GET_CODE, nonimmediate_operand(), REG, REGNO, and SUBREG_REG.

Referenced by recog_2(), and recog_7().

int grfr_reg_or_8bit_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 683 of file ia64.c.

References CONST_OK_FOR_K, GET_CODE, grfr_register_operand(), and INTVAL.

Referenced by recog_2(), and recog_8().

int grfr_register_operand ( rtx  op,
enum machine_mode  mode 
)

static int group_barrier_needed_p ( rtx  insn  )  [static]

static GTY ( ()   )  [static]

Definition at line 1119 of file ia64.c.

References init_one_libfunc().

static enum machine_mode hfa_element_mode ( tree  type,
int  nested 
) [static]

static int ia64_adjust_cost ( rtx  insn,
rtx  link,
rtx  dep_insn,
int  cost 
) [static]

void ia64_asm_output_external ( FILE file,
tree  decl,
const char *  name 
)

static bool ia64_assemble_integer ( rtx  x,
unsigned int  size,
int  aligned_p 
) [static]

static void ia64_compute_frame_size ( HOST_WIDE_INT  size  )  [static]

int ia64_dbx_register_number ( int  regno  ) 

Definition at line 3112 of file ia64.c.

Referenced by ia64_output_function_prologue(), and process_set().

int ia64_depz_field_mask ( rtx  rop,
rtx  rshift 
)

Definition at line 1033 of file ia64.c.

References exact_log2, HOST_WIDE_INT, INTVAL, and shift.

Referenced by output_471(), output_475(), output_56(), output_58(), recog_2(), and recog_9().

int ia64_direct_return ( void   ) 

int ia64_eh_uses ( int  regno  ) 

Definition at line 7195 of file ia64.c.

static void ia64_emit_insn_before ( rtx  insn,
rtx  before 
) [static]

static void ia64_emit_nops (  )  [static]

static void ia64_encode_section_info ( tree  decl,
first   
) [static]

int ia64_epilogue_uses ( int  regno  ) 

Definition at line 7155 of file ia64.c.

Referenced by ia64_function_ok_for_sibcall().

rtx ia64_expand_builtin ( tree  exp,
rtx  target,
subtarget  ,
mode  ,
ignore   
)

Definition at line 8059 of file ia64.c.

References add_optab, and_optab, const0_rtx, DECL_FUNCTION_CODE, emit_insn(), gen_bsp_value(), gen_flushrs(), gen_mf(), gen_reg_rtx(), IA64_BUILTIN_ADD_AND_FETCH_DI, IA64_BUILTIN_ADD_AND_FETCH_SI, IA64_BUILTIN_AND_AND_FETCH_DI, IA64_BUILTIN_AND_AND_FETCH_SI, IA64_BUILTIN_BOOL_COMPARE_AND_SWAP_DI, IA64_BUILTIN_BOOL_COMPARE_AND_SWAP_SI, IA64_BUILTIN_BSP, IA64_BUILTIN_FETCH_AND_ADD_DI, IA64_BUILTIN_FETCH_AND_ADD_SI, IA64_BUILTIN_FETCH_AND_AND_DI, IA64_BUILTIN_FETCH_AND_AND_SI, IA64_BUILTIN_FETCH_AND_NAND_DI, IA64_BUILTIN_FETCH_AND_NAND_SI, IA64_BUILTIN_FETCH_AND_OR_DI, IA64_BUILTIN_FETCH_AND_OR_SI, IA64_BUILTIN_FETCH_AND_SUB_DI, IA64_BUILTIN_FETCH_AND_SUB_SI, IA64_BUILTIN_FETCH_AND_XOR_DI, IA64_BUILTIN_FETCH_AND_XOR_SI, IA64_BUILTIN_FLUSHRS, IA64_BUILTIN_LOCK_RELEASE_DI, IA64_BUILTIN_LOCK_RELEASE_SI, IA64_BUILTIN_LOCK_TEST_AND_SET_DI, IA64_BUILTIN_LOCK_TEST_AND_SET_SI, IA64_BUILTIN_NAND_AND_FETCH_DI, IA64_BUILTIN_NAND_AND_FETCH_SI, IA64_BUILTIN_OR_AND_FETCH_DI, IA64_BUILTIN_OR_AND_FETCH_SI, IA64_BUILTIN_SUB_AND_FETCH_DI, IA64_BUILTIN_SUB_AND_FETCH_SI, IA64_BUILTIN_SYNCHRONIZE, IA64_BUILTIN_VAL_COMPARE_AND_SWAP_DI, IA64_BUILTIN_VAL_COMPARE_AND_SWAP_SI, IA64_BUILTIN_XOR_AND_FETCH_DI, IA64_BUILTIN_XOR_AND_FETCH_SI, ia64_expand_compare_and_swap(), ia64_expand_fetch_and_op(), ia64_expand_lock_release(), ia64_expand_lock_test_and_set(), ia64_expand_op_and_fetch(), ior_optab, mode, NULL_RTX, one_cmpl_optab, register_operand(), sub_optab, TREE_OPERAND, and xor_optab.

void ia64_expand_call ( rtx  retval,
rtx  addr,
nextarg  ,
int  sibcall_p 
)

rtx ia64_expand_compare ( enum rtx_code  code,
enum machine_mode  mode 
)

static rtx ia64_expand_compare_and_swap ( enum machine_mode  mode,
int  boolp,
tree  arglist,
rtx  target 
) [static]

void ia64_expand_epilogue ( int  sibcall_p  ) 

static rtx ia64_expand_fetch_and_op ( optab  binoptab,
enum machine_mode  mode,
tree  arglist,
rtx  target 
) [static]

void ia64_expand_load_address ( rtx  dest,
rtx  src,
rtx  scratch 
)

static rtx ia64_expand_lock_release ( enum machine_mode  mode,
tree  arglist,
target   
) [static]

static rtx ia64_expand_lock_test_and_set ( enum machine_mode  mode,
tree  arglist,
rtx  target 
) [static]

rtx ia64_expand_move ( rtx  op0,
rtx  op1 
)

static rtx ia64_expand_op_and_fetch ( optab  binoptab,
enum machine_mode  mode,
tree  arglist,
rtx  target 
) [static]

void ia64_expand_prologue ( void   ) 

rtx ia64_function_arg ( CUMULATIVE_ARGS cum,
enum machine_mode  mode,
tree  type,
int  named,
int  incoming 
)

void ia64_function_arg_advance ( CUMULATIVE_ARGS cum,
enum machine_mode  mode,
tree  type,
int  named 
)

int ia64_function_arg_partial_nregs ( CUMULATIVE_ARGS cum,
enum machine_mode  mode,
tree  type,
named   
)

int ia64_function_arg_pass_by_reference ( cum  ,
mode  ,
tree  type,
named   
)

Definition at line 3589 of file ia64.c.

References TREE_CODE, and TYPE_SIZE.

bool ia64_function_ok_for_sibcall ( tree  decl  ) 

Definition at line 7344 of file ia64.c.

References gcc_target::binds_local_p.

rtx ia64_function_value ( tree  valtype,
func   
)

int ia64_hard_regno_rename_ok ( int  from,
int  to 
)

Definition at line 2940 of file ia64.c.

References current_frame_info, OUT_REG, OUT_REGNO_P, and PR_REGNO_P.

static void ia64_hpux_add_extern_decl ( char *  name  )  const [static]

void ia64_hpux_asm_file_end ( FILE file  ) 

enum direction ia64_hpux_function_arg_padding ( enum machine_mode  mode,
tree  type 
)

static bool ia64_in_small_data_p ( tree  exp  )  [static]

void ia64_init_builtins ( void   ) 

Definition at line 7658 of file ia64.c.

static struct machine_function* ia64_init_machine_status ( void   )  [static, read]

Definition at line 4292 of file ia64.c.

References ggc_alloc_cleared.

Referenced by ia64_override_options().

HOST_WIDE_INT ia64_initial_elimination_offset ( int  from,
int  to 
)

void ia64_initialize_trampoline ( rtx  addr,
rtx  fnaddr,
rtx  static_chain 
)

static int ia64_internal_sched_reorder ( dump  ,
sched_verbose  ,
rtx ready,
int *  pn_ready,
int  reorder_type,
int  clock_var 
) [static]

static int ia64_issue_rate ( void   )  [static]

Definition at line 5613 of file ia64.c.

int ia64_move_ok ( rtx  dst,
rtx  src 
)

static void ia64_output_function_end_prologue ( FILE file  )  [static]

Definition at line 3070 of file ia64.c.

References flag_exceptions, flag_unwind_tables, fputs(), and USING_SJLJ_EXCEPTIONS.

static void ia64_output_function_epilogue ( file  ,
size   
) [static]

static void ia64_output_function_prologue ( FILE file,
size   
) [static]

static void ia64_output_mi_thunk ( FILE file,
thunk  ,
HOST_WIDE_INT  delta,
HOST_WIDE_INT  vcall_offset,
tree  function 
) [static]

void ia64_override_options ( void   ) 

Definition at line 4300 of file ia64.c.

void ia64_print_operand ( FILE file,
rtx  x,
int  code 
)

void ia64_print_operand_address ( stream  ,
address   
)

Definition at line 3742 of file ia64.c.

int ia64_register_move_cost ( enum machine_mode  mode,
enum reg_class  from,
enum reg_class  to 
)

Definition at line 4010 of file ia64.c.

void ia64_reload_gp ( void   ) 

void ia64_reorg ( rtx  insns  ) 

int ia64_return_in_memory ( tree  valtype  ) 

static unsigned int ia64_rwreloc_section_type_flags ( tree  decl,
const char *  name,
int  reloc 
) [static]

Definition at line 8328 of file ia64.c.

References default_section_type_flags_1().

static void ia64_rwreloc_select_rtx_section ( enum machine_mode  mode,
rtx  x,
unsigned HOST_WIDE_INT  align 
) [static]

Definition at line 8316 of file ia64.c.

References flag_pic, and ia64_select_rtx_section().

static void ia64_rwreloc_select_section ( tree  exp,
int  reloc,
unsigned HOST_WIDE_INT  align 
) [static]

Definition at line 8299 of file ia64.c.

References default_elf_select_section_1().

static void ia64_rwreloc_unique_section ( tree  decl,
int  reloc 
) [static]

Definition at line 8308 of file ia64.c.

References default_unique_section_1().

static enum attr_itanium_class ia64_safe_itanium_class ( rtx  insn  )  [static]

static enum attr_itanium_requires_unit0 ia64_safe_itanium_requires_unit0 ( rtx  insn  )  [static]

static enum attr_type ia64_safe_type ( rtx  insn  )  [static]

static void ia64_sched_finish ( FILE dump,
int  sched_verbose 
) [static]

Definition at line 6909 of file ia64.c.

References fprintf(), free(), NULL, and rotate_two_bundles().

static void ia64_sched_init ( dump  ,
sched_verbose  ,
int  max_ready 
) [static]

static int ia64_sched_reorder ( FILE dump,
int  sched_verbose,
rtx ready,
int *  pn_ready,
int  clock_var 
) [static]

Definition at line 6706 of file ia64.c.

References ia64_internal_sched_reorder().

static int ia64_sched_reorder2 ( dump  ,
sched_verbose  ,
rtx ready,
int *  pn_ready,
int  clock_var 
) [static]

enum reg_class ia64_secondary_reload_class ( enum reg_class  class,
mode  ,
rtx  x 
)

static void ia64_select_rtx_section ( enum machine_mode  mode,
rtx  x,
unsigned HOST_WIDE_INT  align 
) [static]

void ia64_setup_incoming_varargs ( CUMULATIVE_ARGS  cum,
int  int_mode,
tree  type,
int *  pretend_size,
second_time   
)

Definition at line 3171 of file ia64.c.

References cfun, ia64_function_arg_advance(), MAX_ARGUMENT_SLOTS, n, and UNITS_PER_WORD.

static rtx ia64_single_set ( rtx  insn  )  [static]

void ia64_split_call ( rtx  retval,
rtx  addr,
rtx  retaddr,
rtx  scratch_r,
rtx  scratch_b,
int  noreturn_p,
int  sibcall_p 
)

rtx ia64_split_timode ( out  ,
rtx  in,
rtx  scratch 
)

static const char* ia64_strip_name_encoding ( char *  str  )  const [static]

Definition at line 7330 of file ia64.c.

References ENCODE_SECTION_INFO_CHAR.

rtx ia64_va_arg ( tree  valist,
tree  type 
)

static int ia64_variable_issue ( FILE dump,
int  sched_verbose,
rtx  insn,
can_issue_more   
) [static]

static void init_insn_group_barriers ( void   )  [static]

static enum attr_type* static sched_types int insn_matches_slot ( struct ia64_packet p,
enum attr_type  itype,
int  slot,
rtx  insn 
) const [static]

static int itanium_reorder ( FILE dump,
rtx ready,
rtx e_ready,
int  may_fail 
) [static]

static int itanium_split_issue ( struct ia64_packet p,
int  begin 
) const [static]

Definition at line 5567 of file ia64.c.

References i, max, memset, split, ia64_packet::t, TYPE_B, TYPE_F, TYPE_I, TYPE_L, TYPE_M, TYPE_S, and TYPE_X.

Referenced by get_split(), ia64_sched_init(), itanium_reorder(), and nop_cycles_until().

static void mark_reg_gr_used_mask ( rtx  reg,
data   
) [static]

Definition at line 1693 of file ia64.c.

References current_frame_info, GET_MODE, HARD_REGNO_NREGS, i, n, and REGNO.

Referenced by ia64_compute_frame_size().

static void maybe_rotate ( FILE dump  )  [static]

int move_operand ( rtx  op,
enum machine_mode  mode 
)

static int next_scratch_gr_reg ( void   )  [static]

static void nop_cycles_until ( int  clock_var,
FILE dump 
) [static]

int normal_comparison_operator ( rtx  op,
enum machine_mode  mode 
)

Definition at line 837 of file ia64.c.

References EQ, GET_CODE, GET_MODE, GT, LE, and NE.

Referenced by recog_1(), and recog_9().

int not_postinc_memory_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 825 of file ia64.c.

References GET_CODE, GET_RTX_CLASS, memory_operand(), and XEXP.

Referenced by recog_11(), and recog_5().

static int packet_matches_p ( struct ia64_packet p,
int  split,
int *  pslot 
) const [static]

Definition at line 6086 of file ia64.c.

References first, i, insn_matches_slot(), and sched_data.

Referenced by find_best_packet(), ia64_sched_reorder2(), itanium_reorder(), and schedule_stop().

static rtx gen_nop_type PARAMS ( (enum attr_type  )  [static]

static int itanium_reorder PARAMS ( (FILE *, rtx *, rtx *, int)   )  [static]

static void find_best_packet PARAMS ( (int *, const struct ia64_packet **, rtx *, enum attr_type *, int)   )  [static]

static int find_best_insn PARAMS ( (rtx *, enum attr_type *, int, const struct ia64_packet *, int)   )  [static]

static int packet_matches_p PARAMS ( (const struct ia64_packet *, int, int *)   )  [static]

static void nop_cycles_until PARAMS ( (int, FILE *)   )  [static]

static void ia64_emit_insn_before PARAMS ( (rtx, rtx  )  [static]

static int insn_matches_slot PARAMS ( (const struct ia64_packet *, enum attr_type, int, rtx  )  [static]

static int itanium_split_issue PARAMS ( (const struct ia64_packet *, int)   )  [static]

static int errata_find_address_regs PARAMS ( (rtx *, void *)   )  [static]

static int set_src_needs_barrier PARAMS ( (rtx, struct reg_flags, int, rtx  )  [static]

static void update_set_flags PARAMS ( (rtx, struct reg_flags *, int *, rtx *)   )  [static]

static int rws_access_reg PARAMS ( (rtx, struct reg_flags, int)   )  [static]

static int rws_access_regno PARAMS ( (int, struct reg_flags, int)   )  [static]

static void rws_update PARAMS ( (struct reg_write_state *, int, struct reg_flags, int)   )  [static]

static enum attr_itanium_requires_unit0 ia64_safe_itanium_requires_unit0 PARAMS ( (rtx  )  [static]

static void ia64_rwreloc_select_section PARAMS ( (tree, int,unsigned HOST_WIDE_INT)   )  [static]

Definition at line 203 of file ia64.c.

References NULL.

static void ia64_select_rtx_section PARAMS ( (enum machine_mode, rtx, unsigned HOST_WIDE_INT)   )  [static]

static void ia64_output_mi_thunk PARAMS ( (FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT, tree  )  [static]

static int ia64_variable_issue PARAMS ( (FILE *, int, rtx, int)   )  [static]

static int ia64_sched_reorder PARAMS ( (FILE *, int, rtx *, int *, int)   )  [static]

static int ia64_internal_sched_reorder PARAMS ( (FILE *, int, rtx *, int *, int, int)   )  [static]

static void ia64_sched_finish PARAMS ( (FILE *, int)   )  [static]

static void ia64_sched_init PARAMS ( (FILE *, int, int)   )  [static]

static int ia64_adjust_cost PARAMS ( (rtx, rtx, rtx, int)   )  [static]

static void ia64_output_function_end_prologue PARAMS ( (FILE *)   )  [static]

static void ia64_output_function_prologue PARAMS ( (FILE *, HOST_WIDE_INT)   )  [static]

static bool ia64_assemble_integer PARAMS ( (rtx, unsigned int, int)   )  [static]

static rtx ia64_expand_lock_test_and_set PARAMS ( (enum machine_mode, tree, rtx  )  [static]

static rtx ia64_expand_compare_and_swap PARAMS ( (enum machine_mode, int, tree, rtx  )  [static]

static rtx ia64_expand_fetch_and_op PARAMS ( (optab, enum machine_mode, tree, rtx  )  [static]

static bool ia64_in_small_data_p PARAMS ( (tree  )  [static]

static void emit_insn_group_barriers PARAMS ( (FILE *, rtx  )  [static]

static void fix_range PARAMS ( (const char *)   )  [static]

Definition at line 635 of file mips-tfile.c.

static enum machine_mode hfa_element_mode PARAMS ( (tree, int)   )  [static]

static rtx gen_movdi_x PARAMS ( (rtx, rtx, rtx  )  [static]

static void do_restore PARAMS ( (rtx(*)(rtx, rtx, rtx), rtx, HOST_WIDE_INT)   )  [static]

static void do_spill PARAMS ( (rtx(*)(rtx, rtx, rtx), rtx, HOST_WIDE_INT, rtx  )  [static]

static rtx spill_restore_mem PARAMS ( (rtx, HOST_WIDE_INT)   )  [static]

static void setup_spill_pointers PARAMS ( (int, rtx, HOST_WIDE_INT)   )  [static]

static void ia64_compute_frame_size PARAMS ( (HOST_WIDE_INT)   )  [static]

static void mark_reg_gr_used_mask PARAMS ( (rtx, void *)   )  [static]

static int find_gr_spill PARAMS ( (int)   )  [static]

static rtx gen_tls_get_addr PARAMS ( (void  )  [static, read]

Definition at line 77 of file cplus-dem.c.

int predicate_operator ( rtx  op,
enum machine_mode  mode 
)

Definition at line 876 of file ia64.c.

References EQ, GET_CODE, GET_MODE, and NE.

Referenced by recog(), recog_1(), recog_10(), recog_11(), recog_2(), recog_4(), and split_1().

static void process_epilogue ( void   )  [static]

Definition at line 7365 of file ia64.c.

References asm_out_file, and fprintf().

Referenced by process_set().

void process_for_unwind_directive ( FILE asm_out_file,
rtx  insn 
)

static int process_set ( FILE asm_out_file,
rtx  pat 
) [static]

static void rotate_one_bundle ( FILE dump  )  [static]

Definition at line 5985 of file ia64.c.

References finish_last_head(), fprintf(), memmove, NR_BUNDLES, packets, and sched_data.

Referenced by ia64_sched_reorder2(), and maybe_rotate().

static void rotate_two_bundles ( FILE dump  )  [static]

Definition at line 6016 of file ia64.c.

References finish_last_head(), fprintf(), and sched_data.

Referenced by ia64_sched_finish(), ia64_variable_issue(), maybe_rotate(), and schedule_stop().

static int rtx_needs_barrier ( rtx  x,
struct reg_flags  flags,
int  pred 
) [static]

static int rws_access_reg ( rtx  reg,
struct reg_flags  flags,
int  pred 
) [static]

Definition at line 4604 of file ia64.c.

References GET_MODE, HARD_REGNO_NREGS, n, REGNO, and rws_access_regno().

Referenced by rtx_needs_barrier(), and set_src_needs_barrier().

static int rws_access_regno ( int  regno,
struct reg_flags  flags,
int  pred 
) [static]

static void rws_update ( struct reg_write_state rws,
int  regno,
struct reg_flags  flags,
int  pred 
) [static]

Definition at line 4461 of file ia64.c.

References reg_flags::is_and, reg_flags::is_fp, and reg_flags::is_or.

Referenced by rws_access_regno().

static int safe_group_barrier_needed_p ( rtx  insn  )  [static]

static void schedule_stop ( FILE dump  )  [static]

int sdata_symbolic_operand ( rtx  op,
mode   
)

static int set_src_needs_barrier ( rtx  x,
struct reg_flags  flags,
int  pred,
rtx  cond 
) [static]

Definition at line 4710 of file ia64.c.

References dst, GET_CODE, reg_flags::is_branch, pc_rtx, rtx_needs_barrier(), rws_access_reg(), SET_DEST, SET_SRC, src, and XEXP.

Referenced by rtx_needs_barrier().

int setjmp_operand ( rtx  op,
mode   
)

Definition at line 452 of file ia64.c.

References GET_CODE, strcmp(), and XSTR.

static void setup_spill_pointers ( int  n_spills,
rtx  init_reg,
HOST_WIDE_INT  cfa_off 
) [static]

int shift_32bit_count_operand ( rtx  op,
mode   
)

Definition at line 759 of file ia64.c.

References GET_CODE, and INTVAL.

Referenced by gen_rotlsi3(), recog_4(), recog_8(), and split_1().

int shift_count_operand ( rtx  op,
mode   
)

Definition at line 748 of file ia64.c.

References CONST_OK_FOR_M, GET_CODE, and INTVAL.

Referenced by gen_rotldi3(), gen_rotrdi3(), recog_2(), recog_8(), and s390_extra_constraint_str().

int shladd_operand ( rtx  op,
mode   
)

Definition at line 771 of file ia64.c.

References GET_CODE, and INTVAL.

Referenced by errata_emit_nops(), recog_10(), recog_2(), recog_4(), recog_9(), and split_1().

int signed_inequality_operator ( rtx  op,
enum machine_mode  mode 
)

Definition at line 863 of file ia64.c.

References GE, GET_CODE, GET_MODE, GT, LE, and LT.

Referenced by recog_1(), and recog_9().

static rtx spill_restore_mem ( rtx  reg,
HOST_WIDE_INT  cfa_off 
) [static]

rtx spill_tfmode_operand ( rtx  in,
int  force 
)

int symbolic_operand ( rtx  op,
mode   
)

Definition at line 388 of file ia64.c.

References CONST, and GET_CODE.

int tfreg_or_fp01_operand ( rtx  op,
enum machine_mode  mode 
)

Definition at line 966 of file ia64.c.

References fr_reg_or_fp01_operand(), and GET_CODE.

Referenced by recog_1(), recog_10(), recog_11(), recog_3(), recog_4(), recog_5(), recog_8(), and recog_9().

int tls_symbolic_operand ( rtx  op,
mode   
)

static void update_set_flags ( rtx  x,
struct reg_flags pflags,
int *  ppred,
rtx pcond 
) [static]


Variable Documentation

struct bundle bundle[NR_BUNDLES] [static]

Initial value:

{
  { 2, { TYPE_M, TYPE_I, TYPE_I }, ".mii" },
  { 1, { TYPE_M, TYPE_M, TYPE_I }, ".mmi" },
  { 0, { TYPE_M, TYPE_F, TYPE_I }, ".mfi" },
  { 0, { TYPE_M, TYPE_M, TYPE_F }, ".mmf" },

  { 0, { TYPE_B, TYPE_B, TYPE_B }, ".bbb" },
  { 0, { TYPE_M, TYPE_B, TYPE_B }, ".mbb" },

  { 0, { TYPE_M, TYPE_I, TYPE_B }, ".mib" },
  { 0, { TYPE_M, TYPE_M, TYPE_B }, ".mmb" },
  { 0, { TYPE_M, TYPE_F, TYPE_B }, ".mfb" },
  
  { 0, { TYPE_M, TYPE_L, TYPE_X }, ".mlx" }
}

Definition at line 5485 of file ia64.c.

int cur

Definition at line 5785 of file ia64.c.

Referenced by _cpp_create_trad_definition(), _cpp_scan_out_logical_line(), _cpp_skip_block_comment(), _dwarf_free_all_of_one_debug(), Access_vector_is_too_messy(), Add_Access(), Add_Bound(), Add_Helper(), REGION_UN::Add_Region(), ancestor_is_function(), ancestor_is_loop(), ancestor_is_switch(), REGION_UN::Any_Wn(), SSA_RENAME::Apply_bb_post(), SSA_RENAME::Apply_sr(), ARA_REF::ARA_REF(), bfd_mach_o_core_fetch_environment(), bfd_mach_o_scan(), bfd_mach_o_write_contents(), bfd_pef_scan(), bfd_sym_display_name_table(), build_automata(), build_vtbl_initializer(), c_parser_expr_list(), OPT_STAB::Canonicalize(), PF_LG::Check(), REGION_UN::Contains(), Contains(), REGION::Contains(), copy_pu_tree(), MU_LIST::Delete_def_at_entry_mus(), duplicate_eh_regions(), dwarf_add_file_decl(), FB_Sanity_Check(), Find_real_loops(), find_redundant_br(), SSA::Find_zero_versions(), flush_quick_stack(), frv_adjust_field_align(), ARA_LOOP_INFO::Generate_Copyout_Loop(), OPT_STAB::Generate_mu_and_chi_list(), ARA_LOOP_INFO::Generate_Parallel_Pragma(), GTY(), ARA_LOOP_INFO::Has_Matching(), HB_Tail_Duplicate(), OPT_REVISE_SSA::Insert_mu_and_chi_list_for_new_var(), Insert_Parent(), ARA_LOOP_INFO::Is_Covered(), REGION_UN::Is_Included(), lex_identifier(), lex_number(), lookup_conversions_r(), lower_bit_field_id(), PF_LG::LR_Ordering(), LINEX::Map_access_vector(), MEM_POOL_FREE(), MEM_POOL_Realloc_P(), Merge_Across_Labels(), Merge_Blocks(), ARA_LOOP_INFO::Merge_then_else(), Modified_Option(), LEAF_ITER< NODE_TYPE >::Next(), dep_order_iter< GRAPH, SUCC_ITERATOR, PRED_ITERATOR, VISITED >::operator++(), breath_first_iter< TREE, ITERATOR, never_visited< TREE > >::operator++(), parse_identifier(), parse_number(), Perform_Gather_Scatter(), BB_LIST::Pos(), SLIST_NODE::Pos(), REGION_UN::Print(), REGION_UN::Print_Analysis_Info(), OPT_STAB::Print_aux_entry(), print_exp(), print_value(), REGION::REGION(), REGION_UN::RegionUN_Projection(), BB_LIST::Remove(), BB_LIST_CONTAINER::Remove(), remove_duplicates(), scan_out_logical_line(), scan_parameters(), ARA_REF::Set_Loop_Invariant(), ARA_REF::Set_Whole_Array(), skip_macro_block_comment(), STMTREP::Stmt_order_less_or_equal(), tsi_delink(), tsi_link_after(), tsi_link_before(), tsi_split_statement_list_after(), tsi_split_statement_list_before(), verify_call_expr(), verify_class_type(), verify_compound_statement(), verify_constructor_expr(), verify_enumeral_type(), verify_field_decl(), verify_parm_decl(), verify_target_expr(), verify_try_block(), PF_LG::Volume(), ARA_LOOP_INFO::Walk_Loop(), REGION_UN::WB_Print(), WN_Copy_Frequency_Tree(), and IPO_ADDR_HASH::~IPO_ADDR_HASH().

Definition at line 145 of file ia64.c.

int first_instruction [static]

Definition at line 4432 of file ia64.c.

Definition at line 5783 of file ia64.c.

Referenced by find_best_packet(), and print_insn_xtensa().

int group_idx [static]

Definition at line 52 of file ia64.c.

Definition at line 5530 of file ia64.c.

Definition at line 96 of file ia64.c.

Referenced by ia64_override_options().

Definition at line 107 of file ia64.c.

Referenced by ia64_override_options(), and ia64_reorg().

const char* const ia64_input_reg_names[8] [static]

Initial value:

{ "in0",  "in1",  "in2",  "in3",  "in4",  "in5",  "in6",  "in7" }

Definition at line 75 of file ia64.c.

Referenced by ia64_output_function_epilogue().

const char* const ia64_local_reg_names[80] [static]

Initial value:

{ "loc0", "loc1", "loc2", "loc3", "loc4", "loc5", "loc6", "loc7",
  "loc8", "loc9", "loc10","loc11","loc12","loc13","loc14","loc15",
  "loc16","loc17","loc18","loc19","loc20","loc21","loc22","loc23",
  "loc24","loc25","loc26","loc27","loc28","loc29","loc30","loc31",
  "loc32","loc33","loc34","loc35","loc36","loc37","loc38","loc39",
  "loc40","loc41","loc42","loc43","loc44","loc45","loc46","loc47",
  "loc48","loc49","loc50","loc51","loc52","loc53","loc54","loc55",
  "loc56","loc57","loc58","loc59","loc60","loc61","loc62","loc63",
  "loc64","loc65","loc66","loc67","loc68","loc69","loc70","loc71",
  "loc72","loc73","loc74","loc75","loc76","loc77","loc78","loc79" }

Definition at line 79 of file ia64.c.

Referenced by ia64_output_function_epilogue().

const char* const ia64_output_reg_names[8] [static]

Initial value:

{ "out0", "out1", "out2", "out3", "out4", "out5", "out6", "out7" }

Definition at line 92 of file ia64.c.

Referenced by ia64_output_function_epilogue().

const char* const ia64_reg_numbers[96] [static]

Initial value:

{ "r32", "r33", "r34", "r35", "r36", "r37", "r38", "r39",
  "r40", "r41", "r42", "r43", "r44", "r45", "r46", "r47",
  "r48", "r49", "r50", "r51", "r52", "r53", "r54", "r55",
  "r56", "r57", "r58", "r59", "r60", "r61", "r62", "r63",
  "r64", "r65", "r66", "r67", "r68", "r69", "r70", "r71",
  "r72", "r73", "r74", "r75", "r76", "r77", "r78", "r79",
  "r80", "r81", "r82", "r83", "r84", "r85", "r86", "r87",
  "r88", "r89", "r90", "r91", "r92", "r93", "r94", "r95",
  "r96", "r97", "r98", "r99", "r100","r101","r102","r103",
  "r104","r105","r106","r107","r108","r109","r110","r111",
  "r112","r113","r114","r115","r116","r117","r118","r119",
  "r120","r121","r122","r123","r124","r125","r126","r127"}

Definition at line 60 of file ia64.c.

Referenced by ia64_expand_prologue(), and ia64_output_mi_thunk().

unsigned int ia64_section_threshold

int ia64_tls_size = 22

Definition at line 100 of file ia64.c.

Referenced by ia64_override_options().

const char* ia64_tls_size_string

Definition at line 103 of file ia64.c.

Referenced by ia64_override_options().

rtx insns[6]

Definition at line 5796 of file ia64.c.

Referenced by _bfd_elf_discard_section_eh_frame(), arm_call_tls_get_addr(), arm_gen_constant(), build_insn_table(), c4x_emit_libcall(), c4x_emit_libcall_mulhi(), cgraph_remove_unreachable_nodes(), commit_one_edge_insertion(), convert_from_eh_region_ranges(), convert_from_ssa(), convert_move(), cse_cc_succs(), emit_library_call_value_1(), expand_absneg_bit(), expand_binop(), expand_builtin_int_roundingfn(), expand_builtin_mathfn(), expand_builtin_mathfn_2(), expand_builtin_mathfn_3(), expand_builtin_strcat(), expand_call(), expand_complex_abs(), expand_copysign_bit(), expand_expr(), expand_fix(), expand_float(), expand_inline_function(), expand_mult_highpart_optab(), expand_nl_goto_receivers(), expand_nl_handler_label(), expand_twoval_binop_libfunc(), expand_unop(), fr30_cgen_cpu_close(), fr30_cgen_init_opcode_table(), frv_cgen_cpu_close(), frv_cgen_init_opcode_table(), frv_reorder_packet(), function_section(), ia64_expand_move(), ia64_expand_tls_address(), insert_stores(), ip2k_cgen_cpu_close(), ip2k_cgen_init_opcode_table(), iq2000_cgen_cpu_close(), iq2000_cgen_init_opcode_table(), ix86_expand_movstr(), legitimize_tls_address(), m32r_cgen_cpu_close(), m32r_cgen_init_opcode_table(), m32r_cgen_init_opinst_table(), m68hc11_emit_libcall(), main(), mmix_output_register_setting(), openrisc_cgen_cpu_close(), openrisc_cgen_init_opcode_table(), optimize_bit_field(), optimize_sibling_and_tail_recursive_calls(), output_in_line_mul(), prepare_float_lib_cmp(), purge_addressof_1(), reg_alloc(), rest_of_compilation(), rewrite_program(), sh_output_mi_thunk(), spe_func_has_64bit_regs_p(), xstormy16_cgen_cpu_close(), and xstormy16_cgen_init_opcode_table().

bool last_block [static]

struct group last_group[2] [static]

int last_scratch_gr_reg [static]

Definition at line 1665 of file ia64.c.

Definition at line 5799 of file ia64.c.

Definition at line 7360 of file ia64.c.

Definition at line 5787 of file ia64.c.

Referenced by cycle_end_fill_slots().

struct ia64_packet packets[NR_PACKETS] [static]

int prev_cycle [static]

Definition at line 6447 of file ia64.c.

int prev_first [static]

Definition at line 6451 of file ia64.c.

struct { ... } sched_data [static]

rtx* sched_ready [static]

Definition at line 5805 of file ia64.c.

Definition at line 2052 of file ia64.c.

int split

int stopbit[6]

Definition at line 5797 of file ia64.c.

struct gcc_target targetm = TARGET_INITIALIZER

Definition at line 292 of file ia64.c.

const char* const type_names[] [static]

Initial value:

{
  "UNKNOWN", "A", "I", "M", "F", "B", "L", "X", "S"
}

Definition at line 5524 of file ia64.c.

enum attr_type types[6]


Generated on Wed Apr 8 15:21:33 2009 for Open64 by  doxygen 1.5.6