osprey-gcc-4.2.0/gcc/config/rs6000/rs6000.c File Reference

#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "rtl.h"
#include "regs.h"
#include "hard-reg-set.h"
#include "real.h"
#include "insn-config.h"
#include "conditions.h"
#include "insn-attr.h"
#include "flags.h"
#include "recog.h"
#include "obstack.h"
#include "tree.h"
#include "expr.h"
#include "optabs.h"
#include "except.h"
#include "function.h"
#include "output.h"
#include "basic-block.h"
#include "integrate.h"
#include "toplev.h"
#include "ggc.h"
#include "hashtab.h"
#include "tm_p.h"
#include "target.h"
#include "target-def.h"
#include "langhooks.h"
#include "reload.h"
#include "cfglayout.h"
#include "sched-int.h"
#include "tree-gimple.h"
#include "intl.h"
#include "params.h"
#include "tm-constrs.h"
#include "gt-rs6000.h"

Include dependency graph for rs6000.c:

Go to the source code of this file.

Data Types

type  rs6000_stack
type  builtin_description
type  processor_costs
type  builtin_description_predicates

Defines

#define TARGET_NO_PROTOTYPE   0
#define min(A, B)   ((A) < (B) ? (A) : (B))
#define max(A, B)   ((A) > (B) ? (A) : (B))
#define MASK_STRICT_ALIGN   0
#define TARGET_PROFILE_KERNEL   0
#define ALTIVEC_REG_BIT(REGNO)   (0x80000000 >> ((REGNO) - FIRST_ALTIVEC_REGNO))
#define TARGET_ATTRIBUTE_TABLE   rs6000_attribute_table
#define TARGET_SET_DEFAULT_TYPE_ATTRIBUTES   rs6000_set_default_type_attributes
#define TARGET_ASM_ALIGNED_DI_OP   DOUBLE_INT_ASM_OP
#define TARGET_ASM_UNALIGNED_HI_OP   "\t.short\t"
#define TARGET_ASM_UNALIGNED_SI_OP   "\t.long\t"
#define TARGET_ASM_UNALIGNED_DI_OP   "\t.quad\t"
#define TARGET_ASM_ALIGNED_DI_OP   "\t.quad\t"
#define TARGET_ASM_INTEGER   rs6000_assemble_integer
#define TARGET_HAVE_TLS   HAVE_AS_TLS
#define TARGET_CANNOT_FORCE_CONST_MEM   rs6000_tls_referenced_p
#define TARGET_ASM_FUNCTION_PROLOGUE   rs6000_output_function_prologue
#define TARGET_ASM_FUNCTION_EPILOGUE   rs6000_output_function_epilogue
#define TARGET_SCHED_VARIABLE_ISSUE   rs6000_variable_issue
#define TARGET_SCHED_ISSUE_RATE   rs6000_issue_rate
#define TARGET_SCHED_ADJUST_COST   rs6000_adjust_cost
#define TARGET_SCHED_ADJUST_PRIORITY   rs6000_adjust_priority
#define TARGET_SCHED_IS_COSTLY_DEPENDENCE   rs6000_is_costly_dependence
#define TARGET_SCHED_FINISH   rs6000_sched_finish
#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD   rs6000_use_sched_lookahead
#define TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD   rs6000_builtin_mask_for_load
#define TARGET_INIT_BUILTINS   rs6000_init_builtins
#define TARGET_EXPAND_BUILTIN   rs6000_expand_builtin
#define TARGET_MANGLE_FUNDAMENTAL_TYPE   rs6000_mangle_fundamental_type
#define TARGET_INIT_LIBFUNCS   rs6000_init_libfuncs
#define TARGET_MS_BITFIELD_LAYOUT_P   rs6000_ms_bitfield_layout_p
#define TARGET_ASM_OUTPUT_MI_THUNK   rs6000_output_mi_thunk
#define TARGET_ASM_CAN_OUTPUT_MI_THUNK   hook_bool_tree_hwi_hwi_tree_true
#define TARGET_FUNCTION_OK_FOR_SIBCALL   rs6000_function_ok_for_sibcall
#define TARGET_INVALID_WITHIN_DOLOOP   rs6000_invalid_within_doloop
#define TARGET_RTX_COSTS   rs6000_rtx_costs
#define TARGET_ADDRESS_COST   hook_int_rtx_0
#define TARGET_VECTOR_OPAQUE_P   rs6000_is_opaque_type
#define TARGET_DWARF_REGISTER_SPAN   rs6000_dwarf_register_span
#define TARGET_PROMOTE_FUNCTION_ARGS   hook_bool_tree_true
#define TARGET_PROMOTE_FUNCTION_RETURN   hook_bool_tree_true
#define TARGET_RETURN_IN_MEMORY   rs6000_return_in_memory
#define TARGET_SETUP_INCOMING_VARARGS   setup_incoming_varargs
#define TARGET_STRICT_ARGUMENT_NAMING   hook_bool_CUMULATIVE_ARGS_true
#define TARGET_PRETEND_OUTGOING_VARARGS_NAMED   hook_bool_CUMULATIVE_ARGS_true
#define TARGET_SPLIT_COMPLEX_ARG   hook_bool_tree_true
#define TARGET_MUST_PASS_IN_STACK   rs6000_must_pass_in_stack
#define TARGET_PASS_BY_REFERENCE   rs6000_pass_by_reference
#define TARGET_ARG_PARTIAL_BYTES   rs6000_arg_partial_bytes
#define TARGET_BUILD_BUILTIN_VA_LIST   rs6000_build_builtin_va_list
#define TARGET_GIMPLIFY_VA_ARG_EXPR   rs6000_gimplify_va_arg
#define TARGET_EH_RETURN_FILTER_MODE   rs6000_eh_return_filter_mode
#define TARGET_SCALAR_MODE_SUPPORTED_P   rs6000_scalar_mode_supported_p
#define TARGET_VECTOR_MODE_SUPPORTED_P   rs6000_vector_mode_supported_p
#define TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN   invalid_arg_for_unprototyped_fn
#define TARGET_HANDLE_OPTION   rs6000_handle_option
#define TARGET_DEFAULT_TARGET_FLAGS   (TARGET_DEFAULT)
#define TARGET_STACK_PROTECT_FAIL   rs6000_stack_protect_fail
#define TARGET_RELAXED_ORDERING   true
#define TARGET_MIN_ANCHOR_OFFSET   -0x7fffffff - 1
#define TARGET_MAX_ANCHOR_OFFSET   0x7fffffff
#define TARGET_USE_BLOCKS_FOR_CONSTANT_P   rs6000_use_blocks_for_constant_p
#define RS6000_DEFAULT_LONG_DOUBLE_SIZE   64
#define SPE_CONST_OFFSET_OK(x)   (((x) & ~0xf8) == 0)
#define REG_MODE_OK_FOR_BASE_P(REGNO, MODE)   REG_OK_FOR_BASE_P (REGNO)
#define USE_FP_FOR_ARG_P(CUM, MODE, TYPE)
#define USE_ALTIVEC_FOR_ARG_P(CUM, MODE, TYPE, NAMED)
#define AGGREGATE_PADDING_FIXED   0
#define AGGREGATES_PAD_UPWARD_ALWAYS   0
#define MAX_MOVE_REG   4
#define INT_P(X)
#define INT_LOWPART(X)   (GET_CODE (X) == CONST_INT ? INTVAL (X) : CONST_DOUBLE_LOW (X))
#define SMALL_DATA_RELOC   "sda21"
#define SMALL_DATA_REG   0
#define ABI_STACK_BOUNDARY   STACK_BOUNDARY
#define TARGET_FIX_AND_CONTINUE   0
#define VTABLE_NAME_P(NAME)
#define NO_PROFILE_COUNTERS   0
#define MEM_DEREF(addr)   gen_rtx_MEM (Pmode, memory_address (Pmode, addr))
#define MEM_PLUS(addr, offset)   gen_rtx_MEM (Pmode, memory_address (Pmode, plus_constant (addr, offset)))
#define TARGET_USE_MS_BITFIELD_LAYOUT   0

Typedefs

typedef struct rs6000_stack rs6000_stack_t

Functions/Subroutines

