#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 "function.h"#include "toplev.h"#include "c-pragma.h"#include "tm_p.h"#include "ggc.h"#include "target.h"#include "target-def.h"

Go to the source code of this file.
| #define LOP SHIFT_LOOP |
Definition at line 1972 of file h8300.c.
Referenced by mmo_get_spec_section(), mmo_internal_write_header(), mmo_internal_write_post(), mmo_internal_write_section(), mmo_object_p(), mmo_scan(), mmo_write_chunk(), mmo_write_loc_chunk(), mmo_write_symbols_and_terminator(), and mmo_write_tetra().
| #define TARGET_ASM_FUNCTION_EPILOGUE h8300_output_function_epilogue |
| #define TARGET_ASM_FUNCTION_PROLOGUE h8300_output_function_prologue |
| #define TARGET_ATTRIBUTE_TABLE h8300_attribute_table |
| #define WORD_REG_USED | ( | regno | ) |
Value:
(regno < 7 \ /* No need to save registers if this function will not return. */ \ && ! TREE_THIS_VOLATILE (current_function_decl) \ && (pragma_saveall \ /* Save any call saved register that was used. */ \ || (regs_ever_live[regno] && !call_used_regs[regno]) \ /* Save the frame pointer if it was used. */ \ || (regno == FRAME_POINTER_REGNUM && regs_ever_live[regno]) \ /* Save any register used in an interrupt handler. */ \ || (interrupt_handler && regs_ever_live[regno]) \ /* Save call clobbered registers in non-leaf interrupt \ handlers. */ \ || (interrupt_handler \ && call_used_regs[regno] \ && !current_function_is_leaf)))
Definition at line 162 of file h8300.c.
Referenced by compute_saved_regs(), h8300_initial_elimination_offset(), and initial_offset().
| enum shift_alg |
| enum shift_mode |
| enum shift_type |
Definition at line 490 of file h8300.c.
References fprintf(), main_input_filename, optimize, output_file_directive(), TARGET_H8300H, and TARGET_H8300S.
| int bit_memory_operand | ( | rtx | op, | |
| mode | ||||
| ) |
| int bit_operand | ( | rtx | op, | |
| enum machine_mode | mode | |||
| ) |
Definition at line 725 of file h8300.c.
References EXTRA_CONSTRAINT, general_operand(), GET_CODE, MEM, and REG.
| int bit_operator | ( | rtx | x, | |
| mode | ||||
| ) |
| static const char* byte_reg | ( | rtx | x, | |
| int | b | |||
| ) | [static] |
| int call_insn_operand | ( | rtx | op, | |
| mode | ||||
| ) |
Definition at line 577 of file h8300.c.
References CONSTANT_ADDRESS_P, GET_CODE, MEM, Pmode, register_operand(), and XEXP.
| static unsigned int compute_saved_regs | ( | void | ) | [static] |
Definition at line 233 of file h8300.c.
References frame_pointer_needed, FRAME_POINTER_REGNUM, and WORD_REG_USED.
Referenced by h8300_can_use_return_insn_p(), h8300_expand_epilogue(), h8300_expand_prologue(), h8300_output_function_epilogue(), and h8300_output_function_prologue().
| static const char* cond_string | ( | enum rtx_code | code | ) | [static] |
Definition at line 863 of file h8300.c.
References CONST, INTVAL, SET, TARGET_H8300H, and TARGET_H8300S.
Referenced by v850_rtx_costs().
| int do_movsi | ( | operands | ) |
Definition at line 1347 of file h8300.c.
References dst, emit_move_insn(), gen_reg_rtx(), GET_MODE, register_operand(), reload_completed, reload_in_progress, src, and tmp.
Definition at line 182 of file h8300.c.
References current_function_needs_context, fprintf(), HOST_WIDE_INT, strcmp(), TARGET_H8300, TARGET_H8300H, and TARGET_H8300S.
Referenced by h8300_output_function_epilogue(), and h8300_output_function_prologue().
Definition at line 2748 of file h8300.c.
References abort, dst, GET_CODE, GET_MODE, GET_MODE_BITSIZE, HIshift, INTVAL, mode, output_asm_insn(), QIshift, ROTATE, SHIFT_ASHIFT, SHIFT_LSHIFTRT, SIshift, TARGET_H8300, TARGET_H8300H, TARGET_H8300S, and U.
Definition at line 2691 of file h8300.c.
References dst, emit_cmp_and_jump_insns(), emit_insn(), emit_label(), emit_move_insn(), GEN_INT, gen_label_rtx(), gen_reg_rtx(), gen_rtx_PLUS, gen_rtx_SET, GET_CODE, GET_MODE, LE, mode, NE, NULL_RTX, src, and tmp.
| int expand_a_shift | ( | enum machine_mode | mode, | |
| int | code, | |||
| operands | ||||
| ) |
Definition at line 1768 of file h8300.c.
References emit_insn(), emit_move_insn(), gen_rtvec(), gen_rtx_CLOBBER, gen_rtx_PARALLEL, gen_rtx_SCRATCH, and gen_rtx_SET.
Definition at line 1320 of file h8300.c.
References asm_out_file, fprintf(), INSN_ADDRESSES, INSN_UID, last_insn_address, PATTERN, print_rtl(), TARGET_ADDRESSES, and TARGET_RTL_DUMP.
Definition at line 2860 of file h8300.c.
References CONST_OK_FOR_LETTER_P, copy_to_mode_reg(), emit_insn(), EXTRA_CONSTRAINT, force_reg(), gen_reg_rtx(), gen_rtx_MEM(), gen_rtx_SET, GET_CODE, GET_MODE, INTVAL, mem, MEM, MEM_COPY_ATTRIBUTES, Pmode, and XEXP.
| rtx function_arg | ( | CUMULATIVE_ARGS * | cum, | |
| enum machine_mode | mode, | |||
| tree | type, | |||
| int named | ||||
| ) |
Definition at line 791 of file h8300.c.
References gen_rtx_REG(), GET_MODE_SIZE, int_size_in_bytes(), NULL_RTX, p, result, size, strcmp(), TARGET_QUICKCALL, UNITS_PER_WORD, and XSTR.
| int general_operand_dst | ( | rtx | op, | |
| enum machine_mode | mode | |||
| ) |
| int general_operand_src | ( | rtx | op, | |
| enum machine_mode | mode | |||
| ) |
| static void get_shift_alg | ( | enum shift_type shift_type | , | |
| enum shift_mode shift_mode | , | |||
| unsigned int | count, | |||
| struct shift_info * | info | |||
| ) | [static] |
Definition at line 2146 of file h8300.c.
References abort, shift_info::alg, shift_insn::assembler, shift_insn::cc_valid, shift_info::cc_valid_p, end, GET_MODE_BITSIZE, HIshift, NULL, QIshift, shift_info::remainder, shift_info::shift1, shift_info::shift2, SHIFT_ASHIFT, SHIFT_ASHIFTRT, SHIFT_INLINE, SHIFT_LOOP, SHIFT_LSHIFTRT, SHIFT_ROT_AND, SHIFT_SPECIAL, SIshift, shift_info::special, TARGET_H8300, TARGET_H8300H, and TARGET_H8300S.
Referenced by compute_a_shift_cc(), compute_a_shift_length(), emit_a_shift(), and output_a_shift().
| int h8300_eightbit_data_p | ( | tree | decl | ) |
Definition at line 2977 of file h8300.c.
References a, DECL_ATTRIBUTES, lookup_attribute(), NULL_TREE, and TREE_CODE.
Referenced by h8300_encode_section_info().
| int h8300_funcvec_function_p | ( | tree | func | ) |
Definition at line 2961 of file h8300.c.
References a, DECL_ATTRIBUTES, lookup_attribute(), NULL_TREE, and TREE_CODE.
Referenced by h8300_encode_section_info().
| static tree h8300_handle_eightbit_data_attribute | ( | tree * | node, | |
| tree | name, | |||
| args | , | |||
| flags | , | |||
| bool * | no_add_attrs | |||
| ) | [static] |
Definition at line 3055 of file h8300.c.
References build_string(), DECL_EXTERNAL, DECL_SECTION_NAME, IDENTIFIER_POINTER, NULL_TREE, TREE_STATIC, and warning.
| static tree h8300_handle_tiny_data_attribute | ( | tree * | node, | |
| tree | name, | |||
| args | , | |||
| flags | , | |||
| bool * | no_add_attrs | |||
| ) | [static] |
Definition at line 3080 of file h8300.c.
References build_string(), DECL_EXTERNAL, DECL_SECTION_NAME, IDENTIFIER_POINTER, NULL_TREE, TREE_STATIC, and warning.
| static int h8300_interrupt_function_p | ( | tree | func | ) | [static] |
Definition at line 2913 of file h8300.c.
References a, DECL_ATTRIBUTES, lookup_attribute(), NULL_TREE, and TREE_CODE.
Referenced by h8300_current_function_interrupt_function_p(), and h8300_output_function_prologue().
| static int h8300_monitor_function_p | ( | tree | func | ) | [static] |
Definition at line 2945 of file h8300.c.
References a, DECL_ATTRIBUTES, lookup_attribute(), NULL_TREE, and TREE_CODE.
Referenced by h8300_current_function_interrupt_function_p(), h8300_expand_prologue(), and h8300_output_function_prologue().
| static int h8300_os_task_function_p | ( | tree | func | ) | [static] |
Definition at line 2929 of file h8300.c.
References a, DECL_ATTRIBUTES, lookup_attribute(), NULL_TREE, and TREE_CODE.
Referenced by h8300_expand_epilogue(), h8300_expand_prologue(), and h8300_output_function_prologue().
Definition at line 404 of file h8300.c.
References compute_saved_regs(), dosize(), FIRST_PSEUDO_REGISTER, fprintf(), frame_pointer_needed, FRAME_POINTER_REGNUM, GET_CODE, get_last_insn(), idx, insn, out, pop(), prev_nonnote_insn(), round_frame_size(), and TARGET_H8300S.
Definition at line 293 of file h8300.c.
References abort, compute_saved_regs(), current_function_decl, dosize(), FIRST_PSEUDO_REGISTER, fprintf(), frame_pointer_needed, FRAME_POINTER_REGNUM, h8300_interrupt_function_p(), h8300_monitor_function_p(), h8300_os_task_function_p(), idx, pop(), push(), round_frame_size(), STACK_POINTER_REGNUM, TARGET_H8300, TARGET_H8300H, and TARGET_H8300S.
Definition at line 1399 of file h8300.c.
References flag_omit_frame_pointer, gen_rtx_MEM(), gen_rtx_REG(), get_frame_alias_set(), memory_address(), plus_constant, Pmode, ret, RETURN_ADDRESS_POINTER_REGNUM, set_mem_alias_set(), and UNITS_PER_WORD.
| int h8300_tiny_data_p | ( | tree | decl | ) |
Definition at line 2993 of file h8300.c.
References a, DECL_ATTRIBUTES, lookup_attribute(), NULL_TREE, and TREE_CODE.
Referenced by h8300_encode_section_info().
| int initial_offset | ( | int | from, | |
| int | to | |||
| ) |
Definition at line 1369 of file h8300.c.
Referenced by set_label_offsets(), and verify_initial_elim_offsets().
| int jump_address_operand | ( | rtx | op, | |
| enum machine_mode | mode | |||
| ) |
Definition at line 702 of file h8300.c.
References CONSTANT_ADDRESS_P, GET_CODE, MEM, Pmode, REG, register_operand(), and XEXP.
Definition at line 1421 of file h8300.c.
References CC_NO_CARRY, CC_OVERFLOW_UNUSABLE, CC_STATUS_INIT, GET_CODE, reg_overlap_mentioned_p(), REG_P, SET, and SET_SRC.
| int o_operand | ( | rtx | operand, | |
| mode | ||||
| ) |
| int ok_for_bclr | ( | HOST_WIDE_INT | value | ) |
| const char* output_a_shift | ( | rtx * | operands | ) |
Definition at line 2497 of file h8300.c.
References abort, shift_info::alg, asm_out_file, CC_NO_CARRY, shift_info::cc_valid_p, fprintf(), GET_CODE, GET_MODE, GET_MODE_BITSIZE, get_shift_alg(), HIshift, INTVAL, mode, n, NULL, output_asm_insn(), QIshift, REGNO, shift_info::remainder, shift, shift_info::shift1, shift_info::shift2, SHIFT_ASHIFT, SHIFT_ASHIFTRT, SHIFT_INLINE, SHIFT_LOOP, SHIFT_LSHIFTRT, SHIFT_ROT_AND, SHIFT_SPECIAL, SIshift, shift_info::special, sprintf(), and TARGET_H8300.
| const char* output_logical_op | ( | enum machine_mode | mode, | |
| int | code, | |||
| rtx * | operands | |||
| ) |
Definition at line 1489 of file h8300.c.
References abort, AND, GET_CODE, HOST_WIDE_INT, INTVAL, output_asm_insn(), sprintf(), TARGET_H8300, TARGET_H8300H, TARGET_H8300S, and XOR.
| const char* output_simode_bld | ( | int | bild, | |
| operands | ||||
| ) |
| static void get_shift_alg PARAMS | ( | (enum shift_type, enum shift_mode, unsigned int, struct shift_info *) | ) | [static] |
| static void h8300_asm_named_section PARAMS | ( | (const char *, unsigned int) | ) | [static] |
| static const char* cond_string PARAMS | ( | (enum rtx_code) | ) | [static] |
| static unsigned int compute_saved_regs PARAMS | ( | (void) | ) | [static, read] |
Definition at line 77 of file cplus-dem.c.
| static int round_frame_size PARAMS | ( | (int) | ) | [static] |
| static int h8300_interrupt_function_p PARAMS | ( | (tree) | ) | [static] |
| static const char* byte_reg PARAMS | ( | (rtx, int) | ) | [static] |
Definition at line 265 of file h8300.c.
References fprintf().
Referenced by _nl_make_l10nflist(), avr_output_function_epilogue(), cp_parser_binary_expression(), desc_prologue(), function_epilogue(), h8300_output_function_epilogue(), h8300_output_function_prologue(), h8300_push_pop(), h8300_swap_out_of_er6(), handle_pragma_visibility(), Make_Component(), sh_expand_epilogue(), and verify_jvm_instructions().
Definition at line 970 of file h8300.c.
References abort, addr(), adjust_address, AND, asm_fprintf(), byte_reg(), cond_string(), CONST, EIGHTBIT_CONSTANT_ADDRESS_P, exact_log2, fprintf(), GET_CODE, GET_MODE, INTVAL, MEM, output_address(), print_operand(), print_operand_address(), REAL_VALUE_FROM_CONST_DOUBLE, REAL_VALUE_TO_TARGET_SINGLE, REAL_VALUE_TYPE, REG, REGNO, reverse_condition(), SYMBOL_REF_FLAG, TARGET_H8300, TINY_DATA_NAME_P, val, XEXP, XOR, and XSTR.
Definition at line 1253 of file h8300.c.
References fprintf(), GET_CODE, int, INTVAL, n, output_addr_const(), PLUS, print_operand_address(), REG, REGNO, TARGET_H8300, and XEXP.
Definition at line 255 of file h8300.c.
References fprintf().
Referenced by WN_Verifier::Are_enclosed_pragmas(), avr_output_function_prologue(), desc_prologue(), function_prologue(), h8300_expand_prologue(), h8300_output_function_prologue(), h8300_push_pop(), h8300_swap_into_er6(), handle_pragma_visibility(), ip2k_gen_signed_comp_branch(), ip2k_gen_unsigned_comp_branch(), ix86_split_long_move(), push_fields_onto_fieldstack(), push_regs(), and sh_expand_prologue().
| static int round_frame_size | ( | int | size | ) | [static] |
Definition at line 223 of file h8300.c.
References STACK_BOUNDARY.
Referenced by h8300_expand_epilogue(), h8300_expand_prologue(), h8300_initial_elimination_offset(), h8300_output_function_epilogue(), and h8300_output_function_prologue().
| int small_call_insn_operand | ( | rtx | op, | |
| mode | ||||
| ) |
Definition at line 677 of file h8300.c.
References GET_CODE, MEM, Pmode, register_operand(), SYMBOL_REF_FLAG, and XEXP.
| int small_power_of_two | ( | HOST_WIDE_INT | value | ) |
| void split_adds_subs | ( | enum machine_mode | mode, | |
| rtx * | operands | |||
| ) |
Definition at line 641 of file h8300.c.
References emit_insn(), GEN_INT, gen_rtx_PLUS, gen_rtx_SET, HOST_WIDE_INT, INTVAL, TARGET_H8300H, TARGET_H8300S, tmp, and val.
| int two_insn_adds_subs_operand | ( | rtx | op, | |
| enum machine_mode | mode | |||
| ) |
Definition at line 597 of file h8300.c.
References GET_CODE, HOST_WIDE_INT, INTVAL, TARGET_H8300H, and TARGET_H8300S.
Initial value:
{
{ "interrupt_handler", 0, 0, true, false, false, h8300_handle_fndecl_attribute },
{ "OS_Task", 0, 0, true, false, false, h8300_handle_fndecl_attribute },
{ "monitor", 0, 0, true, false, false, h8300_handle_fndecl_attribute },
{ "function_vector", 0, 0, true, false, false, h8300_handle_fndecl_attribute },
{ "eightbit_data", 0, 0, true, false, false, h8300_handle_eightbit_data_attribute },
{ "tiny_data", 0, 0, true, false, false, h8300_handle_tiny_data_attribute },
{ NULL, 0, 0, false, false, false, NULL }
}
| const char * h8_mov_op |
| const char * h8_pop_op |
| const char* h8_push_op |
| const char* const* h8_reg_names |
Definition at line 96 of file h8300.c.
Referenced by h8300_init_once(), and print_operand_address().
int interrupt_handler [static] |
Definition at line 72 of file h8300.c.
Referenced by calc_live_regs(), compute_register_save_size(), expand_epilogue(), expand_prologue(), GTY(), m68k_compute_frame_layout(), mt_compute_frame_size(), mt_expand_epilogue(), mt_expand_prologue(), print_operand(), and shmedia_target_regs_stack_space().
const char* const names_big[] [static] |
Initial value:
{ "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7" }
Definition at line 85 of file h8300.c.
Referenced by h8300_init_once(), output_a_shift(), and print_operand().
const char* const names_extended[] [static] |
Initial value:
{ "er0", "er1", "er2", "er3", "er4", "er5", "er6", "er7" }
Definition at line 88 of file h8300.c.
Referenced by h8300_init_once(), and print_operand().
const char* const names_upper_extended[] [static] |
Initial value:
{ "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7" }
Definition at line 91 of file h8300.c.
Referenced by print_operand().
int pragma_saveall [static] |
Definition at line 83 of file h8300.c.
Referenced by h8300_insert_attributes(), and h8300_pr_saveall().
const char* const rotate_one[2][3][3] [static] |
const char* const rotate_two[3][3] [static] |
Initial value:
{
{
"rotr.b\t#2,%X0",
"rotr.w\t#2,%T0",
"rotr.l\t#2,%S0"
},
{
"rotl.b\t#2,%X0",
"rotl.w\t#2,%T0",
"rotl.l\t#2,%S0"
},
{
"rotl.b\t#2,%X0",
"rotl.w\t#2,%T0",
"rotl.l\t#2,%S0"
}
}
Definition at line 1947 of file h8300.c.
Referenced by get_shift_alg(), and output_a_rotate().
Definition at line 401 of file rtl.c.
Referenced by alpha_expand_mov(), copy_rtx_and_substitute(), emit_move_sequence(), expand_call(), got_symbolic_operand(), ia64_expand_move(), pop_function_context_from(), prepare_function_start(), rest_of_compilation(), rtx_equal_p(), simplify_binary_operation(), and simplify_subreg().
enum shift_alg shift_alg_hi[3][3][16] [static] |
Definition at line 2004 of file h8300.c.
Referenced by get_shift_alg(), h8300_init_once(), and h8300_shift_needs_scratch_p().
enum shift_alg shift_alg_qi[3][3][8] [static] |
Initial value:
{
{
{ INL, INL, INL, INL, INL, ROT, ROT, ROT },
{ INL, INL, INL, INL, INL, ROT, ROT, ROT },
{ INL, INL, INL, INL, INL, LOP, LOP, SPC }
},
{
{ INL, INL, INL, INL, INL, ROT, ROT, ROT },
{ INL, INL, INL, INL, INL, ROT, ROT, ROT },
{ INL, INL, INL, INL, INL, LOP, LOP, SPC }
},
{
{ INL, INL, INL, INL, INL, INL, ROT, ROT },
{ INL, INL, INL, INL, INL, INL, ROT, ROT },
{ INL, INL, INL, INL, INL, INL, INL, SPC }
}
}
Definition at line 1980 of file h8300.c.
Referenced by get_shift_alg(), and h8300_shift_needs_scratch_p().
enum shift_alg shift_alg_si[3][3][32] [static] |
Definition at line 2040 of file h8300.c.
Referenced by get_shift_alg(), and h8300_shift_needs_scratch_p().
struct shift_insn shift_one[2][3][3] [static] |
struct shift_insn shift_two[3][3] [static] |
Initial value:
{
{
{ "shll.b\t#2,%X0", CC_NO_CARRY },
{ "shll.w\t#2,%T0", CC_NO_CARRY },
{ "shll.l\t#2,%S0", CC_NO_CARRY }
},
{
{ "shlr.b\t#2,%X0", CC_NO_CARRY },
{ "shlr.w\t#2,%T0", CC_NO_CARRY },
{ "shlr.l\t#2,%S0", CC_NO_CARRY }
},
{
{ "shar.b\t#2,%X0", CC_OVERFLOW_UNUSABLE | CC_NO_CARRY },
{ "shar.w\t#2,%T0", CC_OVERFLOW_UNUSABLE | CC_NO_CARRY },
{ "shar.l\t#2,%S0", CC_OVERFLOW_UNUSABLE | CC_NO_CARRY }
}
}
| struct gcc_target targetm = TARGET_INITIALIZER |
1.5.6