James Greenhalgh <james.greenha...@arm.com> writes: > -For the generate pass, only the names of the insns matter, from either a > -named @code{define_insn} or a @code{define_expand}. The compiler will > +When expanding from gimple to RTL, only named @code{define_insn} > +constructs and @code{define_expand} constructs are used. The compiler will > choose the pattern with the right name and apply the operands according > to the documentation later in this chapter, without regard for the RTL > -template or operand constraints. Note that the names the compiler looks > -for are hard-coded in the compiler---it will ignore unnamed patterns and > -patterns with names it doesn't know about, but if you don't provide a > -named pattern it needs, it will abort. > +template or operand constraints. Note that the names which are used for > +expansion are hard-coded in the compiler---unnamed patterns and patterns > +with names which do not have a standard meaning are ignored during > +expansion. If you don't provide a named pattern that the compiler is > +trying to expand, it may try a different expansion strategy. If no > +other expansion strategies are possible, the compiler will abort.
Minor nit, I think both "which"es here should be "that"s. > If a @code{define_insn} is used, the template given is inserted into the > -insn list. If a @code{define_expand} is used, one of three things > -happens, based on the condition logic. The condition logic may manually > -create new insns for the insn list, say via @code{emit_insn()}, and > -invoke @code{DONE}. For certain named patterns, it may invoke @code{FAIL} > to tell the > -compiler to use an alternate way of performing that task. If it invokes > -neither @code{DONE} nor @code{FAIL}, the template given in the pattern > +insn list. > + > +If a @code{define_expand} is used, one of three things happens, encoded in > +the condition logic. The condition logic may manually create new insns > +for the insn list, say via @code{emit_insn ()}, and invoke @code{DONE}, > +indicating a successful expansion. If the standard pattern name permits > +it, the condition logic may invoke @code{FAIL} to express that an alternate > +strategy should be used to performing the expansion. If the condition logic > +invokes neither @code{DONE} nor @code{FAIL}, the template given in the > pattern Can we s/alternate/alternative/ at the same time? I think "alternative" is still correct in US English. s/to performing/to perform/. Thanks, Richard