struct machine_function GTY (())
static bool rs6000_function_ok_for_sibcall (tree, tree)
static const char * rs6000_invalid_within_doloop (rtx)
static rtx rs6000_generate_compare (enum rtx_code)
static void rs6000_maybe_dead (rtx)
static void rs6000_emit_stack_tie (void)
static void rs6000_frame_related (rtx, rtx, HOST_WIDE_INT, rtx, rtx)
static rtx spe_synthesize_frame_save (rtx)
static bool spe_func_has_64bit_regs_p (void)
static void emit_frame_save (rtx, rtx, enum machine_mode, unsigned int, int, HOST_WIDE_INT)
static rtx gen_frame_mem_offset (enum machine_mode, rtx, int)
static void rs6000_emit_allocate_stack (HOST_WIDE_INT, int)
static unsigned rs6000_hash_constant (rtx)
static unsigned toc_hash_function (const void *)
static int toc_hash_eq (const void *, const void *)
static int constant_pool_expr_1 (rtx, int *, int *)
static bool constant_pool_expr_p (rtx)
static bool legitimate_small_data_p (enum machine_mode, rtx)
static bool legitimate_indexed_address_p (rtx, int)
static bool legitimate_lo_sum_address_p (enum machine_mode, rtx, int)
static struct machine_functionrs6000_init_machine_status (void)
static bool rs6000_assemble_integer (rtx, unsigned int, int)
static bool no_global_regs_above (int)
static int rs6000_ra_ever_killed (void)
static tree rs6000_handle_longcall_attribute (tree *, tree, tree, int, bool *)
static tree rs6000_handle_altivec_attribute (tree *, tree, tree, int, bool *)
static bool rs6000_ms_bitfield_layout_p (tree)
static tree rs6000_handle_struct_attribute (tree *, tree, tree, int, bool *)
static void rs6000_eliminate_indexed_memrefs (rtx operands[2])
static const char * rs6000_mangle_fundamental_type (tree)
static void rs6000_set_default_type_attributes (tree)
static void rs6000_output_function_prologue (FILE *, HOST_WIDE_INT)
static void rs6000_output_function_epilogue (FILE *, HOST_WIDE_INT)
static void rs6000_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT, tree)
static rtx rs6000_emit_set_long_const (rtx, HOST_WIDE_INT, HOST_WIDE_INT)
static bool rs6000_return_in_memory (tree, tree)
static void rs6000_file_start (void)
static bool rs6000_use_blocks_for_constant_p (enum machine_mode, rtx)
static int rs6000_variable_issue (FILE *, int, rtx, int)
static bool rs6000_rtx_costs (rtx, int, int, int *)
static int rs6000_adjust_cost (rtx, rtx, rtx, int)
static bool is_microcoded_insn (rtx)
static int is_dispatch_slot_restricted (rtx)
static bool is_cracked_insn (rtx)
static bool is_branch_slot_insn (rtx)
static int rs6000_adjust_priority (rtx, int)
static int rs6000_issue_rate (void)
static bool rs6000_is_costly_dependence (rtx, rtx, rtx, int, int)
static rtx get_next_active_insn (rtx, rtx)
static bool insn_terminates_group_p (rtx, enum group_termination)
static bool is_costly_group (rtx *, rtx)
static int force_new_group (int, FILE *, rtx *, rtx, bool *, int, int *)
static int redefine_groups (FILE *, int, rtx, rtx)
static int pad_groups (FILE *, int, rtx, rtx)
static void rs6000_sched_finish (FILE *, int)
static int rs6000_use_sched_lookahead (void)
static tree rs6000_builtin_mask_for_load (void)
static void def_builtin (int, const char *, tree, int)
static void rs6000_init_builtins (void)
static rtx rs6000_expand_unop_builtin (enum insn_code, tree, rtx)
static rtx rs6000_expand_binop_builtin (enum insn_code, tree, rtx)
static rtx rs6000_expand_ternop_builtin (enum insn_code, tree, rtx)
static rtx rs6000_expand_builtin (tree, rtx, rtx, enum machine_mode, int)
static void altivec_init_builtins (void)
static void rs6000_common_init_builtins (void)
static void rs6000_init_libfuncs (void)
static void enable_mask_for_builtins (struct builtin_description *, int, enum rs6000_builtins, enum rs6000_builtins)
static tree build_opaque_vector_type (tree, int)
static void spe_init_builtins (void)
static rtx spe_expand_builtin (tree, rtx, bool *)
static rtx spe_expand_stv_builtin (enum insn_code, tree)
static rtx spe_expand_predicate_builtin (enum insn_code, tree, rtx)
static rtx spe_expand_evsel_builtin (enum insn_code, tree, rtx)
static int rs6000_emit_int_cmove (rtx, rtx, rtx, rtx)
static rs6000_stack_trs6000_stack_info (void)
static void debug_stack_info (rs6000_stack_t *)
static rtx altivec_expand_builtin (tree, rtx, bool *)
static rtx altivec_expand_ld_builtin (tree, rtx, bool *)
static rtx altivec_expand_st_builtin (tree, rtx, bool *)
static rtx altivec_expand_dst_builtin (tree, rtx, bool *)
static rtx altivec_expand_abs_builtin (enum insn_code, tree, rtx)
static rtx altivec_expand_predicate_builtin (enum insn_code, const char *, tree, rtx)
static rtx altivec_expand_lv_builtin (enum insn_code, tree, rtx)
static rtx altivec_expand_stv_builtin (enum insn_code, tree)
static rtx altivec_expand_vec_init_builtin (tree, tree, rtx)
static rtx altivec_expand_vec_set_builtin (tree)
static rtx altivec_expand_vec_ext_builtin (tree, rtx)
static int get_element_number (tree, tree)
static bool rs6000_handle_option (size_t, const char *, int)
static void rs6000_parse_tls_size_option (void)
static void rs6000_parse_yes_no_option (const char *, const char *, int *)
static int first_altivec_reg_to_save (void)
static unsigned int compute_vrsave_mask (void)
static void compute_save_world_info (rs6000_stack_t *info_ptr)
static void is_altivec_return_reg (rtx, void *)
static rtx generate_set_vrsave (rtx, rs6000_stack_t *, int)
int easy_vector_constant (rtx, enum machine_mode)
static bool rs6000_is_opaque_type (tree)
static rtx rs6000_dwarf_register_span (rtx)
static rtx rs6000_legitimize_tls_address (rtx, enum tls_model)
static void rs6000_output_dwarf_dtprel (FILE *, static rtx rs6000_darwin64_record_arg(CUMULATIVE_ARGS int, static rtx rs6000_emit_vector_compare(enum rtx)
static GTY ((param_is(struct toc_hash_struct)))
static int rs6000_hard_regno_mode_ok (int regno, enum machine_mode mode)
static void rs6000_init_hard_regno_mode_ok (void)
void rs6000_override_options (const char *default_cpu)
void optimization_options (int level ATTRIBUTE_UNUSED, int size ATTRIBUTE_UNUSED)
int direct_return (void)
int num_insns_constant_wide (HOST_WIDE_INT value)
int num_insns_constant (rtx op, enum machine_mode mode)
static HOST_WIDE_INT const_vector_elt_as_int (rtx op, unsigned int elt)
static bool vspltis_constant (rtx op, unsigned step, unsigned copies)
bool easy_altivec_constant (rtx op, enum machine_mode mode)
rtx gen_easy_altivec_constant (rtx op)
const char * output_vec_const_move (rtx *operands)
void rs6000_expand_vector_init (rtx target, rtx vals)
void rs6000_expand_vector_set (rtx target, rtx val, int elt)
void rs6000_expand_vector_extract (rtx target, rtx vec, int elt)
void build_mask64_2_operands (rtx in, rtx *out)
bool invalid_e500_subreg (rtx op, enum machine_mode mode)
unsigned int rs6000_special_round_type_align (tree type, unsigned int computed, unsigned int specified)
int small_data_operand (rtx op ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED)
bool gpr_or_gpr_p (rtx op0, rtx op1)
bool toc_relative_expr_p (rtx op)
bool legitimate_constant_pool_address_p (rtx x)
bool rs6000_legitimate_offset_address_p (enum machine_mode mode, rtx x, int strict)
bool legitimate_indirect_address_p (rtx x, int strict)
bool macho_lo_sum_memory_operand (rtx x, enum machine_mode mode)
rtx rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED, enum machine_mode mode)
static void rs6000_output_dwarf_dtprel (FILE *file, int size, rtx x)
bool rs6000_tls_referenced_p (rtx x)
static int rs6000_tls_symbol_ref_1 (rtx *x, void *data ATTRIBUTE_UNUSED)
rtx rs6000_legitimize_reload_address (rtx x, enum machine_mode mode, int opnum, int type, int ind_levels ATTRIBUTE_UNUSED, int *win)
int rs6000_legitimate_address (enum machine_mode mode, rtx x, int reg_ok_strict)
bool rs6000_mode_dependent_address (rtx addr)
bool rs6000_offsettable_memref_p (rtx op)
int rs6000_hard_regno_nregs (int regno, enum machine_mode mode)
void rs6000_conditional_register_usage (void)
rtx rs6000_emit_set_const (rtx dest, enum machine_mode mode, rtx source, int n ATTRIBUTE_UNUSED)
void rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode)
static bool rs6000_return_in_memory (tree type, tree fntype ATTRIBUTE_UNUSED)
void init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype, rtx libname ATTRIBUTE_UNUSED, int incoming, int libcall, int n_named_args)
static bool rs6000_must_pass_in_stack (enum machine_mode mode, tree type)
enum direction function_arg_padding (enum machine_mode mode, tree type)
int function_arg_boundary (enum machine_mode mode, tree type)
static unsigned int rs6000_parm_start (enum machine_mode mode, tree type, unsigned int nwords)
static unsigned long rs6000_arg_size (enum machine_mode mode, tree type)
static void rs6000_darwin64_record_arg_advance_flush (CUMULATIVE_ARGS *cum, HOST_WIDE_INT bitpos)
static void rs6000_darwin64_record_arg_advance_recurse (CUMULATIVE_ARGS *cum, tree type, HOST_WIDE_INT startbitpos)
void function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type, int named, int depth)
static rtx spe_build_register_parallel (enum machine_mode mode, int gregno)
static rtx rs6000_spe_function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type)
static void rs6000_darwin64_record_arg_flush (CUMULATIVE_ARGS *cum, HOST_WIDE_INT bitpos, rtx rvec[], int *k)
static void rs6000_darwin64_record_arg_recurse (CUMULATIVE_ARGS *cum, tree type, HOST_WIDE_INT startbitpos, rtx rvec[], int *k)
static rtx rs6000_darwin64_record_arg (CUMULATIVE_ARGS *orig_cum, tree type, int named, bool retval)
static rtx rs6000_mixed_function_arg (enum machine_mode mode, tree type, int align_words)
rtx function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type, int named)
static int rs6000_arg_partial_bytes (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type, bool named)
static bool rs6000_pass_by_reference (CUMULATIVE_ARGS *cum ATTRIBUTE_UNUSED, enum machine_mode mode, tree type, bool named ATTRIBUTE_UNUSED)
static void rs6000_move_block_from_reg (int regno, rtx x, int nregs)
static void setup_incoming_varargs (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type, int *pretend_size ATTRIBUTE_UNUSED, int no_rtl)
static tree rs6000_build_builtin_va_list (void)
void rs6000_va_start (tree valist, rtx nextarg)
tree rs6000_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p)
static rtx altivec_expand_st_builtin (tree exp, rtx target ATTRIBUTE_UNUSED, bool *expandedp)
static rtx altivec_expand_dst_builtin (tree exp, rtx target ATTRIBUTE_UNUSED, bool *expandedp)
static rtx rs6000_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, int ignore ATTRIBUTE_UNUSED)
int expand_block_clear (rtx operands[])
int expand_block_move (rtx operands[])
const char * rs6000_output_load_multiple (rtx operands[3])
void validate_condition_mode (enum rtx_code code, enum machine_mode mode)
int includes_lshift_p (rtx shiftop, rtx andop)
int includes_rshift_p (rtx shiftop, rtx andop)
int includes_rldic_lshift_p (rtx shiftop, rtx andop)
int includes_rldicr_lshift_p (rtx shiftop, rtx andop)
int insvdi_rshift_rlwimi_p (rtx sizeop, rtx startop, rtx shiftop)
int registers_ok_for_quad_peep (rtx reg1, rtx reg2)
int mems_ok_for_quad_peep (rtx mem1, rtx mem2)
enum reg_class rs6000_secondary_reload_class (enum reg_class class, enum machine_mode mode ATTRIBUTE_UNUSED, rtx in)
int ccr_bit (rtx op, int scc_p)
rtx rs6000_got_register (rtx value ATTRIBUTE_UNUSED)
int extract_MB (rtx op)
int extract_ME (rtx op)
static const char * rs6000_get_some_local_dynamic_name (void)
static int rs6000_get_some_local_dynamic_name_1 (rtx *px, void *data ATTRIBUTE_UNUSED)
void rs6000_output_function_entry (FILE *file, const char *fname)
void print_operand (FILE *file, rtx x, int code)
void print_operand_address (FILE *file, rtx x)
enum rtx_code rs6000_reverse_condition (enum machine_mode mode, enum rtx_code code)
void rs6000_emit_sCOND (enum rtx_code code, rtx result)
void rs6000_emit_cbranch (enum rtx_code code, rtx loc)
char * output_cbranch (rtx op, const char *label, int reversed, rtx insn)
char * output_e500_flip_gt_bit (rtx dst, rtx src)
static int get_vec_cmp_insn (enum rtx_code code, enum machine_mode dest_mode, enum machine_mode op_mode)
static rtx rs6000_emit_vector_compare (enum rtx_code rcode, rtx op0, rtx op1, enum machine_mode dmode)
static int get_vsel_insn (enum machine_mode mode)
static void rs6000_emit_vector_select (rtx dest, rtx op1, rtx op2, rtx mask)
int rs6000_emit_vector_cond_expr (rtx dest, rtx op1, rtx op2, rtx cond, rtx cc_op0, rtx cc_op1)
int rs6000_emit_cmove (rtx dest, rtx op, rtx true_cond, rtx false_cond)
const char * output_isel (rtx *operands)
void rs6000_emit_minmax (rtx dest, enum rtx_code code, rtx op0, rtx op1)
void rs6000_emit_sync (enum rtx_code code, enum machine_mode mode, rtx m, rtx op, rtx before_param, rtx after_param, bool sync_p)
static void emit_unlikely_jump (rtx cond, rtx label)
static void emit_load_locked (enum machine_mode mode, rtx reg, rtx mem)
static void emit_store_conditional (enum machine_mode mode, rtx res, rtx mem, rtx val)
void rs6000_split_atomic_op (enum rtx_code code, rtx mem, rtx val, rtx before, rtx after, rtx scratch)
void rs6000_split_compare_and_swap (rtx retval, rtx mem, rtx oldval, rtx newval, rtx scratch)
void rs6000_split_lock_test_and_set (rtx retval, rtx mem, rtx val, rtx scratch)
void rs6000_expand_compare_and_swapqhi (rtx dst, rtx mem, rtx oldval, rtx newval)
void rs6000_split_compare_and_swapqhi (rtx dest, rtx mask, rtx oldval, rtx newval, rtx mem, rtx scratch)
void rs6000_split_multireg_move (rtx dst, rtx src)
int first_reg_to_save (void)
int first_fp_reg_to_save (void)
rtx rs6000_return_addr (int count, rtx frame)
static bool rs6000_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED)
void rs6000_emit_load_toc_table (int fromprolog)
void rs6000_emit_eh_reg_restore (rtx source, rtx scratch)
rtx create_TOC_reference (rtx symbol)
void rs6000_aix_emit_builtin_unwind_init (void)
void rs6000_emit_prologue (void)
static void rs6000_output_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
void rs6000_emit_epilogue (int sibcall)
static void rs6000_output_function_epilogue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
static void rs6000_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED, HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset, tree function)
void rs6000_output_symbol_ref (FILE *file, rtx x)
void output_toc (FILE *file, rtx x, int labelno, enum machine_mode mode)
void output_ascii (FILE *file, const char *p, int n)
void rs6000_gen_section_name (char **buf, const char *filename, const char *section_desc)
void output_profile_hook (int labelno ATTRIBUTE_UNUSED)
void output_function_profiler (FILE *file, int labelno)
static int rs6000_variable_issue (FILE *stream ATTRIBUTE_UNUSED, int verbose ATTRIBUTE_UNUSED, rtx insn, int more)
static int rs6000_adjust_priority (rtx insn ATTRIBUTE_UNUSED, int priority)
static bool is_mem_ref (rtx pat)
static bool is_load_insn1 (rtx pat)
static bool is_load_insn (rtx insn)
static bool is_store_insn1 (rtx pat)
static bool is_store_insn (rtx insn)
int rs6000_trampoline_size (void)
void rs6000_initialize_trampoline (rtx addr, rtx fnaddr, rtx cxt)
static tree rs6000_handle_altivec_attribute (tree *node, tree name ATTRIBUTE_UNUSED, tree args, int flags ATTRIBUTE_UNUSED, bool *no_add_attrs)
static tree rs6000_handle_longcall_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED, int flags ATTRIBUTE_UNUSED, bool *no_add_attrs)
rtx rs6000_longcall_ref (rtx call_ref)
static tree rs6000_handle_struct_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED, int flags ATTRIBUTE_UNUSED, bool *no_add_attrs)
rtx find_addr_reg (rtx addr)
void rs6000_fatal_bad_address (rtx op)
int rs6000_register_move_cost (enum machine_mode mode, enum reg_class from, enum reg_class to)
int rs6000_memory_move_cost (enum machine_mode mode, enum reg_class class, int in ATTRIBUTE_UNUSED)
void rs6000_emit_swdivsf (rtx res, rtx n, rtx d)
void rs6000_emit_swdivdf (rtx res, rtx n, rtx d)
static rtx rs6000_complex_function_value (enum machine_mode mode)
rtx rs6000_function_value (tree valtype, tree func ATTRIBUTE_UNUSED)
rtx rs6000_libcall_value (enum machine_mode mode)
HOST_WIDE_INT rs6000_initial_elimination_offset (int from, int to)
unsigned int rs6000_dbx_register_number (unsigned int regno)
static enum machine_mode rs6000_eh_return_filter_mode (void)
static bool rs6000_scalar_mode_supported_p (enum machine_mode mode)
static bool rs6000_vector_mode_supported_p (enum machine_mode mode)
static const char * invalid_arg_for_unprototyped_fn (tree typelist, tree funcdecl, tree val)
static tree rs6000_stack_protect_fail (void)

Variables

 machine_function
enum processor_type rs6000_cpu
struct rs6000_cpu_select rs6000_select [3]
 rs6000_traceback
int toc_initialized
char toc_label_name [10]
 rs6000_explicit_options
struct processor_costsrs6000_cost
static struct processor_costs size32_cost
static struct processor_costs size64_cost
static struct processor_costs rios1_cost
static struct processor_costs rios2_cost
static struct processor_costs rs64a_cost
static struct processor_costs mpccore_cost
static struct processor_costs ppc403_cost
static struct processor_costs ppc405_cost
static struct processor_costs ppc440_cost
static struct processor_costs ppc601_cost
static struct processor_costs ppc603_cost
static struct processor_costs ppc604_cost
static struct processor_costs ppc604e_cost
static struct processor_costs ppc620_cost
static struct processor_costs ppc630_cost
static struct processor_costs ppc750_cost
static struct processor_costs ppc7450_cost
static struct processor_costs ppc8540_cost
static struct processor_costs power4_cost
struct attribute_spec rs6000_attribute_table []
struct gcc_target targetm = TARGET_INITIALIZER
static struct builtin_description bdesc_3arg []
static struct builtin_description bdesc_dst []
static struct builtin_description bdesc_2arg []
static struct
builtin_description_predicates 
bdesc_altivec_preds []
static struct builtin_description bdesc_spe_predicates []
static struct builtin_description bdesc_spe_evsel []
static struct builtin_description bdesc_abs []
static struct builtin_description bdesc_1arg []
static struct builtin_description bdesc_2arg_spe []


Define Documentation

#define ABI_STACK_BOUNDARY   STACK_BOUNDARY

Definition at line 12988 of file rs6000.c.

#define AGGREGATE_PADDING_FIXED   0

#define AGGREGATES_PAD_UPWARD_ALWAYS   0

#define ALTIVEC_REG_BIT ( REGNO   )     (0x80000000 >> ((REGNO) - FIRST_ALTIVEC_REGNO))

Definition at line 841 of file rs6000.c.

#define INT_LOWPART ( X   )     (GET_CODE (X) == CONST_INT ? INTVAL (X) : CONST_DOUBLE_LOW (X))

