arm-protos.h (arm_sched_autopref): Delete.

* arm-protos.h (arm_sched_autopref): Delete.
	(tune_params): Re-organize, use enums for flag values.
	(FUSE_OPS): New macro.
	* arm.c (ARM_PREFETCH_NOT_BENEFICIAL): Update.
	(ARM_PREFETCH_BENEFICIAL): Likewise.
	(ARM_FUSE_NOTHING, ARM_FUSE_MOVW_MOVT): Delete.
	(arm_slowmul_tune, arm_fastmul_tune, arm_strongarm_tune)
	(arm_xscale_tune, arm_9e_tune, arm_marvell_pj4_tune)
	(arm_v6t2_tune, arm_cortex_tune, arm_cortex_a8_tune)
	(arm_cortex_a7_tune, arm_cortex_a15_tune, arm_cortex_a53_tune)
	(arm_cortex_a57_tune,  arm_xgene1_tune, arm_cortex_a5_tune)
	(arm_cortex_a9_tune, arm_cortex_a12_tune, arm_v7m_tune)
	(arm_cortex_m7_tune, arm_v6m_tune, arm_fa726te_tune): Use new
	format.
	(arm_option_override, thumb2_reorg, arm_print_tune_info)
	(aarch_macro_fusion_pair_p): Update uses of current_tune.
	* arm.h (LOGCIAL_OP_NON_SHORT_CIRCUIT): Likewise.

From-SVN: r223090
This commit is contained in:
Richard Earnshaw 2015-05-12 16:39:19 +00:00 committed by Richard Earnshaw
parent cc1e0483ae
commit 52c266bab2
4 changed files with 458 additions and 397 deletions

View File

@ -1,3 +1,23 @@
2015-05-12 Richard Earnshaw <rearnsha@arm.com>
* arm-protos.h (arm_sched_autopref): Delete.
(tune_params): Re-organize, use enums for flag values.
(FUSE_OPS): New macro.
* arm.c (ARM_PREFETCH_NOT_BENEFICIAL): Update.
(ARM_PREFETCH_BENEFICIAL): Likewise.
(ARM_FUSE_NOTHING, ARM_FUSE_MOVW_MOVT): Delete.
(arm_slowmul_tune, arm_fastmul_tune, arm_strongarm_tune)
(arm_xscale_tune, arm_9e_tune, arm_marvell_pj4_tune)
(arm_v6t2_tune, arm_cortex_tune, arm_cortex_a8_tune)
(arm_cortex_a7_tune, arm_cortex_a15_tune, arm_cortex_a53_tune)
(arm_cortex_a57_tune, arm_xgene1_tune, arm_cortex_a5_tune)
(arm_cortex_a9_tune, arm_cortex_a12_tune, arm_v7m_tune)
(arm_cortex_m7_tune, arm_v6m_tune, arm_fa726te_tune): Use new
format.
(arm_option_override, thumb2_reorg, arm_print_tune_info)
(aarch_macro_fusion_pair_p): Update uses of current_tune.
* arm.h (LOGCIAL_OP_NON_SHORT_CIRCUIT): Likewise.
2015-05-12 Sandra Loosemore <sandra@codesourcery.com>
* config/nios2/nios2.md (trap, ctrapsi4): Use "trap" instead of

View File

