arm.opt (print_tune_info): New option.
* config/arm/arm.opt (print_tune_info): New option. * config/arm/arm.c (arm_print_tune_info): New function. (arm_file_start): Call arm_print_tune_info. * config/arm/arm-protos.h (struct tune_params): Add comment. * doc/invoke.texi (@item -mprint-tune-info): New item. (-mtune): mention it in ARM Option Summary. From-SVN: r221650
This commit is contained in:
parent
fae00b3eee
commit
2301ca745e
5 changed files with 82 additions and 0 deletions
|
@ -1,3 +1,12 @@
|
|||
2015-03-25 Bin Cheng <bin.cheng@arm.com>
|
||||
|
||||
* config/arm/arm.opt (print_tune_info): New option.
|
||||
* config/arm/arm.c (arm_print_tune_info): New function.
|
||||
(arm_file_start): Call arm_print_tune_info.
|
||||
* config/arm/arm-protos.h (struct tune_params): Add comment.
|
||||
* doc/invoke.texi (@item -mprint-tune-info): New item.
|
||||
(-mtune): mention it in ARM Option Summary.
|
||||
|
||||
2015-03-25 DJ Delorie <dj@redhat.com>
|
||||
|
||||
* config/rl78/rl78.c (rl78_print_operand_1): Move 'p' test to
|
||||
|
|
|
@ -264,6 +264,9 @@ enum arm_sched_autopref
|
|||
ARM_SCHED_AUTOPREF_FULL
|
||||
};
|
||||
|
||||
/* Dump function ARM_PRINT_TUNE_INFO should be updated whenever this
|
||||
structure is modified. */
|
||||
|
||||
struct tune_params
|
||||
{
|
||||
bool (*rtx_costs) (rtx, RTX_CODE, RTX_CODE, int *, bool);
|
||||
|
|
|
@ -25633,6 +25633,59 @@ arm_emit_eabi_attribute (const char *name, int num, int val)
|
|||
asm_fprintf (asm_out_file, "\n");
|
||||
}
|
||||
|
||||
/* This function is used to print CPU tuning information as comment
|
||||
in assembler file. Pointers are not printed for now. */
|
||||
|
||||
void
|
||||
arm_print_tune_info (void)
|
||||
{
|
||||
asm_fprintf (asm_out_file, "\t@.tune parameters\n");
|
||||
asm_fprintf (asm_out_file, "\t\t@constant_limit:\t%d\n",
|
||||
current_tune->constant_limit);
|
||||
asm_fprintf (asm_out_file, "\t\t@max_insns_skipped:\t%d\n",
|
||||
current_tune->max_insns_skipped);
|
||||
asm_fprintf (asm_out_file, "\t\t@num_prefetch_slots:\t%d\n",
|
||||
current_tune->num_prefetch_slots);
|
||||
asm_fprintf (asm_out_file, "\t\t@l1_cache_size:\t%d\n",
|
||||
current_tune->l1_cache_size);
|
||||
asm_fprintf (asm_out_file, "\t\t@l1_cache_line_size:\t%d\n",
|
||||
current_tune->l1_cache_line_size);
|
||||
asm_fprintf (asm_out_file, "\t\t@prefer_constant_pool:\t%d\n",
|
||||
(int) current_tune->prefer_constant_pool);
|
||||
asm_fprintf (asm_out_file, "\t\t@branch_cost:\t(s:speed, p:predictable)\n");
|
||||
asm_fprintf (asm_out_file, "\t\t\t\ts&p\tcost\n");
|
||||
asm_fprintf (asm_out_file, "\t\t\t\t00\t%d\n",
|
||||
current_tune->branch_cost (false, false));
|
||||
asm_fprintf (asm_out_file, "\t\t\t\t01\t%d\n",
|
||||
current_tune->branch_cost (false, true));
|
||||
asm_fprintf (asm_out_file, "\t\t\t\t10\t%d\n",
|
||||
current_tune->branch_cost (true, false));
|
||||
asm_fprintf (asm_out_file, "\t\t\t\t11\t%d\n",
|
||||
current_tune->branch_cost (true, true));
|
||||
asm_fprintf (asm_out_file, "\t\t@prefer_ldrd_strd:\t%d\n",
|
||||
(int) current_tune->prefer_ldrd_strd);
|
||||
asm_fprintf (asm_out_file, "\t\t@logical_op_non_short_circuit:\t[%d,%d]\n",
|
||||
(int) current_tune->logical_op_non_short_circuit[0],
|
||||
(int) current_tune->logical_op_non_short_circuit[1]);
|
||||
asm_fprintf (asm_out_file, "\t\t@prefer_neon_for_64bits:\t%d\n",
|
||||
(int) current_tune->prefer_neon_for_64bits);
|
||||
asm_fprintf (asm_out_file,
|
||||
"\t\t@disparage_flag_setting_t16_encodings:\t%d\n",
|
||||
(int) current_tune->disparage_flag_setting_t16_encodings);
|
||||
asm_fprintf (asm_out_file,
|
||||
"\t\t@disparage_partial_flag_setting_t16_encodings:\t%d\n",
|
||||
(int) current_tune
|
||||
->disparage_partial_flag_setting_t16_encodings);
|
||||
asm_fprintf (asm_out_file, "\t\t@string_ops_prefer_neon:\t%d\n",
|
||||
(int) current_tune->string_ops_prefer_neon);
|
||||
asm_fprintf (asm_out_file, "\t\t@max_insns_inline_memset:\t%d\n",
|
||||
current_tune->max_insns_inline_memset);
|
||||
asm_fprintf (asm_out_file, "\t\t@fuseable_ops:\t%u\n",
|
||||
current_tune->fuseable_ops);
|
||||
asm_fprintf (asm_out_file, "\t\t@sched_autopref:\t%d\n",
|
||||
(int) current_tune->sched_autopref);
|
||||
}
|
||||
|
||||
static void
|
||||
arm_file_start (void)
|
||||
{
|
||||
|
@ -25684,6 +25737,9 @@ arm_file_start (void)
|
|||
asm_fprintf (asm_out_file, "\t.cpu %s\n", truncated_name);
|
||||
}
|
||||
|
||||
if (print_tune_info)
|
||||
arm_print_tune_info ();
|
||||
|
||||
if (TARGET_SOFT_FLOAT)
|
||||
{
|
||||
fpu_name = "softvfp";
|
||||
|
|
|
@ -222,6 +222,12 @@ mtune=
|
|||
Target RejectNegative ToLower Joined Enum(processor_type) Var(arm_tune_option) Init(arm_none)
|
||||
Tune code for the given processor
|
||||
|
||||
mprint-tune-info
|
||||
Target Report RejectNegative Var(print_tune_info) Init(0)
|
||||
Print CPU tuning information as comment in assembler file. This is
|
||||
an option used only for regression testing of the compiler and not
|
||||
intended for ordinary use in compiling code.
|
||||
|
||||
; Other processor_type values are loaded from arm-tables.opt
|
||||
; but that is a generated file and this is an odd-one-out.
|
||||
EnumValue
|
||||
|
|
|
@ -550,6 +550,7 @@ Objective-C and Objective-C++ Dialects}.
|
|||
-mfp16-format=@var{name}
|
||||
-mthumb-interwork -mno-thumb-interwork @gol
|
||||
-mcpu=@var{name} -march=@var{name} -mfpu=@var{name} @gol
|
||||
-mtune=@var{name} -mprint-tune-info @gol
|
||||
-mstructure-size-boundary=@var{n} @gol
|
||||
-mabort-on-noreturn @gol
|
||||
-mlong-calls -mno-long-calls @gol
|
||||
|
@ -13474,6 +13475,13 @@ should be considered deprecated.
|
|||
Restricts generation of IT blocks to conform to the rules of ARMv8.
|
||||
IT blocks can only contain a single 16-bit instruction from a select
|
||||
set of instructions. This option is on by default for ARMv8 Thumb mode.
|
||||
|
||||
@item -mprint-tune-info
|
||||
@opindex mprint-tune-info
|
||||
Print CPU tuning information as comment in assembler file. This is
|
||||
an option used only for regression testing of the compiler and not
|
||||
intended for ordinary use in compiling code. This option is disabled
|
||||
by default.
|
||||
@end table
|
||||
|
||||
@node AVR Options
|
||||
|
|
Loading…
Add table
Reference in a new issue