Definition at line 10142 of file rs6000.c.

#define INT_P ( X   ) 

Value:

((GET_CODE (X) == CONST_INT || GET_CODE (X) == CONST_DOUBLE)  \
 && GET_MODE (X) == VOIDmode)

Definition at line 10138 of file rs6000.c.

#define MASK_STRICT_ALIGN   0

Definition at line 834 of file rs6000.c.

#define max ( A,
B   )     ((A) > (B) ? (A) : (B))

Definition at line 72 of file rs6000.c.

#define MAX_MOVE_REG   4

Definition at line 9398 of file rs6000.c.

#define MEM_DEREF ( addr   )     gen_rtx_MEM (Pmode, memory_address (Pmode, addr))

#define MEM_PLUS ( addr,
offset   )     gen_rtx_MEM (Pmode, memory_address (Pmode, plus_constant (addr, offset)))

#define min ( A,
B   )     ((A) < (B) ? (A) : (B))

Definition at line 71 of file rs6000.c.

#define NO_PROFILE_COUNTERS   0

#define REG_MODE_OK_FOR_BASE_P ( REGNO,
MODE   )     REG_OK_FOR_BASE_P (REGNO)

Definition at line 3318 of file rs6000.c.

#define RS6000_DEFAULT_LONG_DOUBLE_SIZE   64

Definition at line 1106 of file rs6000.c.

#define SMALL_DATA_REG   0

Definition at line 10287 of file rs6000.c.

#define SMALL_DATA_RELOC   "sda21"

Definition at line 10286 of file rs6000.c.

#define SPE_CONST_OFFSET_OK (  )     (((x) & ~0xf8) == 0)

Definition at line 2761 of file rs6000.c.

#define TARGET_ADDRESS_COST   hook_int_rtx_0

Definition at line 953 of file rs6000.c.

#define TARGET_ARG_PARTIAL_BYTES   rs6000_arg_partial_bytes

Definition at line 986 of file rs6000.c.

#define TARGET_ASM_ALIGNED_DI_OP   "\t.quad\t"

Definition at line 873 of file rs6000.c.

#define TARGET_ASM_ALIGNED_DI_OP   DOUBLE_INT_ASM_OP

Definition at line 873 of file rs6000.c.

#define TARGET_ASM_CAN_OUTPUT_MI_THUNK   hook_bool_tree_hwi_hwi_tree_true

Definition at line 942 of file rs6000.c.

#define TARGET_ASM_FUNCTION_EPILOGUE   rs6000_output_function_epilogue

Definition at line 896 of file rs6000.c.

#define TARGET_ASM_FUNCTION_PROLOGUE   rs6000_output_function_prologue

Definition at line 894 of file rs6000.c.

#define TARGET_ASM_INTEGER   rs6000_assemble_integer

Definition at line 880 of file rs6000.c.

#define TARGET_ASM_OUTPUT_MI_THUNK   rs6000_output_mi_thunk

Definition at line 939 of file rs6000.c.

#define TARGET_ASM_UNALIGNED_DI_OP   "\t.quad\t"

Definition at line 871 of file rs6000.c.

#define TARGET_ASM_UNALIGNED_HI_OP   "\t.short\t"

Definition at line 867 of file rs6000.c.

#define TARGET_ASM_UNALIGNED_SI_OP   "\t.long\t"

Definition at line 869 of file rs6000.c.

#define TARGET_ATTRIBUTE_TABLE   rs6000_attribute_table

Definition at line 845 of file rs6000.c.

#define TARGET_BUILD_BUILTIN_VA_LIST   rs6000_build_builtin_va_list

Definition at line 989 of file rs6000.c.

#define TARGET_CANNOT_FORCE_CONST_MEM   rs6000_tls_referenced_p

Definition at line 891 of file rs6000.c.

#define TARGET_DEFAULT_TARGET_FLAGS   (TARGET_DEFAULT)

Definition at line 1010 of file rs6000.c.

#define TARGET_DWARF_REGISTER_SPAN   rs6000_dwarf_register_span

Definition at line 959 of file rs6000.c.

#define TARGET_EH_RETURN_FILTER_MODE   rs6000_eh_return_filter_mode

Definition at line 995 of file rs6000.c.

#define TARGET_EXPAND_BUILTIN   rs6000_expand_builtin

Definition at line 922 of file rs6000.c.

#define TARGET_FIX_AND_CONTINUE   0

Definition at line 14249 of file rs6000.c.

#define TARGET_FUNCTION_OK_FOR_SIBCALL   rs6000_function_ok_for_sibcall

Definition at line 945 of file rs6000.c.

#define TARGET_GIMPLIFY_VA_ARG_EXPR   rs6000_gimplify_va_arg

Definition at line 992 of file rs6000.c.

#define TARGET_HANDLE_OPTION   rs6000_handle_option

Definition at line 1007 of file rs6000.c.

#define TARGET_HAVE_TLS   HAVE_AS_TLS

Definition at line 888 of file rs6000.c.

#define TARGET_INIT_BUILTINS   rs6000_init_builtins

Definition at line 919 of file rs6000.c.

#define TARGET_INIT_LIBFUNCS   rs6000_init_libfuncs

Definition at line 928 of file rs6000.c.

#define TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN   invalid_arg_for_unprototyped_fn

Definition at line 1004 of file rs6000.c.

#define TARGET_INVALID_WITHIN_DOLOOP   rs6000_invalid_within_doloop

Definition at line 948 of file rs6000.c.

#define TARGET_MANGLE_FUNDAMENTAL_TYPE   rs6000_mangle_fundamental_type

Definition at line 925 of file rs6000.c.

#define TARGET_MAX_ANCHOR_OFFSET   0x7fffffff

Definition at line 1042 of file rs6000.c.

#define TARGET_MIN_ANCHOR_OFFSET   -0x7fffffff - 1

Definition at line 1040 of file rs6000.c.

#define TARGET_MS_BITFIELD_LAYOUT_P   rs6000_ms_bitfield_layout_p

Definition at line 936 of file rs6000.c.

#define TARGET_MUST_PASS_IN_STACK   rs6000_must_pass_in_stack

Definition at line 982 of file rs6000.c.

#define TARGET_NO_PROTOTYPE   0

Definition at line 68 of file rs6000.c.

#define TARGET_PASS_BY_REFERENCE   rs6000_pass_by_reference

Definition at line 984 of file rs6000.c.

#define TARGET_PRETEND_OUTGOING_VARARGS_NAMED   hook_bool_CUMULATIVE_ARGS_true

Definition at line 978 of file rs6000.c.

#define TARGET_PROFILE_KERNEL   0

Definition at line 837 of file rs6000.c.

#define TARGET_PROMOTE_FUNCTION_ARGS   hook_bool_tree_true

Definition at line 964 of file rs6000.c.

#define TARGET_PROMOTE_FUNCTION_RETURN   hook_bool_tree_true

Definition at line 966 of file rs6000.c.

#define TARGET_RELAXED_ORDERING   true

Definition at line 1025 of file rs6000.c.

#define TARGET_RETURN_IN_MEMORY   rs6000_return_in_memory

Definition at line 969 of file rs6000.c.

#define TARGET_RTX_COSTS   rs6000_rtx_costs

Definition at line 951 of file rs6000.c.

#define TARGET_SCALAR_MODE_SUPPORTED_P   rs6000_scalar_mode_supported_p

Definition at line 998 of file rs6000.c.

#define TARGET_SCHED_ADJUST_COST   rs6000_adjust_cost

Definition at line 904 of file rs6000.c.

#define TARGET_SCHED_ADJUST_PRIORITY   rs6000_adjust_priority

Definition at line 906 of file rs6000.c.

#define TARGET_SCHED_FINISH   rs6000_sched_finish

Definition at line 910 of file rs6000.c.

#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD   rs6000_use_sched_lookahead

Definition at line 913 of file rs6000.c.

#define TARGET_SCHED_IS_COSTLY_DEPENDENCE   rs6000_is_costly_dependence

Definition at line 908 of file rs6000.c.

#define TARGET_SCHED_ISSUE_RATE   rs6000_issue_rate

Definition at line 902 of file rs6000.c.

#define TARGET_SCHED_VARIABLE_ISSUE   rs6000_variable_issue

Definition at line 899 of file rs6000.c.

#define TARGET_SET_DEFAULT_TYPE_ATTRIBUTES   rs6000_set_default_type_attributes

Definition at line 847 of file rs6000.c.

#define TARGET_SETUP_INCOMING_VARARGS   setup_incoming_varargs

Definition at line 972 of file rs6000.c.

#define TARGET_SPLIT_COMPLEX_ARG   hook_bool_tree_true

Definition at line 980 of file rs6000.c.

#define TARGET_STACK_PROTECT_FAIL   rs6000_stack_protect_fail

Definition at line 1014 of file rs6000.c.

#define TARGET_STRICT_ARGUMENT_NAMING   hook_bool_CUMULATIVE_ARGS_true

Definition at line 976 of file rs6000.c.

#define TARGET_USE_BLOCKS_FOR_CONSTANT_P   rs6000_use_blocks_for_constant_p

Definition at line 1044 of file rs6000.c.

#define TARGET_USE_MS_BITFIELD_LAYOUT   0

Definition at line 17682 of file rs6000.c.

#define TARGET_VECTOR_MODE_SUPPORTED_P   rs6000_vector_mode_supported_p

Definition at line 1001 of file rs6000.c.

#define TARGET_VECTOR_OPAQUE_P   rs6000_is_opaque_type

Definition at line 956 of file rs6000.c.

#define TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD   rs6000_builtin_mask_for_load

Definition at line 916 of file rs6000.c.

#define USE_ALTIVEC_FOR_ARG_P ( CUM,
MODE,
TYPE,
NAMED   ) 

Value:

(ALTIVEC_VECTOR_MODE (MODE)       \
   && (CUM)->vregno <= ALTIVEC_ARG_MAX_REG    \
   && TARGET_ALTIVEC_ABI        \
   && (NAMED))

Definition at line 4284 of file rs6000.c.

#define USE_FP_FOR_ARG_P ( CUM,
MODE,
TYPE   ) 

Value:

Definition at line 4277 of file rs6000.c.

#define VTABLE_NAME_P ( NAME   ) 

Value:

(strncmp ("_vt.", name, strlen ("_vt.")) == 0   \
  || strncmp ("_ZTV", name, strlen ("_ZTV")) == 0 \
  || strncmp ("_ZTT", name, strlen ("_ZTT")) == 0 \
  || strncmp ("_ZTI", name, strlen ("_ZTI")) == 0 \
  || strncmp ("_ZTC", name, strlen ("_ZTC")) == 0)

Definition at line 15881 of file rs6000.c.


Typedef Documentation


Function Documentation

static rtx altivec_expand_abs_builtin ( enum insn_code  icode,
tree  arglist,
rtx  target 
) [static]

static rtx altivec_expand_builtin ( tree  exp,
rtx  target,
bool expandedp 
) [static]

Definition at line 7389 of file rs6000.c.

References ALTIVEC_BUILTIN_DSS, ALTIVEC_BUILTIN_DSSALL, ALTIVEC_BUILTIN_LVEBX, ALTIVEC_BUILTIN_LVEHX, ALTIVEC_BUILTIN_LVEWX, ALTIVEC_BUILTIN_LVSL, ALTIVEC_BUILTIN_LVSR, ALTIVEC_BUILTIN_LVX, ALTIVEC_BUILTIN_LVXL, ALTIVEC_BUILTIN_MFVSCR, ALTIVEC_BUILTIN_MTVSCR, ALTIVEC_BUILTIN_OVERLOADED_FIRST, ALTIVEC_BUILTIN_OVERLOADED_LAST, ALTIVEC_BUILTIN_STVEBX, ALTIVEC_BUILTIN_STVEHX, ALTIVEC_BUILTIN_STVEWX, ALTIVEC_BUILTIN_STVX, ALTIVEC_BUILTIN_STVXL, ALTIVEC_BUILTIN_VEC_EXT_V16QI, ALTIVEC_BUILTIN_VEC_EXT_V4SF, ALTIVEC_BUILTIN_VEC_EXT_V4SI, ALTIVEC_BUILTIN_VEC_EXT_V8HI, ALTIVEC_BUILTIN_VEC_INIT_V16QI, ALTIVEC_BUILTIN_VEC_INIT_V4SF, ALTIVEC_BUILTIN_VEC_INIT_V4SI, ALTIVEC_BUILTIN_VEC_INIT_V8HI, ALTIVEC_BUILTIN_VEC_SET_V16QI, ALTIVEC_BUILTIN_VEC_SET_V4SF, ALTIVEC_BUILTIN_VEC_SET_V4SI, ALTIVEC_BUILTIN_VEC_SET_V8HI, altivec_expand_abs_builtin(), altivec_expand_dst_builtin(), altivec_expand_ld_builtin(), altivec_expand_lv_builtin(), altivec_expand_predicate_builtin(), altivec_expand_st_builtin(), altivec_expand_stv_builtin(), altivec_expand_vec_ext_builtin(), altivec_expand_vec_init_builtin(), altivec_expand_vec_set_builtin(), ARRAY_SIZE, builtin_description::code, builtin_description_predicates::code, const0_rtx, copy_to_mode_reg(), d, DECL_FUNCTION_CODE, emit_insn(), error(), error_mark_node, expand_normal(), GEN_FCN, gen_reg_rtx(), GET_MODE, builtin_description::icode, builtin_description_predicates::icode, NULL_RTX, builtin_description_predicates::opcode, STRIP_NOPS, TREE_CODE, TREE_INT_CST_LOW, TREE_OPERAND, TREE_TYPE, and TREE_VALUE.

static rtx altivec_expand_dst_builtin ( tree  exp,
rtx target  ATTRIBUTE_UNUSED,
bool expandedp 
) [static]

static rtx altivec_expand_dst_builtin ( tree  ,
rtx  ,
bool  
) [static]

static rtx altivec_expand_ld_builtin ( tree  exp,
rtx  target,
bool expandedp 
) [static]

static rtx altivec_expand_lv_builtin ( enum insn_code  icode,
tree  arglist,
rtx  target 
) [static]

static rtx altivec_expand_predicate_builtin ( enum insn_code  icode,
const char *  opcode,
tree  arglist,
rtx  target 
) [static]

static rtx altivec_expand_st_builtin ( tree  exp,
rtx target  ATTRIBUTE_UNUSED,
bool expandedp 
) [static]

static rtx altivec_expand_st_builtin ( tree  ,
rtx  ,
bool  
) [static]

