On Tue, 2022-05-17 at 23:15 -0400, Michael Meissner wrote: > On Fri, May 13, 2022 at 01:20:30PM -0500, will schmidt wrote: > > On Fri, 2022-05-13 at 12:17 -0400, Michael Meissner wrote: > > > > > >
<snip> > > > gcc/ > > > PR target/103109 > > > * config/rs6000/rs6000.md (su_int32): New code attribute. > > > (<u>mul<mode><dmode>3): Convert from define_expand to > > > define_insn_and_split. > > > (maddld<mode>4): Add generator function. > > > > -(define_insn "*maddld<mode>4" > > +(define_insn "maddld<mode>4" > > > > Is the removal of the "*" considering adding generator? (Thats > > terminology that I'm not immediately familiar with). > > Yes. If you have a pattern: > > (define_insn "foosi2" > [(set (match_operand:SI 0 "register_operand" "=r") > (foo:SI (match_operand:SI 1 "register_operand" "r")))] > "" > "foo %0,%1") > > It creates a 'gen_foosi2' function that has 2 arguments, and it makes > the insn > listed. > > It then has support for insn recognition and output. > > If the pattern starts with a '*', there is no 'gen_foosi2' function > created, > but the insn recognitiion and output are still done. > > In practice, you typically use the '*' names for patterns that are > used as the > targets of combination, or separate insns for different machines. > > Here is the verbage from rtl.texi: > > These names serve one of two purposes. The first is to indicate that > the > instruction performs a certain standard job for the RTL-generation > pass of the compiler, such as a move, an addition, or a conditional > jump. The second is to help the target generate certain target- > specific > operations, such as when implementing target-specific intrinsic > functions. > > It is better to prefix target-specific names with the name of the > target, to avoid any clash with current or future standard names. > > The absence of a name is indicated by writing an empty string > where the name should go. Nameless instruction patterns are never > used for generating RTL code, but they may permit several simpler > insns > to be combined later on. > > For the purpose of debugging the compiler, you may also specify a > name beginning with the @samp{*} character. Such a name is used only > for identifying the instruction in RTL dumps; it is equivalent to > having > a nameless pattern for all other purposes. Names beginning with the > @samp{*} character are not required to be unique. Thanks for the explanation. :-) -Will