@ -251,13 +251,6 @@ struct cpu_vec_costs {
struct cpu_cost_table;
enum arm_sched_autopref
{
ARM_SCHED_AUTOPREF_OFF,
ARM_SCHED_AUTOPREF_RANK,
ARM_SCHED_AUTOPREF_FULL
};
/* Dump function ARM_PRINT_TUNE_INFO should be updated whenever this
structure is modified. */
@ -266,41 +259,57 @@ struct tune_params
bool (*rtx_costs) (rtx, RTX_CODE, RTX_CODE, int *, bool);
const struct cpu_cost_table *insn_extra_cost;
bool (*sched_adjust_cost) (rtx_insn *, rtx, rtx_insn *, int *);
int (*branch_cost) (bool, bool);
/* Vectorizer costs. */
const struct cpu_vec_costs* vec_costs;
int constant_limit;
/* Maximum number of instructions to conditionalise. */
int max_insns_skipped;
int num_prefetch_slots;
int l1_cache_size;
int l1_cache_line_size;
bool prefer_constant_pool;
int (*branch_cost) (bool, bool);
/* Maximum number of instructions to inline calls to memset. */
int max_insns_inline_memset;
/* Issue rate of the processor. */
unsigned int issue_rate;
/* Explicit prefetch data. */
struct
{
int num_slots;
int l1_cache_size;
int l1_cache_line_size;
} prefetch;
enum {PREF_CONST_POOL_FALSE, PREF_CONST_POOL_TRUE}
prefer_constant_pool: 1;
/* Prefer STRD/LDRD instructions over PUSH/POP/LDM/STM. */
bool prefer_ldrd_strd;
enum {PREF_LDRD_FALSE, PREF_LDRD_TRUE} prefer_ldrd_strd: 1;
/* The preference for non short cirtcuit operation when optimizing for
performance. The first element covers Thumb state and the second one
is for ARM state. */
bool logical_op_non_short_circuit[2];
/* Vectorizer costs. */
const struct cpu_vec_costs* vec_costs;
/* Prefer Neon for 64-bit bitops. */
bool prefer_neon_for_64bits;
enum log_op_non_sc {LOG_OP_NON_SC_FALSE, LOG_OP_NON_SC_TRUE};
log_op_non_sc logical_op_non_short_circuit_thumb: 1;
log_op_non_sc logical_op_non_short_circuit_arm: 1;
/* Prefer 32-bit encoding instead of flag-setting 16-bit encoding. */
bool disparage_flag_setting_t16_encodings;
/* Prefer 32-bit encoding instead of 16-bit encoding where subset of flags
would be set. */
bool disparage_partial_flag_setting_t16_encodings;
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. */
bool string_ops_prefer_neon;
/* Maximum number of instructions to inline calls to memset. */
int max_insns_inline_memset;
/* Bitfield encoding the fuseable pairs of instructions. */
unsigned int fuseable_ops;
enum {PREF_NEON_STRINGOPS_FALSE, PREF_NEON_STRINGOPS_TRUE}
string_ops_prefer_neon: 1;
/* Bitfield encoding the fuseable pairs of instructions. Use FUSE_OPS
in an initializer if multiple fusion operations are supported on a
target. */
enum fuse_ops
{
FUSE_NOTHING = 0,
FUSE_MOVW_MOVT = 1 << 0
} fuseable_ops: 1;
/* Depth of scheduling queue to check for L2 autoprefetcher. */
enum arm_sched_autopref sched_autopref;
/* Issue rate of the processor. */
unsigned int issue_rate;
enum {SCHED_AUTOPREF_OFF, SCHED_AUTOPREF_RANK, SCHED_AUTOPREF_FULL}
sched_autopref: 2;
};
/* Smash multiple fusion operations into a type that can be used for an
initializer. */
#define FUSE_OPS(x) ((tune_params::fuse_ops) (x))
extern const struct tune_params *current_tune;
extern int vfp3_const_double_for_fract_bits (rtx);
/* return power of two from operand, otherwise 0. */

File diff suppressed because it is too large Load Diff

View File

@ -2057,10 +2057,11 @@ enum arm_auto_incmodes
(current_tune->branch_cost (speed_p, predictable_p))
/* False if short circuit operation is preferred. */
#define LOGICAL_OP_NON_SHORT_CIRCUIT \
((optimize_size) \
? (TARGET_THUMB ? false : true) \
: (current_tune->logical_op_non_short_circuit[TARGET_ARM]))
#define LOGICAL_OP_NON_SHORT_CIRCUIT \
((optimize_size) \
? (TARGET_THUMB ? false : true) \
: TARGET_THUMB ? current_tune->logical_op_non_short_circuit_thumb \
: current_tune->logical_op_non_short_circuit_arm)
/* Position Independent Code. */