static rtx altivec_expand_stv_builtin ( enum insn_code  icode,
tree  arglist 
) [static]

static rtx altivec_expand_vec_ext_builtin ( tree  arglist,
rtx  target 
) [static]

static rtx altivec_expand_vec_init_builtin ( tree  type,
tree  arglist,
rtx  target 
) [static]

static rtx altivec_expand_vec_set_builtin ( tree  arglist  )  [static]

static void altivec_init_builtins ( void   )  [static]

Definition at line 8353 of file rs6000.c.

References ALTIVEC_BUILTIN_DSS, ALTIVEC_BUILTIN_DSSALL, ALTIVEC_BUILTIN_LD_INTERNAL_16qi, ALTIVEC_BUILTIN_LD_INTERNAL_4sf, ALTIVEC_BUILTIN_LD_INTERNAL_4si, ALTIVEC_BUILTIN_LD_INTERNAL_8hi, ALTIVEC_BUILTIN_LVEBX, ALTIVEC_BUILTIN_LVEHX, ALTIVEC_BUILTIN_LVEWX, ALTIVEC_BUILTIN_LVSL, ALTIVEC_BUILTIN_LVSR, ALTIVEC_BUILTIN_LVX, ALTIVEC_BUILTIN_LVXL, ALTIVEC_BUILTIN_MASK_FOR_LOAD, ALTIVEC_BUILTIN_MFVSCR, ALTIVEC_BUILTIN_MTVSCR, ALTIVEC_BUILTIN_OVERLOADED_FIRST, ALTIVEC_BUILTIN_OVERLOADED_LAST, ALTIVEC_BUILTIN_ST_INTERNAL_16qi, ALTIVEC_BUILTIN_ST_INTERNAL_4sf, ALTIVEC_BUILTIN_ST_INTERNAL_4si, ALTIVEC_BUILTIN_ST_INTERNAL_8hi, ALTIVEC_BUILTIN_STVEBX, ALTIVEC_BUILTIN_STVEHX, ALTIVEC_BUILTIN_STVEWX, ALTIVEC_BUILTIN_STVX, ALTIVEC_BUILTIN_STVXL, ALTIVEC_BUILTIN_VEC_CTF, ALTIVEC_BUILTIN_VEC_CTS, ALTIVEC_BUILTIN_VEC_CTU, ALTIVEC_BUILTIN_VEC_EXT_V16QI, ALTIVEC_BUILTIN_VEC_EXT_V4SF, ALTIVEC_BUILTIN_VEC_EXT_V4SI, ALTIVEC_BUILTIN_VEC_EXT_V8HI, ALTIVEC_BUILTIN_VEC_INIT_V16QI, ALTIVEC_BUILTIN_VEC_INIT_V4SF, ALTIVEC_BUILTIN_VEC_INIT_V4SI, ALTIVEC_BUILTIN_VEC_INIT_V8HI, ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_VEC_LDE, ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_VEC_LVEBX, ALTIVEC_BUILTIN_VEC_LVEHX, ALTIVEC_BUILTIN_VEC_LVEWX, ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_VEC_LVSR, ALTIVEC_BUILTIN_VEC_SET_V16QI, ALTIVEC_BUILTIN_VEC_SET_V4SF, ALTIVEC_BUILTIN_VEC_SET_V4SI, ALTIVEC_BUILTIN_VEC_SET_V8HI, ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SPLAT, ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_VEC_STEP, ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_VEC_STVEBX, ALTIVEC_BUILTIN_VEC_STVEHX, ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_VEC_VCFSX, ALTIVEC_BUILTIN_VEC_VCFUX, ALTIVEC_BUILTIN_VEC_VSPLTB, ALTIVEC_BUILTIN_VEC_VSPLTH, ALTIVEC_BUILTIN_VEC_VSPLTW, ARRAY_SIZE, build_function_type(), build_function_type_list(), build_pointer_type(), build_qualified_type(), BUILT_IN_MD, char_type_node, builtin_description::code, builtin_description_predicates::code, d, def_builtin, float_type_node, gcc_unreachable, get_identifier(), builtin_description::icode, builtin_description_predicates::icode, integer_type_node, intHI_type_node, intQI_type_node, intSI_type_node, long_integer_type_node, builtin_description_predicates::mask, builtin_description::mask, MASK_ALTIVEC, builtin_description_predicates::name, builtin_description::name, NULL, NULL_TREE, opaque_V4SI_type_node, short_integer_type_node, TARGET_ALTIVEC, tree_cons, TYPE_QUAL_CONST, V16QI_type_node, V4SF_type_node, V4SI_type_node, V8HI_type_node, void_list_node, and void_type_node.

void build_mask64_2_operands ( rtx  in,
rtx out 
)

Definition at line 2506 of file rs6000.c.

References c, gcc_assert, gcc_unreachable, GEN_INT, GET_CODE, INTVAL, and shift.

static tree build_opaque_vector_type ( tree  node,
int  nunits 
) [static]

Definition at line 7989 of file rs6000.c.

References build_vector_type(), copy_node, and TYPE_MAIN_VARIANT.

int ccr_bit ( rtx  op,
int  scc_p 
)

static void compute_save_world_info ( rs6000_stack_t info_ptr  )  [static]

static unsigned int compute_vrsave_mask ( void   )  [static]

static HOST_WIDE_INT const_vector_elt_as_int ( rtx  op,
unsigned int  elt 
) [static]

Definition at line 2131 of file rs6000.c.

References CONST_VECTOR_ELT, gen_lowpart, GET_MODE, INTVAL, and tmp.

Referenced by vspltis_constant().

static int constant_pool_expr_1 ( rtx  op,
int *  have_sym,
int *  have_toc 
) [static]

static bool constant_pool_expr_p ( rtx  op  )  [static]

rtx create_TOC_reference ( rtx  symbol  ) 

static void debug_stack_info ( rs6000_stack_t info  )  [static]

static void def_builtin ( int  mask,
const char *  name,
tree  type,
int  code 
) [static]

Definition at line 6083 of file rs6000.c.

References abort, BUILT_IN_MD, NULL, NULL_TREE, and target_flags.

int direct_return ( void   ) 

bool easy_altivec_constant ( rtx  op,
enum machine_mode  mode 
)

Definition at line 2210 of file rs6000.c.

References GET_MODE, GET_MODE_NUNITS, step(), and vspltis_constant().

int easy_vector_constant ( rtx  ,
enum  machine_mode 
)

static void emit_frame_save ( rtx  frame_reg,
rtx  frame_ptr,
enum machine_mode  mode,
unsigned int  regno,
int  offset,
HOST_WIDE_INT  total_size 
) [static]

static void emit_load_locked ( enum machine_mode  mode,
rtx  reg,
rtx  mem 
) [static]

Definition at line 12350 of file rs6000.c.

References emit_insn(), and NULL.

static void emit_store_conditional ( enum machine_mode  mode,
rtx  res,
rtx  mem,
rtx  val 
) [static]

Definition at line 12364 of file rs6000.c.

References emit_insn(), NULL, and PPC405_ERRATUM77.

static void emit_unlikely_jump ( rtx  cond,
rtx  label 
) [static]

static void enable_mask_for_builtins ( struct builtin_description desc,
int  size,
enum rs6000_builtins  start,
enum rs6000_builtins  end 
) [static]

Definition at line 8111 of file rs6000.c.

References builtin_description::mask, and target_flags.

int expand_block_clear ( rtx  operands[]  ) 

int expand_block_move ( rtx  operands[]  ) 

int extract_MB ( rtx  op  ) 

Definition at line 10146 of file rs6000.c.

References gcc_assert, INT_LOWPART, and val.

int extract_ME ( rtx  op  ) 

Definition at line 10178 of file rs6000.c.

References gcc_assert, INT_LOWPART, and val.

rtx find_addr_reg ( rtx  addr  )  [read]

Definition at line 17881 of file rs6000.c.

References abort, CONSTANT_P, gcc_assert, gcc_unreachable, GET_CODE, PLUS, REG, REGNO, and XEXP.

static int first_altivec_reg_to_save ( void   )  [static]

int first_fp_reg_to_save ( void   ) 

Definition at line 12751 of file rs6000.c.

References regs_ever_live.

int first_reg_to_save ( void   ) 

static int force_new_group ( int  sched_verbose,
FILE dump,
rtx group_insns,
rtx  next_insn,
bool group_end,
int  can_issue_more,
int *  group_count 
) [static]

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

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

int function_arg_boundary ( enum machine_mode  mode,
tree  type 
)

enum direction function_arg_padding ( enum machine_mode  mode,
tree  type 
)

rtx gen_easy_altivec_constant ( rtx  op  ) 

static rtx gen_frame_mem_offset ( enum machine_mode  mode,
rtx  reg,
int  offset 
) [static]

static rtx generate_set_vrsave ( rtx  reg,
rs6000_stack_t info,
int  epiloguep 
) [static]

static int get_element_number ( tree  vec_type,
tree  arg 
) [static]

Definition at line 7311 of file rs6000.c.

References error(), host_integerp(), max, tree_low_cst(), and TYPE_VECTOR_SUBPARTS.

static rtx get_next_active_insn ( rtx  insn,
rtx  tail 
) [static]

Definition at line 16977 of file rs6000.c.

References CALL_P, GET_CODE, INSN_CODE, JUMP_P, NEXT_INSN, NONJUMP_INSN_P, NULL_RTX, PATTERN, and USE.

static int get_vec_cmp_insn ( enum rtx_code  code,
enum machine_mode  dest_mode,
enum machine_mode  op_mode 
) [static]

Definition at line 11619 of file rs6000.c.

References EQ, GE, GT, and TARGET_ALTIVEC.

static int get_vsel_insn ( enum machine_mode  mode  )  [static]

Definition at line 11813 of file rs6000.c.

bool gpr_or_gpr_p ( rtx  op0,
rtx  op1 
)

Definition at line 2678 of file rs6000.c.

References INT_REGNO_P, REG_P, and REGNO.

static GTY ( (param_is(struct toc_hash_struct))   )  [static]

Definition at line 778 of file rs6000.c.

struct machine_function GTY ( ()   )  [read, write]

Definition at line 116 of file rs6000.c.

References HOST_WIDE_INT, and machine_function::ra_needs_full_frame.

int includes_lshift_p ( rtx  shiftop,
rtx  andop 
)

Definition at line 9671 of file rs6000.c.

References INTVAL.

int includes_rldic_lshift_p ( rtx  shiftop,
rtx  andop 
)

int includes_rldicr_lshift_p ( rtx  shiftop,
rtx  andop 
)

int includes_rshift_p ( rtx  shiftop,
rtx  andop 
)

Definition at line 9683 of file rs6000.c.

References INTVAL.

void init_cumulative_args ( CUMULATIVE_ARGS cum,
tree  fntype,
rtx libname  ATTRIBUTE_UNUSED,
int  incoming,
int  libcall,
int  n_named_args 
)

static bool insn_terminates_group_p ( rtx  insn,
enum group_termination  which_group 
) [static]

int insvdi_rshift_rlwimi_p ( rtx  sizeop,
rtx  startop,
rtx  shiftop 
)

Definition at line 9861 of file rs6000.c.

References INTVAL.

static const char* invalid_arg_for_unprototyped_fn ( tree  typelist,
tree  funcdecl,
tree  val 
) [static]

Definition at line 19514 of file rs6000.c.

References BUILT_IN_MD, DECL_BUILT_IN_CLASS, N_, NULL, NULL_TREE, TREE_CODE, and TREE_TYPE.

bool invalid_e500_subreg ( rtx  op,
enum machine_mode  mode 
)

static void is_altivec_return_reg ( rtx  reg,
void xyes 
) [static]

Definition at line 12886 of file rs6000.c.

References ALTIVEC_ARG_RETURN, and REGNO.

static bool is_branch_slot_insn ( rtx  insn  )  [static]

Definition at line 16706 of file rs6000.c.

References get_attr_type(), GET_CODE, INSN_P, PATTERN, TYPE_BRANCH, and USE.

static bool is_costly_group ( rtx group_insns,
rtx  next_insn 
) [static]

static bool is_cracked_insn ( rtx  insn  )  [static]

Definition at line 16678 of file rs6000.c.

References get_attr_type(), GET_CODE, INSN_P, PATTERN, TYPE_IDIV, and USE.

static int is_dispatch_slot_restricted ( rtx  insn  )  [static]

static bool is_load_insn ( rtx  insn  )  [static]

Definition at line 16885 of file rs6000.c.

References GET_CODE, INSN_P, is_load_insn1(), and PATTERN.

static bool is_load_insn1 ( rtx  pat  )  [static]

Definition at line 16862 of file rs6000.c.

References GET_CODE, is_load_insn1(), is_mem_ref(), NULL_RTX, SET, SET_SRC, XVECEXP, and XVECLEN.

static bool is_mem_ref ( rtx  pat  )  [static]

Definition at line 16835 of file rs6000.c.

References GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, is_mem_ref(), MEM, ret, XEXP, XVECEXP, and XVECLEN.

static bool is_microcoded_insn ( rtx  insn  )  [static]

Definition at line 16604 of file rs6000.c.

References get_attr_type(), GET_CODE, INSN_P, PATTERN, and USE.

static bool is_store_insn ( rtx  insn  )  [static]

Definition at line 16922 of file rs6000.c.

References INSN_P, is_store_insn1(), and PATTERN.

static bool is_store_insn1 ( rtx  pat  )  [static]

Definition at line 16899 of file rs6000.c.

References GET_CODE, is_mem_ref(), is_store_insn1(), NULL_RTX, SET, SET_DEST, XVECEXP, and XVECLEN.

bool legitimate_constant_pool_address_p ( rtx  x  ) 

static bool legitimate_indexed_address_p ( rtx  x,
int  strict 
) [static]

bool legitimate_indirect_address_p ( rtx  x,
int  strict 
) [inline]

Definition at line 2863 of file rs6000.c.

References GET_CODE, INT_REG_OK_FOR_BASE_P, and REG.

Referenced by lmw_operation(), rs6000_legitimate_address(), and stmw_operation().

static bool legitimate_lo_sum_address_p ( enum machine_mode  mode,
rtx  x,
int  strict 
) [static]

static bool legitimate_small_data_p ( enum machine_mode  mode,
rtx  x 
) [static]

Definition at line 2752 of file rs6000.c.

References ABI_V4, CONST, DEFAULT_ABI, flag_pic, GET_CODE, small_data_operand(), and TARGET_TOC.

Referenced by rs6000_legitimate_address().

