Mercurial > hg > CbC > CbC_gcc
diff gcc/config/arm/arm-protos.h @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
line wrap: on
line diff
--- a/gcc/config/arm/arm-protos.h Thu Oct 25 07:37:49 2018 +0900 +++ b/gcc/config/arm/arm-protos.h Thu Feb 13 11:34:05 2020 +0900 @@ -1,5 +1,5 @@ /* Prototypes for exported functions defined in arm.c and pe.c - Copyright (C) 1999-2018 Free Software Foundation, Inc. + Copyright (C) 1999-2020 Free Software Foundation, Inc. Contributed by Richard Earnshaw (rearnsha@arm.com) Minor hacks by Nick Clifton (nickc@cygnus.com) @@ -28,7 +28,9 @@ extern int use_return_insn (int, rtx); extern bool use_simple_return_p (void); extern enum reg_class arm_regno_class (int); -extern void arm_load_pic_register (unsigned long); +extern bool arm_check_builtin_call (location_t , vec<location_t> , tree, + tree, unsigned int, tree *); +extern void arm_load_pic_register (unsigned long, rtx); extern int arm_volatile_func (void); extern void arm_expand_prologue (void); extern void arm_expand_epilogue (bool); @@ -57,6 +59,9 @@ extern bool arm_simd_check_vect_par_cnst_half_p (rtx op, machine_mode mode, bool high); extern void arm_emit_speculation_barrier_function (void); +extern void arm_decompose_di_binop (rtx, rtx, rtx *, rtx *, rtx *, rtx *); +extern bool arm_q_bit_access (void); +extern bool arm_ge_bits_access (void); #ifdef RTX_CODE extern void arm_gen_unlikely_cbranch (enum rtx_code, machine_mode cc_mode, @@ -66,10 +71,11 @@ extern int const_ok_for_arm (HOST_WIDE_INT); extern int const_ok_for_op (HOST_WIDE_INT, enum rtx_code); extern int const_ok_for_dimode_op (HOST_WIDE_INT, enum rtx_code); +extern void thumb1_gen_const_int (rtx, HOST_WIDE_INT); extern int arm_split_constant (RTX_CODE, machine_mode, rtx, HOST_WIDE_INT, rtx, rtx, int); extern int legitimate_pic_operand_p (rtx); -extern rtx legitimize_pic_address (rtx, machine_mode, rtx); +extern rtx legitimize_pic_address (rtx, machine_mode, rtx, rtx, bool); extern rtx legitimize_tls_address (rtx, rtx); extern bool arm_legitimate_address_p (machine_mode, rtx, bool); extern int arm_legitimate_address_outer_p (machine_mode, rtx, RTX_CODE, int); @@ -77,6 +83,7 @@ extern int thumb1_legitimate_address_p (machine_mode, rtx, int); extern bool ldm_stm_operation_p (rtx, bool, machine_mode mode, bool, bool); +extern bool clear_operation_p (rtx, bool); extern int arm_const_double_rtx (rtx); extern int vfp3_const_double_rtx (rtx); extern int neon_immediate_valid_for_move (rtx, machine_mode, rtx *, int *); @@ -109,6 +116,8 @@ extern int neon_vector_mem_operand (rtx, int, bool); extern int neon_struct_mem_operand (rtx); +extern rtx *neon_vcmla_lane_prepare_operands (rtx *); + extern int tls_mentioned_p (rtx); extern int symbol_mentioned_p (rtx); extern int label_mentioned_p (rtx); @@ -123,8 +132,9 @@ extern bool offset_ok_for_ldrd_strd (HOST_WIDE_INT); extern bool operands_ok_ldrd_strd (rtx, rtx, rtx, HOST_WIDE_INT, bool, bool); extern bool gen_operands_ldrd_strd (rtx *, bool, bool, bool); -extern int arm_gen_movmemqi (rtx *); -extern bool gen_movmem_ldrd_strd (rtx *); +extern bool valid_operands_ldrd_strd (rtx *, bool); +extern int arm_gen_cpymemqi (rtx *); +extern bool gen_cpymem_ldrd_strd (rtx *); extern machine_mode arm_select_cc_mode (RTX_CODE, rtx, rtx); extern machine_mode arm_select_dominance_cc_mode (rtx, rtx, HOST_WIDE_INT); @@ -136,6 +146,7 @@ extern int arm_const_double_inline_cost (rtx); extern bool arm_const_double_by_parts (rtx); extern bool arm_const_double_by_immediates (rtx); +extern rtx arm_load_function_descriptor (rtx funcdesc); extern void arm_emit_call_insn (rtx, rtx, bool); bool detect_cmse_nonsecure_call (tree); extern const char *output_call (rtx *); @@ -144,6 +155,7 @@ extern const char *output_move_double (rtx *, bool, int *count); extern const char *output_move_quad (rtx *); extern int arm_count_output_move_double_insns (rtx *); +extern int arm_count_ldrdstrd_insns (rtx *, bool); extern const char *output_move_vfp (rtx *operands); extern const char *output_move_neon (rtx *operands); extern int arm_attr_length_move_neon (rtx_insn *); @@ -199,7 +211,7 @@ extern const char *thumb_load_double_from_address (rtx *); extern const char *thumb_output_move_mem_multiple (int, rtx *); extern const char *thumb_call_via_reg (rtx); -extern void thumb_expand_movmemqi (rtx *); +extern void thumb_expand_cpymemqi (rtx *); extern rtx arm_return_addr (int, rtx); extern void thumb_reload_out_hi (rtx *); extern void thumb_set_return_address (rtx, rtx); @@ -323,7 +335,6 @@ /* Prefer 32-bit encoding instead of flag-setting 16-bit encoding. */ enum {DISPARAGE_FLAGS_NEITHER, DISPARAGE_FLAGS_PARTIAL, DISPARAGE_FLAGS_ALL} disparage_flag_setting_t16_encodings: 2; - enum {PREF_NEON_64_FALSE, PREF_NEON_64_TRUE} prefer_neon_for_64bits: 1; /* Prefer to inline string operations like memset by using Neon. */ enum {PREF_NEON_STRINGOPS_FALSE, PREF_NEON_STRINGOPS_TRUE} string_ops_prefer_neon: 1; @@ -375,6 +386,9 @@ extern void arm_register_target_pragmas (void); extern void arm_cpu_cpp_builtins (struct cpp_reader *); +/* Defined in arm-d.c */ +extern void arm_d_target_versions (void); + extern bool arm_is_constant_pool_ref (rtx); /* The bits in this mask specify which instruction scheduling options should @@ -465,10 +479,6 @@ /* Nonzero if chip disallows volatile memory access in IT block. */ extern int arm_arch_no_volatile_ce; -/* Nonzero if we should use Neon to handle 64-bits operations rather - than core registers. */ -extern int prefer_neon_for_64bits; - /* Structure defining the current overall architectural target and tuning. */ struct arm_build_target { @@ -495,6 +505,16 @@ extern struct arm_build_target arm_active_target; +/* Table entry for a CPU alias. */ +struct cpu_alias +{ + /* The alias name. */ + const char *const name; + /* True if the name should be displayed in help text listing cpu names. */ + bool visible; +}; + +/* Table entry for an architectural feature extension. */ struct cpu_arch_extension { /* Feature name. */ @@ -508,6 +528,7 @@ const enum isa_feature isa_bits[isa_num_bits]; }; +/* Common elements of both CPU and architectural options. */ struct cpu_arch_option { /* Name for this option. */ @@ -518,6 +539,7 @@ enum isa_feature isa_bits[isa_num_bits]; }; +/* Table entry for an architecture entry. */ struct arch_option { /* Common option fields. */ @@ -532,10 +554,13 @@ enum processor_type tune_id; }; +/* Table entry for a CPU entry. */ struct cpu_option { /* Common option fields. */ cpu_arch_option common; + /* List of aliases for this CPU. */ + const struct cpu_alias *aliases; /* Architecture upon which this CPU is based. */ enum arch_type arch; }; @@ -552,4 +577,6 @@ void arm_initialize_isa (sbitmap, const enum isa_feature *); +const char * arm_gen_far_branch (rtx *, int, const char * , const char *); + #endif /* ! GCC_ARM_PROTOS_H */