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