bool macho_lo_sum_memory_operand ( rtx  x,
enum machine_mode  mode 
)

Definition at line 2869 of file rs6000.c.

References CONSTANT_P, flag_pic, GET_CODE, INT_REG_OK_FOR_BASE_P, MEM, REG, TARGET_MACHO, and XEXP.

Referenced by reg_or_mem_operand().

int mems_ok_for_quad_peep ( rtx  mem1,
rtx  mem2 
)

Definition at line 9898 of file rs6000.c.

References GET_CODE, INTVAL, MEM_VOLATILE_P, PLUS, REG, REGNO, and XEXP.

static bool no_global_regs_above ( int  first_greg  )  [static]

Definition at line 14239 of file rs6000.c.

References global_regs.

Referenced by rs6000_emit_epilogue(), and rs6000_emit_prologue().

int num_insns_constant ( rtx  op,
enum machine_mode  mode 
)

int num_insns_constant_wide ( HOST_WIDE_INT  value  ) 

Definition at line 2023 of file rs6000.c.

References CONST_OK_FOR_LETTER_P, high, low, num_insns_constant_wide(), and TARGET_POWERPC64.

void optimization_options ( int level  ATTRIBUTE_UNUSED,
int size  ATTRIBUTE_UNUSED 
)

Definition at line 1623 of file rs6000.c.

References ABI_DARWIN, DEFAULT_ABI, flag_errno_math, set_param_value(), and TARGET_MACHO.

void output_ascii ( FILE file,
const char *  p,
int  n 
)

Definition at line 16232 of file rs6000.c.

References c, char, co, fprintf(), fputs(), fwrite, i, MIN, NULL, and putc().

char* output_cbranch ( rtx  op,
const char *  label,
int  reversed,
rtx  insn 
)

char* output_e500_flip_gt_bit ( rtx  dst,
rtx  src 
)

Definition at line 11598 of file rs6000.c.

References a, b, CR0_REGNO, CR_REGNO_P, gcc_assert, GET_CODE, REG, REGNO, and sprintf().

void output_function_profiler ( FILE file,
int  labelno 
)

const char* output_isel ( rtx operands  ) 

Definition at line 12096 of file rs6000.c.

References GE, GET_CODE, LE, NE, PUT_CODE, and reverse_condition().

void output_profile_hook ( int labelno  ATTRIBUTE_UNUSED  ) 

void output_toc ( FILE file,
rtx  x,
int  labelno,
enum machine_mode  mode 
)

const char* output_vec_const_move ( rtx operands  ) 

static int pad_groups ( FILE dump,
int  sched_verbose,
rtx  prev_head_insn,
rtx  tail 
) [static]

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

void print_operand_address ( FILE file,
rtx  x 
)

static int redefine_groups ( FILE dump,
int  sched_verbose,
rtx  prev_head_insn,
rtx  tail 
) [static]

int registers_ok_for_quad_peep ( rtx  reg1,
rtx  reg2 
)

Definition at line 9879 of file rs6000.c.

References FP_REGNO_P, GET_CODE, REG, and REGNO.

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

static int rs6000_adjust_priority ( rtx insn  ATTRIBUTE_UNUSED,
int  priority 
) [static]

static int rs6000_adjust_priority ( rtx  ,
int   
) [static]

void rs6000_aix_emit_builtin_unwind_init ( void   ) 

static int rs6000_arg_partial_bytes ( CUMULATIVE_ARGS cum,
enum machine_mode  mode,
tree  type,
bool  named 
) [static]

static unsigned long rs6000_arg_size ( enum machine_mode  mode,
tree  type 
) [static]

Definition at line 4556 of file rs6000.c.

References GET_MODE_SIZE, int_size_in_bytes(), size, and TARGET_32BIT.

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

static tree rs6000_build_builtin_va_list ( void   )  [static]

static tree rs6000_builtin_mask_for_load ( void   )  [static]

Definition at line 1579 of file rs6000.c.

References TARGET_ALTIVEC.

static void rs6000_common_init_builtins ( void   )  [static]

static rtx rs6000_complex_function_value ( enum machine_mode  mode  )  [static]

void rs6000_conditional_register_usage ( void   ) 

static rtx rs6000_darwin64_record_arg ( CUMULATIVE_ARGS orig_cum,
tree  type,
int  named,
bool  retval 
) [static]

static void rs6000_darwin64_record_arg_advance_flush ( CUMULATIVE_ARGS cum,
HOST_WIDE_INT  bitpos 
) [static]

Definition at line 4574 of file rs6000.c.

References BITS_PER_WORD, mode, mode_for_size(), MODE_INT, and CUMULATIVE_ARGS::words.

static void rs6000_darwin64_record_arg_advance_recurse ( CUMULATIVE_ARGS cum,
tree  type,
HOST_WIDE_INT  startbitpos 
) [static]

static void rs6000_darwin64_record_arg_flush ( CUMULATIVE_ARGS cum,
HOST_WIDE_INT  bitpos,
rtx  rvec[],
int *  k 
) [static]

static void rs6000_darwin64_record_arg_recurse ( CUMULATIVE_ARGS cum,
tree  type,
HOST_WIDE_INT  startbitpos,
rtx  rvec[],
int *  k 
) [static]

unsigned int rs6000_dbx_register_number ( unsigned int  regno  ) 

static rtx rs6000_dwarf_register_span ( rtx  reg  )  [static]

static enum machine_mode rs6000_eh_return_filter_mode ( void   )  [static]

Definition at line 19482 of file rs6000.c.

References TARGET_32BIT, and word_mode.

static void rs6000_eliminate_indexed_memrefs ( rtx  operands[2]  )  [static]

static void rs6000_emit_allocate_stack ( HOST_WIDE_INT  size,
int  copy_r12 
) [static]

void rs6000_emit_cbranch ( enum rtx_code  code,
rtx  loc 
)

int rs6000_emit_cmove ( rtx  dest,
rtx  op,
rtx  true_cond,
rtx  false_cond 
)

void rs6000_emit_eh_reg_restore ( rtx  source,
rtx  scratch 
)

void rs6000_emit_epilogue ( int  sibcall  ) 

Definition at line 14880 of file rs6000.c.

References ABI_DARWIN, ABI_V4, abort, addr(), ALTIVEC_REG_BIT, rs6000_stack::altivec_save_offset, rs6000_stack::altivec_size, b, call_used_regs, count, CR0_REGNO, CR2_REGNO, rs6000_stack::cr_save_offset, rs6000_stack::cr_save_p, current_function_calls_alloca, current_function_calls_eh_return, DEFAULT_ABI, EH_RETURN_DATA_REGNO, EH_RETURN_STACKADJ_RTX, rs6000_stack::ehrd_offset, emit_insn(), emit_jump_insn(), emit_move_insn(), rs6000_stack::first_altivec_reg_save, rs6000_stack::first_fp_reg_save, rs6000_stack::first_gp_reg_save, FIXED_SCRATCH, flag_pic, FP_SAVE_INLINE, rs6000_stack::fp_save_offset, frame_pointer_needed, gcc_assert, gen_adddi3(), gen_addsi3(), gen_frame_mem(), gen_frame_mem_offset(), GEN_INT, gen_rtx_CLOBBER, gen_rtx_MEM(), gen_rtx_PARALLEL, gen_rtx_PLUS, gen_rtx_REG(), gen_rtx_RETURN, gen_rtx_SET, gen_rtx_SYMBOL_REF, gen_rtx_UNSPEC, gen_rtx_USE, generate_set_vrsave(), ggc_strdup, rs6000_stack::gp_save_offset, i, info, INVALID_REGNUM, LAST_ALTIVEC_REGNO, LINK_REGISTER_REGNUM, rs6000_stack::lr_save_offset, rs6000_stack::lr_save_p, mem, no_global_regs_above(), offset, optimize_size, p, plus_constant, Pmode, PROCESSOR_PPC601, PROCESSOR_PPC603, PROCESSOR_PPC750, rs6000_stack::push_p, r, reg_mode, regs_ever_live, RESTORE_FP_PREFIX, RESTORE_FP_SUFFIX, rs6000_cpu, rs6000_emit_stack_tie(), RS6000_PIC_OFFSET_TABLE_REGNUM, rs6000_stack_info(), rtvec_alloc(), RTVEC_ELT, set_mem_alias_set(), rs6000_stack::spe_64bit_regs_used, SPE_CONST_OFFSET_OK, rs6000_stack::spe_gp_save_offset, sprintf(), strcpy, TARGET_32BIT, TARGET_AIX, TARGET_ALTIVEC, TARGET_ALTIVEC_ABI, TARGET_ALTIVEC_VRSAVE, TARGET_MINIMAL_TOC, TARGET_MULTIPLE, TARGET_POWERPC64, TARGET_SPE_ABI, TARGET_TOC, rs6000_stack::total_size, rs6000_stack::vrsave_mask, rs6000_stack::vrsave_save_offset, and WORLD_SAVE_P.

static int rs6000_emit_int_cmove ( rtx  dest,
rtx  op,
rtx  true_cond,
rtx  false_cond 
) [static]

Definition at line 12071 of file rs6000.c.

References emit_insn(), GET_CODE, GET_MODE, rs6000_generate_compare(), and XEXP.

void rs6000_emit_load_toc_table ( int  fromprolog  ) 

void rs6000_emit_minmax ( rtx  dest,
enum rtx_code  code,
rtx  op0,
rtx  op1 
)

Definition at line 12111 of file rs6000.c.

References c, emit_move_insn(), gcc_assert, GE, GET_MODE, mode, and target.

void rs6000_emit_move ( rtx  dest,
rtx  source,
enum machine_mode  mode 
)

Definition at line 3926 of file rs6000.c.

References ABI_AIX, ABI_DARWIN, ABI_V4, add_operand(), addend, adjust_address, ASM_OUTPUT_SPECIAL_POOL_ENTRY_P, CONST, CONST_DOUBLE_HIGH, CONST_DOUBLE_LOW, CONSTANT_P, CONSTANT_POOL_ADDRESS_P, constant_pool_expr_p(), create_TOC_reference(), DEFAULT_ABI, easy_fp_constant(), easy_vector_constant(), emit_insn(), emit_move_insn(), FIRST_PSEUDO_REGISTER, flag_pic, FLOAT_MODE_P, force_const_mem(), force_operand(), force_reg(), FP_REGNO_P, gcc_assert, gcc_unreachable, gen_adddi3(), gen_addsi3(), gen_const_mem(), gen_int_mode(), gen_reg_rtx(), gen_rtvec(), gen_rtx_CLOBBER, gen_rtx_PARALLEL, gen_rtx_PLUS, gen_rtx_SCRATCH, gen_rtx_SET, gen_rtx_SYMBOL_REF, gen_rtx_USE, general_operand(), GET_CODE, GET_MODE_BITSIZE, GET_MODE_SIZE, get_pool_constant(), get_pool_mode(), get_TOC_alias_set(), got_operand(), gpc_reg_operand(), HOST_BITS_PER_WIDE_INT, legitimate_constant_pool_address_p(), MACHO_DYNAMIC_NO_PIC_P, MACHOPIC_INDIRECT, MEM, MEM_ALIGN, MEM_VOLATILE_P, no_new_pseudos, nonimmediate_operand(), NULL, num_insns_constant(), operands, PLUS, Pmode, REG, REGNO, reload_completed, reload_in_progress, rs6000_eliminate_indexed_memrefs(), rs6000_emit_move(), rs6000_legitimize_tls_address(), rs6000_tls_referenced_p(), set_mem_alias_set(), side_effects_p(), simplify_gen_subreg(), SLOW_UNALIGNED_ACCESS, small_data_operand(), sym, SYMBOL_REF_DATA, SYMBOL_REF_FLAGS, SYMBOL_REF_TLS_MODEL, SYMBOL_REF_USED, target, TARGET_ELF, TARGET_FPRS, TARGET_HARD_FLOAT, TARGET_IEEEQUAD, TARGET_LONG_DOUBLE_128, TARGET_NO_SUM_IN_TOC, TARGET_NO_TOC, TARGET_POWER, TARGET_POWERPC, TARGET_TOC, tmp, toc_relative_expr_p(), true_regnum(), validize_mem(), XEXP, and XSTR.

void rs6000_emit_prologue ( void   ) 

Definition at line 14255 of file rs6000.c.

References ABI_AIX, ABI_DARWIN, ABI_V4, addr(), altivec_frame_fixup(), ALTIVEC_REG_BIT, rs6000_stack::altivec_save_offset, rs6000_stack::altivec_size, b, call_used_regs, cfun, CR2_REGNO, rs6000_stack::cr_save_offset, rs6000_stack::cr_save_p, current_function_calls_eh_return, current_function_uses_pic_offset_table, DEFAULT_ABI, dest, EDGE_COUNT, EH_RETURN_DATA_REGNO, rs6000_stack::ehrd_offset, emit_frame_save(), emit_insn(), emit_move_insn(), EXIT_BLOCK_PTR, FALSE, rs6000_stack::first_altivec_reg_save, rs6000_stack::first_fp_reg_save, rs6000_stack::first_gp_reg_save, FIXED_SCRATCH, flag_pic, FP_SAVE_INLINE, rs6000_stack::fp_save_offset, frame_pointer_needed, FRAME_POINTER_REGNUM, gcc_assert, gen_blockage(), gen_frame_mem(), GEN_INT, gen_iorsi3(), gen_nop(), gen_rtx_CLOBBER, gen_rtx_EXPR_LIST, gen_rtx_MEM(), gen_rtx_PARALLEL, gen_rtx_PLUS, gen_rtx_REG(), gen_rtx_SET, gen_rtx_SYMBOL_REF, gen_rtx_USE, generate_set_vrsave(), GET_CODE, get_pool_size(), ggc_strdup, rs6000_stack::gp_save_offset, HARD_FRAME_POINTER_REGNUM, HOST_WIDE_INT, i, info, insn, INVALID_REGNUM, LAST_ALTIVEC_REGNO, LINK_REGISTER_REGNUM, lr, rs6000_stack::lr_save_offset, rs6000_stack::lr_save_p, machopic_function_base_sym(), mem, no_global_regs_above(), NULL, NULL_RTX, offset, p, PATTERN, plus_constant, Pmode, rs6000_stack::push_p, REG_FRAME_RELATED_EXPR, reg_mode, REG_NOTES, REGNO, regs_ever_live, rs6000_emit_allocate_stack(), rs6000_emit_load_toc_table(), rs6000_emit_stack_tie(), rs6000_frame_related(), rs6000_maybe_dead(), RS6000_PIC_OFFSET_TABLE_REGNUM, rs6000_stack_info(), rtvec_alloc(), RTVEC_ELT, RTX_FRAME_RELATED_P, SAVE_FP_PREFIX, SAVE_FP_SUFFIX, set_mem_alias_set(), rs6000_stack::spe_64bit_regs_used, SPE_CONST_OFFSET_OK, rs6000_stack::spe_gp_save_offset, sprintf(), src, STACK_POINTER_REGNUM, sz(), TARGET_32BIT, TARGET_AIX, TARGET_ALTIVEC, TARGET_ALTIVEC_ABI, TARGET_ALTIVEC_VRSAVE, TARGET_ELF, TARGET_FIX_AND_CONTINUE, TARGET_MACHO, TARGET_MINIMAL_TOC, TARGET_MULTIPLE, TARGET_POWERPC64, TARGET_SECURE_PLT, TARGET_SPE_ABI, TARGET_TOC, rs6000_stack::total_size, TRUE, rs6000_stack::vrsave_mask, VRSAVE_REGNO, rs6000_stack::vrsave_save_offset, and WORLD_SAVE_P.

