Deleted Added
full compact
md.texi (117395) md.texi (119256)
1@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1996, 1998, 1999, 2000, 2001, 2002
2@c Free Software Foundation, Inc.
1@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1996, 1998, 1999, 2000, 2001,
2@c 2002, 2003 Free Software Foundation, Inc.
3@c This is part of the GCC manual.
4@c For copying conditions, see the file gcc.texi.
5
6@ifset INTERNALS
7@node Machine Desc
8@chapter Machine Descriptions
9@cindex machine descriptions
10

--- 5498 unchanged lines hidden (view full) ---

5509conflict. We welcome any examples of how function unit conflicts work
5510in such processors and suggestions for their representation.
5511
5512@node Automaton pipeline description
5513@subsubsection Describing instruction pipeline characteristics
5514@cindex automaton based pipeline description
5515
5516This section describes constructions of the automaton based processor
3@c This is part of the GCC manual.
4@c For copying conditions, see the file gcc.texi.
5
6@ifset INTERNALS
7@node Machine Desc
8@chapter Machine Descriptions
9@cindex machine descriptions
10

--- 5498 unchanged lines hidden (view full) ---

5509conflict. We welcome any examples of how function unit conflicts work
5510in such processors and suggestions for their representation.
5511
5512@node Automaton pipeline description
5513@subsubsection Describing instruction pipeline characteristics
5514@cindex automaton based pipeline description
5515
5516This section describes constructions of the automaton based processor
5517pipeline description. The order of all mentioned below constructions
5518in the machine description file is not important.
5517pipeline description. The order of constructions within the machine
5518description file is not important.
5519
5520@findex define_automaton
5521@cindex pipeline hazard recognizer
5522The following optional construction describes names of automata
5523generated and used for the pipeline hazards recognition. Sometimes
5524the generated finite state automaton used by the pipeline hazard
5525recognizer is large. If we use more than one automaton and bind functional
5519
5520@findex define_automaton
5521@cindex pipeline hazard recognizer
5522The following optional construction describes names of automata
5523generated and used for the pipeline hazards recognition. Sometimes
5524the generated finite state automaton used by the pipeline hazard
5525recognizer is large. If we use more than one automaton and bind functional
5526units to the automata, the summary size of the automata usually is
5526units to the automata, the total size of the automata is usually
5527less than the size of the single automaton. If there is no one such
5528construction, only one finite state automaton is generated.
5529
5530@smallexample
5531(define_automaton @var{automata-names})
5532@end smallexample
5533
5534@var{automata-names} is a string giving names of the automata. The
5535names are separated by commas. All the automata should have unique names.
5527less than the size of the single automaton. If there is no one such
5528construction, only one finite state automaton is generated.
5529
5530@smallexample
5531(define_automaton @var{automata-names})
5532@end smallexample
5533
5534@var{automata-names} is a string giving names of the automata. The
5535names are separated by commas. All the automata should have unique names.
5536The automaton name is used in construction @code{define_cpu_unit} and
5536The automaton name is used in the constructions @code{define_cpu_unit} and
5537@code{define_query_cpu_unit}.
5538
5539@findex define_cpu_unit
5540@cindex processor functional units
5537@code{define_query_cpu_unit}.
5538
5539@findex define_cpu_unit
5540@cindex processor functional units
5541Each processor functional unit used in description of instruction
5541Each processor functional unit used in the description of instruction
5542reservations should be described by the following construction.
5543
5544@smallexample
5545(define_cpu_unit @var{unit-names} [@var{automaton-name}])
5546@end smallexample
5547
5548@var{unit-names} is a string giving the names of the functional units
5549separated by commas. Don't use name @samp{nothing}, it is reserved

--- 44 unchanged lines hidden (view full) ---

5594the automaton based pipeline description, the given latency time is only
5595used for true dependencies. The cost of anti-dependencies is always
5596zero and the cost of output dependencies is the difference between
5597latency times of the producing and consuming insns (if the difference
5598is negative, the cost is considered to be zero). You can always
5599change the default costs for any description by using the target hook
5600@code{TARGET_SCHED_ADJUST_COST} (@pxref{Scheduling}).
5601
5542reservations should be described by the following construction.
5543
5544@smallexample
5545(define_cpu_unit @var{unit-names} [@var{automaton-name}])
5546@end smallexample
5547
5548@var{unit-names} is a string giving the names of the functional units
5549separated by commas. Don't use name @samp{nothing}, it is reserved

