From 048d0d36c2021df68c27dcc308f8f0717f0537bf Mon Sep 17 00:00:00 2001 From: Maxim Kuvyrkov Date: Thu, 16 Mar 2006 05:29:44 +0000 Subject: ia64.c (stops_p): Added explicit initialization. 2006-03-16 Maxim Kuvyrkov * config/ia64/ia64.c (stops_p): Added explicit initialization. (ia64_first_cycle_multipass_dfa_lookahead_guard_spec, ia64_h_i_d_extended, ia64_set_sched_flags, ia64_speculate_insn, ia64_needs_block_p, ia64_gen_check, ia64_sched_init_global, ia64_sched_finish_global): New static functions to implement hooks from gcc_target.sched. (spec_check_no, max_uid, pending_data_specs): New static variables. (ia64_mode_to_int, ia64_gen_spec_insn, ia64_spec_check_p, ia64_spec_check_src_p): New static functions. (ia64_adjust_cost): Renamed to ia64_adjust_cost_2. (TARGET_SCHED_ADJUST_COST): Removed. (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_FINISH_GLOBAL, TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK, TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC, TARGET_SCHED_SET_SCHED_FLAGS): New macros. (update_set_flags, group_barrier_needed, set_src_needs_barrier): Fixed to handle speculation checks. (rtx_needs_barrier): Fixed to handle speculative loads and their checks. (ia64_variable_issue): Added code to count speculative loads and their checks. (ia64_first_cycle_multipass_dfa_lookahead_guard): Fixed to handle speculative loads. (enum SPEC_MODES, enum SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): New enumerations. (SPEC_GEN_EXTEND_OFFSET, SPEC_N, SPEC_GEN_CHECK_MUTATION_OFFSET): New constants. (ia64_ld_address_bypass_p): Fixed to handle speculative loads. (ia64_reorg): Reset stops_p to NULL after it is freed. * config/ia64/ia64.md (UNSPEC_LDA, UNSPEC_LDS, UNSPEC_LDSA, UNSPEC_LDCCLR, UNSPEC_CHKACLR, UNSPEC_CHKS): New constants. (itanium_class): chk_s renamed to chk_s_i. New constants: chk_s_f, chk_a. (data_speculative, control_speculative, check_load): New attributes. (mov_advanced, mov_speculative, mov_speculative_advanced, zero_extenddi2_advanced, zero_extenddi2_speculative, zero_extenddi2_speculative_advanced): New patterns for data and control speculative loads. (mov_clr, zero_extenddi2_clr): New patterns for check loads. (advanced_load_check_clr_, speculation_check_): New pattern for data and control speculation checks. (MODE, MODE_FOR_EXTEND, output_a, output_s, output_sa, output_c_clr, ld_reg_constr, ldc_reg_constr, chk_reg_constr, mem_constr, reg_pred_prefix, ld_class, chka_class, chks_class, attr_yes): Auxiliary definitions for the patterns. * config/ia64/itanium1.md (1_fldc, 1_fldpc, 1_ldc, 1_chk_s_f, 1_chk_a, 1b_fldc, 1b_fldpc, 1b_ldc, 1b_chk_s_f, 1b_chk_a): New resource constraints. (1_fld, 1_fldp, 1_ld, 1b_fld, 1b_fldp, 1b_ld): Add a condition for speculation. (1_chk_s, 1b_chk_s): Renamed to 1_chk_s_i, 1b_chk_s_i. * config/ia64/itanium2.md (2_flda, 2_fldc, 2_fldpc, 2_ldc, 2_chk_s_f, 2_chk_a, 2b_flda, 2b_fldc, 2b_fldpc, 2b_ldc, 2b_chk_s_f, 2b_chk_a): New resource constraints. (2_fld, 2_fldp, 2_ld, 2b_fld, 2b_fldp, 2b_ld): Add a condition for speculation. (2_chk_s, 2b_chk_s): Renamed to 2_chk_s_i, 2b_chk_s_i. * config/ia64/ia64.opt (msched-br-data-spec, msched-ar-data-spec, msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec, msched-in-control-spec, msched-ldc, msched-control-ldc, msched-spec-verbose, msched-prefer-non-data-spec-insns, msched-prefer-non-control-spec-insns, msched-count-spec-in-critical-path): New flags to tune speculative scheduling. * doc/invoke.texi (msched-br-data-spec, msched-ar-data-spec, msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec, msched-in-control-spec, msched-ldc, msched-control-ldc, msched-spec-verbose, msched-prefer-non-data-spec-insns, msched-prefer-non-control-spec-insns, msched-count-spec-in-critical-path): Document new flags. From-SVN: r112129 --- gcc/doc/invoke.texi | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 1 deletion(-) (limited to 'gcc/doc') diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index f037f4b..5338419 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -549,7 +549,13 @@ Objective-C and Objective-C++ Dialects}. -minline-sqrt-min-latency -minline-sqrt-max-throughput @gol -mno-dwarf2-asm -mearly-stop-bits @gol -mfixed-range=@var{register-range} -mtls-size=@var{tls-size} @gol --mtune=@var{cpu-type} -mt -pthread -milp32 -mlp64} +-mtune=@var{cpu-type} -mt -pthread -milp32 -mlp64 @gol +-mno-sched-br-data-spec -msched-ar-data-spec -mno-sched-control-spec @gol +-msched-br-in-data-spec -msched-ar-in-data-spec -msched-in-control-spec @gol +-msched-ldc -mno-sched-control-ldc -mno-sched-spec-verbose @gol +-mno-sched-prefer-non-data-spec-insns @gol +-mno-sched-prefer-non-control-spec-insns @gol +-mno-sched-count-spec-in-critical-path} @emph{M32R/D Options} @gccoptlist{-m32r2 -m32rx -m32r @gol @@ -9734,6 +9740,113 @@ The 32-bit environment sets int, long and pointer to 32 bits. The 64-bit environment sets int to 32 bits and long and pointer to 64 bits. These are HP-UX specific flags. +@item -mno-sched-br-data-spec +@itemx -msched-br-data-spec +@opindex -mno-sched-br-data-spec +@opindex -msched-br-data-spec +(Dis/En)able data speculative scheduling before reload. +This will result in generation of the ld.a instructions and +the corresponding check instructions (ld.c / chk.a). +The default is 'disable'. + +@item -msched-ar-data-spec +@itemx -mno-sched-ar-data-spec +@opindex -msched-ar-data-spec +@opindex -mno-sched-ar-data-spec +(En/Dis)able data speculative scheduling after reload. +This will result in generation of the ld.a instructions and +the corresponding check instructions (ld.c / chk.a). +The default is 'enable'. + +@item -mno-sched-control-spec +@itemx -msched-control-spec +@opindex -mno-sched-control-spec +@opindex -msched-control-spec +(Dis/En)able control speculative scheduling. This feature is +available only during region scheduling (i.e. before reload). +This will result in generation of the ld.s instructions and +the corresponding check instructions chk.s . +The default is 'disable'. + +@item -msched-br-in-data-spec +@itemx -mno-sched-br-in-data-spec +@opindex -msched-br-in-data-spec +@opindex -mno-sched-br-in-data-spec +(En/Dis)able speculative scheduling of the instructions that +are dependent on the data speculative loads before reload. +This is effective only with @option{-msched-br-data-spec} enabled. +The default is 'enable'. + +@item -msched-ar-in-data-spec +@itemx -mno-sched-ar-in-data-spec +@opindex -msched-ar-in-data-spec +@opindex -mno-sched-ar-in-data-spec +(En/Dis)able speculative scheduling of the instructions that +are dependent on the data speculative loads after reload. +This is effective only with @option{-msched-ar-data-spec} enabled. +The default is 'enable'. + +@item -msched-in-control-spec +@itemx -mno-sched-in-control-spec +@opindex -msched-in-control-spec +@opindex -mno-sched-in-control-spec +(En/Dis)able speculative scheduling of the instructions that +are dependent on the control speculative loads. +This is effective only with @option{-msched-control-spec} enabled. +The default is 'enable'. + +@item -msched-ldc +@itemx -mno-sched-ldc +@opindex -msched-ldc +@opindex -mno-sched-ldc +(En/Dis)able use of simple data speculation checks ld.c . +If disabled, only chk.a instructions will be emitted to check +data speculative loads. +The default is 'enable'. + +@item -mno-sched-control-ldc +@itemx -msched-control-ldc +@opindex -mno-sched-control-ldc +@opindex -msched-control-ldc +(Dis/En)able use of ld.c instructions to check control speculative loads. +If enabled, in case of control speculative load with no speculatively +scheduled dependent instructions this load will be emitted as ld.sa and +ld.c will be used to check it. +The default is 'disable'. + +@item -mno-sched-spec-verbose +@itemx -msched-spec-verbose +@opindex -mno-sched-spec-verbose +@opindex -msched-spec-verbose +(Dis/En)able printing of the information about speculative motions. + +@item -mno-sched-prefer-non-data-spec-insns +@itemx -msched-prefer-non-data-spec-insns +@opindex -mno-sched-prefer-non-data-spec-insns +@opindex -msched-prefer-non-data-spec-insns +If enabled, data speculative instructions will be choosen for schedule +only if there are no other choices at the moment. This will make +the use of the data speculation much more conservative. +The default is 'disable'. + +@item -mno-sched-prefer-non-control-spec-insns +@itemx -msched-prefer-non-control-spec-insns +@opindex -mno-sched-prefer-non-control-spec-insns +@opindex -msched-prefer-non-control-spec-insns +If enabled, control speculative instructions will be choosen for schedule +only if there are no other choices at the moment. This will make +the use of the control speculation much more conservative. +The default is 'disable'. + +@item -mno-sched-count-spec-in-critical-path +@itemx -msched-count-spec-in-critical-path +@opindex -mno-sched-count-spec-in-critical-path +@opindex -msched-count-spec-in-critical-path +If enabled, speculative depedencies will be considered during +computation of the instructions priorities. This will make the use of the +speculation a bit more conservative. +The default is 'disable'. + @end table @node M32C Options -- cgit v1.1