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:
Bin Cheng 2015-03-25 05:53:55 +00:00 committed by Bin Cheng
parent fae00b3eee
commit 2301ca745e
5 changed files with 82 additions and 0 deletions

View File

@ -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

View File

@ -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);

View File

@ -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";

View File

@ -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

View File

@ -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