void rs6000_emit_sCOND ( enum rtx_code  code,
rtx  result 
)

rtx rs6000_emit_set_const ( rtx  dest,
enum machine_mode  mode,
rtx  source,
int n  ATTRIBUTE_UNUSED 
)

static rtx rs6000_emit_set_long_const ( rtx  dest,
HOST_WIDE_INT  c1,
HOST_WIDE_INT  c2 
) [static]

static void rs6000_emit_stack_tie ( void   )  [static]

Definition at line 13862 of file rs6000.c.

References emit_insn(), gen_frame_mem(), gen_rtx_REG(), mem, Pmode, and STACK_POINTER_REGNUM.

void rs6000_emit_swdivdf ( rtx  res,
rtx  n,
rtx  d 
)

void rs6000_emit_swdivsf ( rtx  res,
rtx  n,
rtx  d 
)

void rs6000_emit_sync ( enum rtx_code  code,
enum machine_mode  mode,
rtx  m,
rtx  op,
rtx  before_param,
rtx  after_param,
bool  sync_p 
)

static rtx rs6000_emit_vector_compare ( enum rtx_code  rcode,
rtx  op0,
rtx  op1,
enum machine_mode  dmode 
) [static]

int rs6000_emit_vector_cond_expr ( rtx  dest,
rtx  op1,
rtx  op2,
rtx  cond,
rtx  cc_op0,
rtx  cc_op1 
)

static void rs6000_emit_vector_select ( rtx  dest,
rtx  op1,
rtx  op2,
rtx  mask 
) [static]

static rtx rs6000_expand_binop_builtin ( enum insn_code  icode,
tree  arglist,
rtx  target 
) [static]

static rtx rs6000_expand_builtin ( tree  exp,
rtx  target,
rtx subtarget  ATTRIBUTE_UNUSED,
enum machine_mode mode  ATTRIBUTE_UNUSED,
int ignore  ATTRIBUTE_UNUSED 
) [static]

static rtx rs6000_expand_builtin ( tree  ,
rtx  ,
rtx  ,
enum  machine_mode,
int   
) [static]

void rs6000_expand_compare_and_swapqhi ( rtx  dst,
rtx  mem,
rtx  oldval,
rtx  newval 
)

static rtx rs6000_expand_ternop_builtin ( enum insn_code  icode,
tree  arglist,
rtx  target 
) [static]

static rtx rs6000_expand_unop_builtin ( enum insn_code  icode,
tree  arglist,
rtx  target 
) [static]

void rs6000_expand_vector_extract ( rtx  target,
rtx  vec,
int  elt 
)

void rs6000_expand_vector_init ( rtx  target,
rtx  vals 
)

void rs6000_expand_vector_set ( rtx  target,
rtx  val,
int  elt 
)

void rs6000_fatal_bad_address ( rtx  op  ) 

Definition at line 17903 of file rs6000.c.

References fatal_insn.

static void rs6000_file_start ( void   )  [static]

static void rs6000_frame_related ( rtx  insn,
rtx  reg,
HOST_WIDE_INT  val,
rtx  reg2,
rtx  rreg 
) [static]

static bool rs6000_function_ok_for_sibcall ( tree  decl,
tree exp  ATTRIBUTE_UNUSED 
) [static]

static bool rs6000_function_ok_for_sibcall ( tree  ,
tree   
) [static]

rtx rs6000_function_value ( tree  valtype,
tree func  ATTRIBUTE_UNUSED 
)

void rs6000_gen_section_name ( char **  buf,
const char *  filename,
const char *  section_desc 
)

Definition at line 16303 of file rs6000.c.

References ISALNUM, len, p, q, strcpy, strlen(), and xmalloc().

static rtx rs6000_generate_compare ( enum rtx_code  code  )  [static]

static const char* rs6000_get_some_local_dynamic_name ( void   )  [static]

static int rs6000_get_some_local_dynamic_name_1 ( rtx px,
void *data  ATTRIBUTE_UNUSED 
) [static]

Definition at line 10233 of file rs6000.c.

References cfun, GET_CODE, str, SYMBOL_REF_TLS_MODEL, TLS_MODEL_LOCAL_DYNAMIC, and XSTR.

tree rs6000_gimplify_va_arg ( tree  valist,
tree  type,
tree pre_p,
tree post_p 
)

rtx rs6000_got_register ( rtx value  ATTRIBUTE_UNUSED  ) 

static tree rs6000_handle_altivec_attribute ( tree node,
tree name  ATTRIBUTE_UNUSED,
tree  args,
int flags  ATTRIBUTE_UNUSED,
bool no_add_attrs 
) [static]

static tree rs6000_handle_altivec_attribute ( tree ,
tree  ,
tree  ,
int  ,
bool  
) [static]

static tree rs6000_handle_longcall_attribute ( tree node,
tree  name,
tree args  ATTRIBUTE_UNUSED,
int flags  ATTRIBUTE_UNUSED,
bool no_add_attrs 
) [static]

Definition at line 17621 of file rs6000.c.

References IDENTIFIER_POINTER, NULL_TREE, TREE_CODE, and warning.

static tree rs6000_handle_longcall_attribute ( tree ,
tree  ,
tree  ,
int  ,
bool  
) [static]

static bool rs6000_handle_option ( size_t  code,
const char *  arg,
int  value 
) [static]

static tree rs6000_handle_struct_attribute ( tree node,
tree  name,
tree args  ATTRIBUTE_UNUSED,
int flags  ATTRIBUTE_UNUSED,
bool no_add_attrs 
) [static]

static tree rs6000_handle_struct_attribute ( tree ,
tree  ,
tree  ,
int  ,
bool  
) [static]

static int rs6000_hard_regno_mode_ok ( int  regno,
enum machine_mode  mode 
) [static]

int rs6000_hard_regno_nregs ( int  regno,
enum machine_mode  mode 
)

static unsigned rs6000_hash_constant ( rtx  k  )  [static]

static void rs6000_init_builtins ( void   )  [static]

static void rs6000_init_hard_regno_mode_ok ( void   )  [static]

Definition at line 1092 of file rs6000.c.

References FIRST_PSEUDO_REGISTER, NUM_MACHINE_MODES, r, and rs6000_hard_regno_mode_ok().

static void rs6000_init_libfuncs ( void   )  [static]

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

Definition at line 10132 of file rs6000.c.

References ggc_alloc_cleared.

HOST_WIDE_INT rs6000_initial_elimination_offset ( int  from,
int  to 
)

void rs6000_initialize_trampoline ( rtx  addr,
rtx  fnaddr,
rtx  cxt 
)

static const char * rs6000_invalid_within_doloop ( rtx  insn  )  [static]

Definition at line 13535 of file rs6000.c.

References CALL_P, GET_CODE, JUMP_P, NULL, and PATTERN.

static bool rs6000_is_costly_dependence ( rtx  insn,
rtx  next,
rtx  link,
int  cost,
int  distance 
) [static]

static bool rs6000_is_opaque_type ( tree  type  )  [static]

static int rs6000_issue_rate ( void   )  [static]

Definition at line 16789 of file rs6000.c.

References reload_completed, and rs6000_cpu_attr.

int rs6000_legitimate_address ( enum machine_mode  mode,
rtx  x,
int  reg_ok_strict 
)

bool rs6000_legitimate_offset_address_p ( enum machine_mode  mode,
rtx  x,
int  strict 
)

rtx rs6000_legitimize_address ( rtx  x,
rtx oldx  ATTRIBUTE_UNUSED,
enum machine_mode  mode 
)

rtx rs6000_legitimize_reload_address ( rtx  x,
enum machine_mode  mode,
int  opnum,
int  type,
int ind_levels  ATTRIBUTE_UNUSED,
int *  win 
)

static rtx rs6000_legitimize_tls_address ( rtx  addr,
enum tls_model  model 
) [static]

rtx rs6000_libcall_value ( enum machine_mode  mode  ) 

rtx rs6000_longcall_ref ( rtx  call_ref  ) 

static const char * rs6000_mangle_fundamental_type ( tree  type  )  [static]

static void rs6000_maybe_dead ( rtx  insn  )  [static]

Definition at line 13600 of file rs6000.c.

References const0_rtx, gen_rtx_EXPR_LIST, REG_MAYBE_DEAD, and REG_NOTES.

int rs6000_memory_move_cost ( enum machine_mode  mode,
enum reg_class  class,
int in  ATTRIBUTE_UNUSED 
)

static rtx rs6000_mixed_function_arg ( enum machine_mode  mode,
tree  type,
int  align_words 
) [static]

bool rs6000_mode_dependent_address ( rtx  addr  ) 

Definition at line 3581 of file rs6000.c.

References GET_CODE, INTVAL, PLUS, TARGET_UPDATE, val, and XEXP.

static void rs6000_move_block_from_reg ( int  regno,
rtx  x,
int  nregs 
) [static]

static bool rs6000_ms_bitfield_layout_p ( tree  record_type  )  [static]

Definition at line 17722 of file rs6000.c.

References lookup_attribute(), TARGET_USE_MS_BITFIELD_LAYOUT, and TYPE_ATTRIBUTES.

static bool rs6000_must_pass_in_stack ( enum machine_mode  mode,
tree  type 
) [static]

bool rs6000_offsettable_memref_p ( rtx  op  ) 

static void rs6000_output_dwarf_dtprel ( FILE file,
int  size,
rtx  x 
) [static]

Definition at line 3064 of file rs6000.c.

References DOUBLE_INT_ASM_OP, fputs(), gcc_unreachable, and output_addr_const().

