diff options
Diffstat (limited to 'gcc/doc/tm.texi')
-rw-r--r-- | gcc/doc/tm.texi | 100 |
1 files changed, 34 insertions, 66 deletions
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index fd4e4fd6628..a9613b0f3c3 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -1057,7 +1057,7 @@ the default value is @code{BIGGEST_ALIGNMENT}. On systems that use ELF, the default (in @file{config/elfos.h}) is the largest supported 32-bit ELF section alignment representable on -a 32-bit host e.g. @samp{(((unsigned HOST_WIDEST_INT) 1 << 28) * 8)}. +a 32-bit host e.g. @samp{(((uint64_t) 1 << 28) * 8)}. On 32-bit ELF the largest supported section alignment in bits is @samp{(0x80000000 * 8)}, but this is not representable on 32-bit hosts. @end defmac @@ -6716,26 +6716,32 @@ schedules to choose the best one. The default is no multipass scheduling. @end deftypefn -@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx @var{insn}) +@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx @var{insn}, int @var{ready_index}) This hook controls what insns from the ready insn queue will be considered for the multipass insn scheduling. If the hook returns -zero for @var{insn}, the insn will be not chosen to -be issued. +zero for @var{insn}, the insn will be considered in multipass scheduling. +Positive return values will remove @var{insn} from consideration on +the current round of multipass scheduling. +Negative return values will remove @var{insn} from consideration for given +number of cycles. +Backends should be careful about returning non-zero for highest priority +instruction at position 0 in the ready list. @var{ready_index} is passed +to allow backends make correct judgements. The default is that any ready insns can be chosen to be issued. @end deftypefn -@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BEGIN (void *@var{data}, char *@var{ready_try}, int @var{n_ready}, bool @var{first_cycle_insn_p}) +@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BEGIN (void *@var{data}, signed char *@var{ready_try}, int @var{n_ready}, bool @var{first_cycle_insn_p}) This hook prepares the target backend for a new round of multipass scheduling. @end deftypefn -@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_ISSUE (void *@var{data}, char *@var{ready_try}, int @var{n_ready}, rtx @var{insn}, const void *@var{prev_data}) +@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_ISSUE (void *@var{data}, signed char *@var{ready_try}, int @var{n_ready}, rtx @var{insn}, const void *@var{prev_data}) This hook is called when multipass scheduling evaluates instruction INSN. @end deftypefn -@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BACKTRACK (const void *@var{data}, char *@var{ready_try}, int @var{n_ready}) +@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BACKTRACK (const void *@var{data}, signed char *@var{ready_try}, int @var{n_ready}) This is called when multipass scheduling backtracks from evaluation of an instruction. @end deftypefn @@ -6843,19 +6849,6 @@ a pattern for a branchy check corresponding to a simple check denoted by @var{insn} should be generated. In this case @var{label} can't be null. @end deftypefn -@deftypefn {Target Hook} bool TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC (const_rtx @var{insn}) -This hook is used as a workaround for -@samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD} not being -called on the first instruction of the ready list. The hook is used to -discard speculative instructions that stand first in the ready list from -being scheduled on the current cycle. If the hook returns @code{false}, -@var{insn} will not be chosen to be issued. -For non-speculative instructions, -the hook should always return @code{true}. For example, in the ia64 backend -the hook is used to cancel data speculative insns when the ALAT table -is nearly full. -@end deftypefn - @deftypefn {Target Hook} void TARGET_SCHED_SET_SCHED_FLAGS (struct spec_info_def *@var{spec_info}) This hook is used by the insn scheduler to find out what features should be enabled/used. @@ -9725,9 +9718,9 @@ You can have multiple entities that are mode-switched, and select at run time which entities actually need it. @code{OPTIMIZE_MODE_SWITCHING} should return nonzero for any @var{entity} that needs mode-switching. If you define this macro, you also have to define -@code{NUM_MODES_FOR_MODE_SWITCHING}, @code{MODE_NEEDED}, -@code{MODE_PRIORITY_TO_MODE} and @code{EMIT_MODE_SET}. -@code{MODE_AFTER}, @code{MODE_ENTRY}, and @code{MODE_EXIT} +@code{NUM_MODES_FOR_MODE_SWITCHING}, @code{TARGET_MODE_NEEDED}, +@code{TARGET_MODE_PRIORITY} and @code{TARGET_MODE_EMIT}. +@code{TARGET_MODE_AFTER}, @code{TARGET_MODE_ENTRY}, and @code{TARGET_MODE_EXIT} are optional. @end defmac @@ -9744,51 +9737,29 @@ represented as numbers 0 @dots{} N @minus{} 1. N is used to specify that no mod switch is needed / supplied. @end defmac -@defmac MODE_NEEDED (@var{entity}, @var{insn}) -@var{entity} is an integer specifying a mode-switched entity. If -@code{OPTIMIZE_MODE_SWITCHING} is defined, you must define this macro to -return an integer value not larger than the corresponding element in -@code{NUM_MODES_FOR_MODE_SWITCHING}, to denote the mode that @var{entity} must -be switched into prior to the execution of @var{insn}. -@end defmac +@deftypefn {Target Hook} void TARGET_MODE_EMIT (int @var{entity}, int @var{mode}, HARD_REG_SET @var{regs_live}) +Generate one or more insns to set @var{entity} to @var{mode}. @var{hard_reg_live} is the set of hard registers live at the point where the insn(s) are to be inserted. Sets of a lower numbered entity will be emitted before sets of a higher numbered entity to a mode of the same or lower priority. +@end deftypefn -@defmac MODE_AFTER (@var{entity}, @var{mode}, @var{insn}) -@var{entity} is an integer specifying a mode-switched entity. If -this macro is defined, it is evaluated for every @var{insn} during -mode switching. It determines the mode that an insn results in (if -different from the incoming mode). -@end defmac +@deftypefn {Target Hook} int TARGET_MODE_NEEDED (int @var{entity}, rtx @var{insn}) +@var{entity} is an integer specifying a mode-switched entity. If @code{OPTIMIZE_MODE_SWITCHING} is defined, you must define this macro to return an integer value not larger than the corresponding element in @code{NUM_MODES_FOR_MODE_SWITCHING}, to denote the mode that @var{entity} must be switched into prior to the execution of @var{insn}. +@end deftypefn -@defmac MODE_ENTRY (@var{entity}) -If this macro is defined, it is evaluated for every @var{entity} that needs -mode switching. It should evaluate to an integer, which is a mode that -@var{entity} is assumed to be switched to at function entry. If @code{MODE_ENTRY} -is defined then @code{MODE_EXIT} must be defined. -@end defmac +@deftypefn {Target Hook} int TARGET_MODE_AFTER (int @var{entity}, int @var{mode}, rtx @var{insn}) +@var{entity} is an integer specifying a mode-switched entity. If this macro is defined, it is evaluated for every @var{insn} during mode switching. It determines the mode that an insn results in (if different from the incoming mode). +@end deftypefn -@defmac MODE_EXIT (@var{entity}) -If this macro is defined, it is evaluated for every @var{entity} that needs -mode switching. It should evaluate to an integer, which is a mode that -@var{entity} is assumed to be switched to at function exit. If @code{MODE_EXIT} -is defined then @code{MODE_ENTRY} must be defined. -@end defmac +@deftypefn {Target Hook} int TARGET_MODE_ENTRY (int @var{entity}) +If this macro is defined, it is evaluated for every @var{entity} that needs mode switching. It should evaluate to an integer, which is a mode that @var{entity} is assumed to be switched to at function entry. If @code{TARGET_MODE_ENTRY} is defined then @code{TARGET_MODE_EXIT} must be defined. +@end deftypefn -@defmac MODE_PRIORITY_TO_MODE (@var{entity}, @var{n}) -This macro specifies the order in which modes for @var{entity} are processed. -0 is the highest priority, @code{NUM_MODES_FOR_MODE_SWITCHING[@var{entity}] - 1} the -lowest. The value of the macro should be an integer designating a mode -for @var{entity}. For any fixed @var{entity}, @code{mode_priority_to_mode} -(@var{entity}, @var{n}) shall be a bijection in 0 @dots{} -@code{num_modes_for_mode_switching[@var{entity}] - 1}. -@end defmac +@deftypefn {Target Hook} int TARGET_MODE_EXIT (int @var{entity}) +If this macro is defined, it is evaluated for every @var{entity} that needs mode switching. It should evaluate to an integer, which is a mode that @var{entity} is assumed to be switched to at function exit. If @code{TARGET_MODE_EXIT} is defined then @code{TARGET_MODE_ENTRY} must be defined. +@end deftypefn -@defmac EMIT_MODE_SET (@var{entity}, @var{mode}, @var{hard_regs_live}) -Generate one or more insns to set @var{entity} to @var{mode}. -@var{hard_reg_live} is the set of hard registers live at the point where -the insn(s) are to be inserted. -Sets of a lower numbered entity will be emitted before sets of a higher -numbered entity to a mode of the same or lower priority. -@end defmac +@deftypefn {Target Hook} int TARGET_MODE_PRIORITY (int @var{entity}, int @var{n}) +This macro specifies the order in which modes for @var{entity} are processed. 0 is the highest priority, @code{NUM_MODES_FOR_MODE_SWITCHING[@var{entity}] - 1} the lowest. The value of the macro should be an integer designating a mode for @var{entity}. For any fixed @var{entity}, @code{mode_priority} (@var{entity}, @var{n}) shall be a bijection in 0 @dots{} @code{num_modes_for_mode_switching[@var{entity}] - 1}. +@end deftypefn @node Target Attributes @section Defining target-specific uses of @code{__attribute__} @@ -10067,9 +10038,6 @@ Another note: according to the MIPS spec, coprocessor 1 (if present) is the FPU@. One accesses COP1 registers through standard mips floating-point support; they are not included in this mechanism. -There is one macro used in defining the MIPS coprocessor interface which -you may want to override in subtargets; it is described below. - @node PCH Target @section Parameters for Precompiled Header Validity Checking @cindex parameters, precompiled headers |