--- 44 unchanged lines hidden (view full) ---

5594the automaton based pipeline description, the given latency time is only
5595used for true dependencies. The cost of anti-dependencies is always
5596zero and the cost of output dependencies is the difference between
5597latency times of the producing and consuming insns (if the difference
5598is negative, the cost is considered to be zero). You can always
5599change the default costs for any description by using the target hook
5600@code{TARGET_SCHED_ADJUST_COST} (@pxref{Scheduling}).
5601
5602@var{insn-names} is a string giving the internal name of the insn. The
5602@var{insn-name} is a string giving the internal name of the insn. The
5603internal names are used in constructions @code{define_bypass} and in
5604the automaton description file generated for debugging. The internal
5605name has nothing in common with the names in @code{define_insn}. It is a
5606good practice to use insn classes described in the processor manual.
5607
5608@var{condition} defines what RTL insns are described by this
5609construction. You should remember that you will be in trouble if
5610@var{condition} for two or more different

--- 69 unchanged lines hidden (view full) ---

5680
5681@smallexample
5682(define_reservation @var{reservation-name} @var{regexp})
5683@end smallexample
5684
5685@var{reservation-name} is a string giving name of @var{regexp}.
5686Functional unit names and reservation names are in the same name
5687space. So the reservation names should be different from the
5603internal names are used in constructions @code{define_bypass} and in
5604the automaton description file generated for debugging. The internal
5605name has nothing in common with the names in @code{define_insn}. It is a
5606good practice to use insn classes described in the processor manual.
5607
5608@var{condition} defines what RTL insns are described by this
5609construction. You should remember that you will be in trouble if
5610@var{condition} for two or more different

--- 69 unchanged lines hidden (view full) ---

5680
5681@smallexample
5682(define_reservation @var{reservation-name} @var{regexp})
5683@end smallexample
5684
5685@var{reservation-name} is a string giving name of @var{regexp}.
5686Functional unit names and reservation names are in the same name
5687space. So the reservation names should be different from the
5688functional unit names and can not be reserved name @samp{nothing}.
5688functional unit names and can not be the reserved name @samp{nothing}.
5689
5690@findex define_bypass
5691@cindex instruction latency time
5692@cindex data bypass
5693The following construction is used to describe exceptions in the
5694latency time for given instruction pair. This is so called bypasses.
5695
5696@smallexample

--- 70 unchanged lines hidden (view full) ---

5767@end smallexample
5768
5769@var{options} is a string giving options which affect the generated
5770code. Currently there are the following options:
5771
5772@itemize @bullet
5773@item
5774@dfn{no-minimization} makes no minimization of the automaton. This is
5689
5690@findex define_bypass
5691@cindex instruction latency time
5692@cindex data bypass
5693The following construction is used to describe exceptions in the
5694latency time for given instruction pair. This is so called bypasses.
5695
5696@smallexample

--- 70 unchanged lines hidden (view full) ---

5767@end smallexample
5768
5769@var{options} is a string giving options which affect the generated
5770code. Currently there are the following options:
5771
5772@itemize @bullet
5773@item
5774@dfn{no-minimization} makes no minimization of the automaton. This is
5775only worth to do when we are going to query CPU functional unit
5776reservations in an automaton state.
5775only worth to do when we are debugging the description and need to
5776look more accurately at reservations of states.
5777
5778@item
5779@dfn{time} means printing additional time statistics about
5780generation of automata.
5781
5782@item
5783@dfn{v} means a generation of the file describing the result automata.
5784The file has suffix @samp{.dfa} and can be used for the description

--- 258 unchanged lines hidden ---
5777
5778@item
5779@dfn{time} means printing additional time statistics about
5780generation of automata.
5781
5782@item
5783@dfn{v} means a generation of the file describing the result automata.
5784The file has suffix @samp{.dfa} and can be used for the description

--- 258 unchanged lines hidden ---