static void rs6000_output_dwarf_dtprel ( FILE ,
static rtx rs6000_darwin64_record_arg (CUMULATIVE_ARGS  int,
static rtx rs6000_emit_vector_compare (enum  rtx 
) [static]

Definition at line 714 of file rs6000.c.

void rs6000_output_function_entry ( FILE file,
const char *  fname 
)

static void rs6000_output_function_epilogue ( FILE file,
HOST_WIDE_INT size  ATTRIBUTE_UNUSED 
) [static]

static void rs6000_output_function_epilogue ( FILE ,
HOST_WIDE_INT   
) [static]

static void rs6000_output_function_prologue ( FILE file,
HOST_WIDE_INT size  ATTRIBUTE_UNUSED 
) [static]

static void rs6000_output_function_prologue ( FILE ,
HOST_WIDE_INT   
) [static]

const char* rs6000_output_load_multiple ( rtx  operands[3]  ) 

Definition at line 9577 of file rs6000.c.

References GEN_INT, gen_rtx_REG(), output_asm_insn(), refers_to_regno_p(), REGNO, words, and XVECLEN.

static void rs6000_output_mi_thunk ( FILE file,
tree thunk_fndecl  ATTRIBUTE_UNUSED,
HOST_WIDE_INT  delta,
HOST_WIDE_INT  vcall_offset,
tree  function 
) [static]

static void rs6000_output_mi_thunk ( FILE ,
tree  ,
HOST_WIDE_INT  ,
HOST_WIDE_INT  ,
tree   
) [static]

void rs6000_output_symbol_ref ( FILE file,
rtx  x 
)

Definition at line 15889 of file rs6000.c.

References assemble_name(), RS6000_OUTPUT_BASENAME, VTABLE_NAME_P, and XSTR.

void rs6000_override_options ( const char *  default_cpu  ) 

Definition at line 1113 of file rs6000.c.

References ABI_AIX, ABI_DARWIN, ABI_V4, abort, align_functions, align_jumps, align_jumps_max_skip, align_loops, align_loops_max_skip, gcc_target::asm_out::aligned_op, all_deps_costly, ARRAY_SIZE, ASM_GENERATE_INTERNAL_LABEL, gcc_target::asm_out, atoi(), base, BYTES_BIG_ENDIAN, gcc_target::calls, darwin_one_byte_bool, DEFAULT_ABI, gcc_target::asm_out::asm_int_op::di, DRAFT_V4_STRUCT_RET, error(), gcc_unreachable, i, ibm_extended_format, init_machine_status, MASK_AIX_STRUCT_RET, MASK_ALIGN_NATURAL, MASK_ALTIVEC, MASK_MFCRF, MASK_MULTIPLE, MASK_NEW_MNEMONICS, MASK_POWER, MASK_POWER2, MASK_POWERPC, MASK_POWERPC64, MASK_PPC_GFXOPT, MASK_PPC_GPOPT, MASK_SOFT_FLOAT, MASK_STRICT_ALIGN, MASK_STRING, memcpy, rs6000_cpu_select::name, new_alias_set(), no_dep_costly, NULL, optimize_size, OS_MISSING_ALTIVEC, OS_MISSING_POWERPC64, POWER_MASKS, POWERPC_MASKS, PROCESSOR_COMMON, PROCESSOR_DEFAULT, PROCESSOR_DEFAULT64, PROCESSOR_MPCCORE, PROCESSOR_POWER, PROCESSOR_POWER4, PROCESSOR_POWER5, PROCESSOR_POWERPC, PROCESSOR_POWERPC64, PROCESSOR_PPC403, PROCESSOR_PPC405, PROCESSOR_PPC440, PROCESSOR_PPC601, PROCESSOR_PPC603, PROCESSOR_PPC604, PROCESSOR_PPC604e, PROCESSOR_PPC620, PROCESSOR_PPC630, PROCESSOR_PPC7400, PROCESSOR_PPC7450, PROCESSOR_PPC750, PROCESSOR_PPC8540, PROCESSOR_RIOS1, PROCESSOR_RIOS2, PROCESSOR_RS64A, ptr, REAL_MODE_FORMAT, rs6000_alignment_flags, rs6000_cpu, rs6000_default_long_calls, RS6000_DEFAULT_LONG_DOUBLE_SIZE, rs6000_explicit_options, rs6000_init_hard_regno_mode_ok(), rs6000_init_machine_status(), rs6000_isel, rs6000_longcall_switch, rs6000_parse_abi_options(), rs6000_parse_alignment_option(), rs6000_parse_float_gprs_option(), rs6000_parse_tls_size_option(), rs6000_parse_yes_no_option(), rs6000_reg_names, rs6000_sched_restricted_insns_priority, rs6000_spe, rs6000_sr_alias_set, rs6000_traceback, rs6000_traceback_name, rs6000_warn_altivec_long, rs6000_warn_altivec_long_switch, sched_finish_none, sched_finish_pad_groups, sched_finish_regroup_exact, rs6000_cpu_select::set_arch_p, rs6000_cpu_select::set_tune_p, size, gcc_target::calls::split_complex_arg, store_to_load_dep_costly, strcmp(), rs6000_cpu_select::string, strncmp(), strtol(), SUB3TARGET_OVERRIDE_OPTIONS, SUBSUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_OVERRIDE_OPTIONS, tail, TARGET_64BIT, TARGET_ALTIVEC, TARGET_ALTIVEC_VRSAVE, TARGET_E500, TARGET_ELF, target_flags, target_flags_explicit, TARGET_IEEEQUAD, TARGET_LONG_DOUBLE_128, TARGET_MULTIPLE, TARGET_NO_FP_IN_TOC, TARGET_POWERPC64, TARGET_REGNAMES, TARGET_STRING, TARGET_TOC, true_store_to_load_dep_costly, gcc_target::asm_out::unaligned_op, and warning.

static unsigned int rs6000_parm_start ( enum machine_mode  mode,
tree  type,
unsigned int  nwords 
) [static]

static void rs6000_parse_tls_size_option ( void   )  [static]

Definition at line 1608 of file rs6000.c.

References error(), and strcmp().

static void rs6000_parse_yes_no_option ( const char *  name,
const char *  value,
int *  flag 
) [static]

Definition at line 1593 of file rs6000.c.

References error(), and strcmp().

static bool rs6000_pass_by_reference ( CUMULATIVE_ARGS *cum  ATTRIBUTE_UNUSED,
enum machine_mode  mode,
tree  type,
bool named  ATTRIBUTE_UNUSED 
) [static]

static int rs6000_ra_ever_killed ( void   )  [static]

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

rtx rs6000_return_addr ( int  count,
rtx  frame 
)

static bool rs6000_return_in_memory ( tree  type,
tree fntype  ATTRIBUTE_UNUSED 
) [static]

static bool rs6000_return_in_memory ( tree  ,
tree   
) [static]

enum rtx_code rs6000_reverse_condition ( enum machine_mode  mode,
enum rtx_code  code 
)

static bool rs6000_rtx_costs ( rtx  x,
int  code,
int  outer_code,
int *  total 
) [static]

static bool rs6000_scalar_mode_supported_p ( enum machine_mode  mode  )  [static]

Definition at line 19489 of file rs6000.c.

References DECIMAL_FLOAT_MODE_P, and default_scalar_mode_supported_p().

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

enum reg_class rs6000_secondary_reload_class ( enum reg_class  class,
enum machine_mode mode  ATTRIBUTE_UNUSED,
rtx  in 
)

static void rs6000_set_default_type_attributes ( tree  type  )  [static]

static rtx rs6000_spe_function_arg ( CUMULATIVE_ARGS cum,
enum machine_mode  mode,
tree  type 
) [static]

unsigned int rs6000_special_round_type_align ( tree  type,
unsigned int  computed,
unsigned int  specified 
)

Definition at line 2608 of file rs6000.c.

References align, error_mark_node, MAX, NULL, TREE_CHAIN, TREE_CODE, TREE_TYPE, TYPE_FIELDS, and TYPE_MODE.

void rs6000_split_atomic_op ( enum rtx_code  code,
rtx  mem,
rtx  val,
rtx  before,
rtx  after,
rtx  scratch 
)

void rs6000_split_compare_and_swap ( rtx  retval,
rtx  mem,
rtx  oldval,
rtx  newval,
rtx  scratch 
)

void rs6000_split_compare_and_swapqhi ( rtx  dest,
rtx  mask,
rtx  oldval,
rtx  newval,
rtx  mem,
rtx  scratch 
)

void rs6000_split_lock_test_and_set ( rtx  retval,
rtx  mem,
rtx  val,
rtx  scratch 
)

void rs6000_split_multireg_move ( rtx  dst,
rtx  src 
)

static rs6000_stack_t* rs6000_stack_info ( void   )  [static]

Definition at line 7614 of file rs6000.c.

References rs6000_stack::abi, ABI_AIX, ABI_AIX_NODESC, ABI_DARWIN, ABI_NONE, ABI_STACK_BOUNDARY, ABI_V4, abort, rs6000_stack::altivec_padding_size, rs6000_stack::altivec_save_offset, rs6000_stack::altivec_size, BITS_PER_UNIT, rs6000_stack::calls_p, cfun, compute_vrsave_mask(), CR2_REGNO, CR3_REGNO, CR4_REGNO, rs6000_stack::cr_save_offset, rs6000_stack::cr_save_p, rs6000_stack::cr_size, current_function_calls_alloca, current_function_calls_eh_return, current_function_is_leaf, current_function_outgoing_args_size, current_function_profile, current_function_uses_pic_offset_table, DEFAULT_ABI, EH_RETURN_DATA_REGNO, rs6000_stack::ehrd_offset, rs6000_stack::first_altivec_reg_save, first_altivec_reg_to_save(), rs6000_stack::first_fp_reg_save, first_fp_reg_to_save(), rs6000_stack::first_gp_reg_save, first_reg_to_save(), rs6000_stack::fixed_size, flag_pic, FP_SAVE_INLINE, rs6000_stack::fp_save_offset, rs6000_stack::fp_size, frame_pointer_needed, get_frame_size(), get_pool_size(), rs6000_stack::gp_save_offset, rs6000_stack::gp_size, i, info, INVALID_REGNUM, LAST_ALTIVEC_REGNO, LINK_REGISTER_REGNUM, rs6000_stack::lr_save_offset, rs6000_stack::lr_save_p, rs6000_stack::lr_size, NO_DEBUG, rs6000_stack::parm_size, rs6000_stack::push_p, rs6000_stack::reg_size, regs_ever_live, RS6000_ALIGN, RS6000_PIC_OFFSET_TABLE_REGNUM, rs6000_ra_ever_killed(), RS6000_SAVE_AREA, RS6000_VARARGS_AREA, rs6000_stack::save_size, TARGET_32BIT, TARGET_ALTIVEC_ABI, TARGET_MINIMAL_TOC, TARGET_POWERPC64, TARGET_RELOCATABLE, TARGET_TOC, rs6000_stack::toc_save_offset, rs6000_stack::toc_save_p, rs6000_stack::toc_size, rs6000_stack::total_size, UNITS_PER_WORD, rs6000_stack::varargs_size, rs6000_stack::vars_size, rs6000_stack::vrsave_mask, rs6000_stack::vrsave_save_offset, rs6000_stack::vrsave_size, and write_symbols.

Referenced by debug_stack_info(), direct_return(), rs6000_emit_eh_reg_restore(), rs6000_emit_epilogue(), rs6000_emit_prologue(), rs6000_initial_elimination_offset(), rs6000_output_function_epilogue(), and rs6000_output_function_prologue().

static tree rs6000_stack_protect_fail ( void   )  [static]

bool rs6000_tls_referenced_p ( rtx  x  ) 

Definition at line 3297 of file rs6000.c.

References for_each_rtx(), rs6000_tls_symbol_ref_1(), and TARGET_HAVE_TLS.

Referenced by rs6000_emit_move().

static int rs6000_tls_symbol_ref_1 ( rtx x,
void *data  ATTRIBUTE_UNUSED 
) [static]

Definition at line 3309 of file rs6000.c.

References RS6000_SYMBOL_REF_TLS_P.

int rs6000_trampoline_size ( void   ) 

Definition at line 17398 of file rs6000.c.

References ABI_AIX, ABI_AIX_NODESC, ABI_DARWIN, ABI_V4, abort, DEFAULT_ABI, gcc_unreachable, ret, and TARGET_32BIT.

static bool rs6000_use_blocks_for_constant_p ( enum machine_mode  mode,
rtx  x 
) [static]

Definition at line 17868 of file rs6000.c.

References ASM_OUTPUT_SPECIAL_POOL_ENTRY_P.

static int rs6000_use_sched_lookahead ( void   )  [static]

Definition at line 16825 of file rs6000.c.

References rs6000_cpu_attr.

void rs6000_va_start ( tree  valist,
rtx  nextarg 
)

static int rs6000_variable_issue ( FILE *stream  ATTRIBUTE_UNUSED,
int verbose  ATTRIBUTE_UNUSED,
rtx  insn,
int  more 
) [static]

Definition at line 16512 of file rs6000.c.

References GET_CODE, is_cracked_insn(), is_microcoded_insn(), PATTERN, and USE.

static int rs6000_variable_issue ( FILE ,
int  ,
rtx  ,
int   
) [static]

static bool rs6000_vector_mode_supported_p ( enum machine_mode  mode  )  [static]

Definition at line 19499 of file rs6000.c.

References ALTIVEC_VECTOR_MODE, SPE_VECTOR_MODE, TARGET_ALTIVEC, and TARGET_SPE.

static void setup_incoming_varargs ( CUMULATIVE_ARGS cum,
enum machine_mode mode  ,
tree type  ,
int *pretend_size  ATTRIBUTE_UNUSED,
int  no_rtl 
) [static]

int small_data_operand ( rtx op  ATTRIBUTE_UNUSED,
enum machine_mode mode  ATTRIBUTE_UNUSED 
)

static rtx spe_build_register_parallel ( enum machine_mode  mode,
int  gregno 
) [static]

static rtx spe_expand_builtin ( tree  exp,
rtx  target,
bool expandedp 
) [static]

static rtx spe_expand_evsel_builtin ( enum insn_code  icode,
tree  arglist,
rtx  target 
) [static]

static rtx spe_expand_predicate_builtin ( enum insn_code  icode,
tree  arglist,
rtx  target 
) [static]

static rtx spe_expand_stv_builtin ( enum insn_code  icode,
tree  arglist 
) [static]

static bool spe_func_has_64bit_regs_p ( void   )  [static]

static void spe_init_builtins ( void   )  [static]

Definition at line 8134 of file rs6000.c.

References ARRAY_SIZE, build_decl, build_function_type(), build_pointer_type(), char_type_node, builtin_description::code, d, def_builtin, enable_mask_for_builtins(), gcc_unreachable, get_identifier(), builtin_description::icode, integer_type_node, builtin_description::mask, builtin_description::name, NULL_TREE, opaque_p_V2SI_type_node, opaque_V2SF_type_node, opaque_V2SI_type_node, short_unsigned_type_node, signed_char_type_node, SPE_BUILTIN_EVABS, SPE_BUILTIN_EVADDW, SPE_BUILTIN_EVCMPEQ, SPE_BUILTIN_EVFSTSTLT, SPE_BUILTIN_EVLDD, SPE_BUILTIN_EVLDDX, SPE_BUILTIN_EVLDH, SPE_BUILTIN_EVLDHX, SPE_BUILTIN_EVLDW, SPE_BUILTIN_EVLDWX, SPE_BUILTIN_EVLHHESPLAT, SPE_BUILTIN_EVLHHESPLATX, SPE_BUILTIN_EVLHHOSSPLAT, SPE_BUILTIN_EVLHHOSSPLATX, SPE_BUILTIN_EVLHHOUSPLAT, SPE_BUILTIN_EVLHHOUSPLATX, SPE_BUILTIN_EVLWHE, SPE_BUILTIN_EVLWHEX, SPE_BUILTIN_EVLWHOS, SPE_BUILTIN_EVLWHOSX, SPE_BUILTIN_EVLWHOU, SPE_BUILTIN_EVLWHOUX, SPE_BUILTIN_EVLWHSPLAT, SPE_BUILTIN_EVLWHSPLATX, SPE_BUILTIN_EVLWWSPLAT, SPE_BUILTIN_EVLWWSPLATX, SPE_BUILTIN_EVSEL_CMPGTS, SPE_BUILTIN_EVSEL_FSTSTEQ, SPE_BUILTIN_EVSPLATFI, SPE_BUILTIN_EVSPLATI, SPE_BUILTIN_EVSTDD, SPE_BUILTIN_EVSTDDX, SPE_BUILTIN_EVSTDH, SPE_BUILTIN_EVSTDHX, SPE_BUILTIN_EVSTDW, SPE_BUILTIN_EVSTDWX, SPE_BUILTIN_EVSTWHE, SPE_BUILTIN_EVSTWHEX, SPE_BUILTIN_EVSTWHO, SPE_BUILTIN_EVSTWHOX, SPE_BUILTIN_EVSTWWE, SPE_BUILTIN_EVSTWWEX, SPE_BUILTIN_EVSTWWO, SPE_BUILTIN_EVSTWWOX, SPE_BUILTIN_EVSUBFUSIAAW, SPE_BUILTIN_EVXOR, SPE_BUILTIN_MFSPEFSCR, SPE_BUILTIN_MTSPEFSCR, target_flags, tree_cons, unsigned_type_node, void_list_node, and void_type_node.

static rtx spe_synthesize_frame_save ( rtx  real  )  [static]

static int toc_hash_eq ( const void h1,
const void h2 
) [static]

Definition at line 15864 of file rs6000.c.

References toc_hash_struct::key_mode, and rtx_equal_p().

static unsigned toc_hash_function ( const void hash_entry  )  [static]

bool toc_relative_expr_p ( rtx  op  ) 

Definition at line 2734 of file rs6000.c.

References constant_pool_expr_1().

void validate_condition_mode ( enum rtx_code  code,
enum machine_mode  mode 
)

static bool vspltis_constant ( rtx  op,
unsigned  step,
unsigned  copies 
) [static]


Variable Documentation

Definition at line 6629 of file rs6000.c.

Definition at line 6158 of file rs6000.c.

Initial value:

{
  { 0, CODE_FOR_spe_evlddx, "__builtin_spe_evlddx", SPE_BUILTIN_EVLDDX },
  { 0, CODE_FOR_spe_evldwx, "__builtin_spe_evldwx", SPE_BUILTIN_EVLDWX },
  { 0, CODE_FOR_spe_evldhx, "__builtin_spe_evldhx", SPE_BUILTIN_EVLDHX },
  { 0, CODE_FOR_spe_evlwhex, "__builtin_spe_evlwhex", SPE_BUILTIN_EVLWHEX },
  { 0, CODE_FOR_spe_evlwhoux, "__builtin_spe_evlwhoux", SPE_BUILTIN_EVLWHOUX },
  { 0, CODE_FOR_spe_evlwhosx, "__builtin_spe_evlwhosx", SPE_BUILTIN_EVLWHOSX },
  { 0, CODE_FOR_spe_evlwwsplatx, "__builtin_spe_evlwwsplatx", SPE_BUILTIN_EVLWWSPLATX },
  { 0, CODE_FOR_spe_evlwhsplatx, "__builtin_spe_evlwhsplatx", SPE_BUILTIN_EVLWHSPLATX },
  { 0, CODE_FOR_spe_evlhhesplatx, "__builtin_spe_evlhhesplatx", SPE_BUILTIN_EVLHHESPLATX },
  { 0, CODE_FOR_spe_evlhhousplatx, "__builtin_spe_evlhhousplatx", SPE_BUILTIN_EVLHHOUSPLATX },
  { 0, CODE_FOR_spe_evlhhossplatx, "__builtin_spe_evlhhossplatx", SPE_BUILTIN_EVLHHOSSPLATX },
  { 0, CODE_FOR_spe_evldd, "__builtin_spe_evldd", SPE_BUILTIN_EVLDD },
  { 0, CODE_FOR_spe_evldw, "__builtin_spe_evldw", SPE_BUILTIN_EVLDW },
  { 0, CODE_FOR_spe_evldh, "__builtin_spe_evldh", SPE_BUILTIN_EVLDH },
  { 0, CODE_FOR_spe_evlwhe, "__builtin_spe_evlwhe", SPE_BUILTIN_EVLWHE },
  { 0, CODE_FOR_spe_evlwhou, "__builtin_spe_evlwhou", SPE_BUILTIN_EVLWHOU },
  { 0, CODE_FOR_spe_evlwhos, "__builtin_spe_evlwhos", SPE_BUILTIN_EVLWHOS },
  { 0, CODE_FOR_spe_evlwwsplat, "__builtin_spe_evlwwsplat", SPE_BUILTIN_EVLWWSPLAT },
  { 0, CODE_FOR_spe_evlwhsplat, "__builtin_spe_evlwhsplat", SPE_BUILTIN_EVLWHSPLAT },
  { 0, CODE_FOR_spe_evlhhesplat, "__builtin_spe_evlhhesplat", SPE_BUILTIN_EVLHHESPLAT },
  { 0, CODE_FOR_spe_evlhhousplat, "__builtin_spe_evlhhousplat", SPE_BUILTIN_EVLHHOUSPLAT },
  { 0, CODE_FOR_spe_evlhhossplat, "__builtin_spe_evlhhossplat", SPE_BUILTIN_EVLHHOSSPLAT }
}

Definition at line 7569 of file rs6000.c.

Definition at line 6098 of file rs6000.c.

Initial value:

{
  { MASK_ALTIVEC, CODE_FOR_absv4si2, "__builtin_altivec_abs_v4si", ALTIVEC_BUILTIN_ABS_V4SI },
  { MASK_ALTIVEC, CODE_FOR_absv8hi2, "__builtin_altivec_abs_v8hi", ALTIVEC_BUILTIN_ABS_V8HI },
  { MASK_ALTIVEC, CODE_FOR_absv4sf2, "__builtin_altivec_abs_v4sf", ALTIVEC_BUILTIN_ABS_V4SF },
  { MASK_ALTIVEC, CODE_FOR_absv16qi2, "__builtin_altivec_abs_v16qi", ALTIVEC_BUILTIN_ABS_V16QI },
  { MASK_ALTIVEC, CODE_FOR_altivec_abss_v4si, "__builtin_altivec_abss_v4si", ALTIVEC_BUILTIN_ABSS_V4SI },
  { MASK_ALTIVEC, CODE_FOR_altivec_abss_v8hi, "__builtin_altivec_abss_v8hi", ALTIVEC_BUILTIN_ABSS_V8HI },
  { MASK_ALTIVEC, CODE_FOR_altivec_abss_v16qi, "__builtin_altivec_abss_v16qi", ALTIVEC_BUILTIN_ABSS_V16QI }
}

Definition at line 6615 of file rs6000.c.

Initial value:

{
  { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v4sf, "*vcmpbfp.", "__builtin_altivec_vcmpbfp_p", ALTIVEC_BUILTIN_VCMPBFP_P },
  { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v4sf, "*vcmpeqfp.", "__builtin_altivec_vcmpeqfp_p", ALTIVEC_BUILTIN_VCMPEQFP_P },
  { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v4sf, "*vcmpgefp.", "__builtin_altivec_vcmpgefp_p", ALTIVEC_BUILTIN_VCMPGEFP_P },
  { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v4sf, "*vcmpgtfp.", "__builtin_altivec_vcmpgtfp_p", ALTIVEC_BUILTIN_VCMPGTFP_P },
  { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v4si, "*vcmpequw.", "__builtin_altivec_vcmpequw_p", ALTIVEC_BUILTIN_VCMPEQUW_P },
  { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v4si, "*vcmpgtsw.", "__builtin_altivec_vcmpgtsw_p", ALTIVEC_BUILTIN_VCMPGTSW_P },
  { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v4si, "*vcmpgtuw.", "__builtin_altivec_vcmpgtuw_p", ALTIVEC_BUILTIN_VCMPGTUW_P },
  { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v8hi, "*vcmpgtuh.", "__builtin_altivec_vcmpgtuh_p", ALTIVEC_BUILTIN_VCMPGTUH_P },
  { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v8hi, "*vcmpgtsh.", "__builtin_altivec_vcmpgtsh_p", ALTIVEC_BUILTIN_VCMPGTSH_P },
  { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v8hi, "*vcmpequh.", "__builtin_altivec_vcmpequh_p", ALTIVEC_BUILTIN_VCMPEQUH_P },
  { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v16qi, "*vcmpequb.", "__builtin_altivec_vcmpequb_p", ALTIVEC_BUILTIN_VCMPEQUB_P },
  { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v16qi, "*vcmpgtsb.", "__builtin_altivec_vcmpgtsb_p", ALTIVEC_BUILTIN_VCMPGTSB_P },
  { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v16qi, "*vcmpgtub.", "__builtin_altivec_vcmpgtub_p", ALTIVEC_BUILTIN_VCMPGTUB_P },

  { MASK_ALTIVEC, 0, NULL, "__builtin_vec_vcmpeq_p", ALTIVEC_BUILTIN_VCMPEQ_P },
  { MASK_ALTIVEC, 0, NULL, "__builtin_vec_vcmpgt_p", ALTIVEC_BUILTIN_VCMPGT_P },
  { MASK_ALTIVEC, 0, NULL, "__builtin_vec_vcmpge_p", ALTIVEC_BUILTIN_VCMPGE_P }
}

Definition at line 6556 of file rs6000.c.

Initial value:

{
  { MASK_ALTIVEC, CODE_FOR_altivec_dst, "__builtin_altivec_dst", ALTIVEC_BUILTIN_DST },
  { MASK_ALTIVEC, CODE_FOR_altivec_dstt, "__builtin_altivec_dstt", ALTIVEC_BUILTIN_DSTT },
  { MASK_ALTIVEC, CODE_FOR_altivec_dstst, "__builtin_altivec_dstst", ALTIVEC_BUILTIN_DSTST },
  { MASK_ALTIVEC, CODE_FOR_altivec_dststt, "__builtin_altivec_dststt", ALTIVEC_BUILTIN_DSTSTT },

  { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_dst", ALTIVEC_BUILTIN_VEC_DST },
  { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_dstt", ALTIVEC_BUILTIN_VEC_DSTT },
  { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_dstst", ALTIVEC_BUILTIN_VEC_DSTST },
  { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_dststt", ALTIVEC_BUILTIN_VEC_DSTSTT }
}

Definition at line 6143 of file rs6000.c.

Initial value:

{
  
  { 0, CODE_FOR_spe_evcmpgts, "__builtin_spe_evsel_gts", SPE_BUILTIN_EVSEL_CMPGTS },
  { 0, CODE_FOR_spe_evcmpgtu, "__builtin_spe_evsel_gtu", SPE_BUILTIN_EVSEL_CMPGTU },
  { 0, CODE_FOR_spe_evcmplts, "__builtin_spe_evsel_lts", SPE_BUILTIN_EVSEL_CMPLTS },
  { 0, CODE_FOR_spe_evcmpltu, "__builtin_spe_evsel_ltu", SPE_BUILTIN_EVSEL_CMPLTU },
  { 0, CODE_FOR_spe_evcmpeq, "__builtin_spe_evsel_eq", SPE_BUILTIN_EVSEL_CMPEQ },
  { 0, CODE_FOR_spe_evfscmpgt, "__builtin_spe_evsel_fsgt", SPE_BUILTIN_EVSEL_FSCMPGT },
  { 0, CODE_FOR_spe_evfscmplt, "__builtin_spe_evsel_fslt", SPE_BUILTIN_EVSEL_FSCMPLT },
  { 0, CODE_FOR_spe_evfscmpeq, "__builtin_spe_evsel_fseq", SPE_BUILTIN_EVSEL_FSCMPEQ },
  { 0, CODE_FOR_spe_evfststgt, "__builtin_spe_evsel_fststgt", SPE_BUILTIN_EVSEL_FSTSTGT },
  { 0, CODE_FOR_spe_evfststlt, "__builtin_spe_evsel_fststlt", SPE_BUILTIN_EVSEL_FSTSTLT },
  
  { 0, CODE_FOR_spe_evfststeq, "__builtin_spe_evsel_fststeq", SPE_BUILTIN_EVSEL_FSTSTEQ },
}

Definition at line 6596 of file rs6000.c.

Initial value:

{
  
  { 0, CODE_FOR_spe_evcmpeq, "__builtin_spe_evcmpeq", SPE_BUILTIN_EVCMPEQ },
  { 0, CODE_FOR_spe_evcmpgts, "__builtin_spe_evcmpgts", SPE_BUILTIN_EVCMPGTS },
  { 0, CODE_FOR_spe_evcmpgtu, "__builtin_spe_evcmpgtu", SPE_BUILTIN_EVCMPGTU },
  { 0, CODE_FOR_spe_evcmplts, "__builtin_spe_evcmplts", SPE_BUILTIN_EVCMPLTS },
  { 0, CODE_FOR_spe_evcmpltu, "__builtin_spe_evcmpltu", SPE_BUILTIN_EVCMPLTU },
  { 0, CODE_FOR_spe_evfscmpeq, "__builtin_spe_evfscmpeq", SPE_BUILTIN_EVFSCMPEQ },
  { 0, CODE_FOR_spe_evfscmpgt, "__builtin_spe_evfscmpgt", SPE_BUILTIN_EVFSCMPGT },
  { 0, CODE_FOR_spe_evfscmplt, "__builtin_spe_evfscmplt", SPE_BUILTIN_EVFSCMPLT },
  { 0, CODE_FOR_spe_evfststeq, "__builtin_spe_evfststeq", SPE_BUILTIN_EVFSTSTEQ },
  { 0, CODE_FOR_spe_evfststgt, "__builtin_spe_evfststgt", SPE_BUILTIN_EVFSTSTGT },
  
  { 0, CODE_FOR_spe_evfststlt, "__builtin_spe_evfststlt", SPE_BUILTIN_EVFSTSTLT },
}

Definition at line 6578 of file rs6000.c.

Definition at line 129 of file rs6000.c.

Initial value:

Definition at line 367 of file rs6000.c.

Initial value:

Definition at line 562 of file rs6000.c.

Initial value:

Definition at line 382 of file rs6000.c.

Initial value:

Definition at line 397 of file rs6000.c.

Initial value:

Definition at line 412 of file rs6000.c.

Initial value:

Definition at line 427 of file rs6000.c.

Initial value:

Definition at line 442 of file rs6000.c.

Initial value:

Definition at line 457 of file rs6000.c.

Initial value:

Definition at line 472 of file rs6000.c.

Initial value:

Definition at line 487 of file rs6000.c.

Initial value:

Definition at line 502 of file rs6000.c.

Initial value:

Definition at line 532 of file rs6000.c.

Initial value:

Definition at line 517 of file rs6000.c.

Initial value:

Definition at line 547 of file rs6000.c.

Initial value:

Definition at line 322 of file rs6000.c.

Initial value:

Definition at line 337 of file rs6000.c.

Initial value:

{
  
  { "altivec",   1, 1, false, true,  false, rs6000_handle_altivec_attribute },
  { "longcall",  0, 0, false, true,  true,  rs6000_handle_longcall_attribute },
  { "shortcall", 0, 0, false, true,  true,  rs6000_handle_longcall_attribute },
  { "ms_struct", 0, 0, false, false, false, rs6000_handle_struct_attribute },
  { "gcc_struct", 0, 0, false, false, false, rs6000_handle_struct_attribute },



  { NULL,        0, 0, false, false, false, NULL }
}

Definition at line 17471 of file rs6000.c.

Definition at line 286 of file rs6000.c.

Definition at line 133 of file rs6000.c.

Definition at line 258 of file rs6000.c.

Referenced by rs6000_handle_option(), and rs6000_override_options().

Initial value:

{
  
  { (const char *)0,  "--with-cpu=",    1,  1 },
  { (const char *)0,  "-mcpu=",   1,  1 },
  { (const char *)0,  "-mtune=",    1,  0 },
}

Definition at line 134 of file rs6000.c.

Definition at line 232 of file rs6000.c.

Initial value:

Definition at line 352 of file rs6000.c.

Initial value:

Definition at line 292 of file rs6000.c.

Initial value:

Definition at line 307 of file rs6000.c.

struct gcc_target targetm = TARGET_INITIALIZER

Definition at line 1046 of file rs6000.c.

Definition at line 235 of file rs6000.c.

char toc_label_name[10]

Definition at line 236 of file rs6000.c.


Generated on Wed Apr 8 15:24:53 2009 for Open64 by  doxygen 1.5.6