2nd try for patch for automaton based pipeline hazard recognizer (part #1)
Dan Nicolaescu
dann@godzilla.ICS.UCI.EDU
Thu Jun 14 16:26:00 GMT 2001
Vladimir Makarov <vmakarov@redhat.com> writes:
> Dan Nicolaescu wrote:
> >
> > Vladimir Makarov <vmakarov@redhat.com> writes:
> >
> > > Dan Nicolaescu wrote:
> > > >
> > > > [snip]
> > > >
> > > > I have a comment on the constructs used to describe the pipeline, it
> > > > uses regular expressions in a string.
> > > >
> > > > That is a little bit not-orthogonal with the rest of the .md file, as
> > > > regexps are an infix notation and the rest of .md language is a prefix
> > > > language.
> > > >
> > > > IMO something like:
> > > >
> > > > (define_insn_reservation "mult" 4 (eq_attr "cpu" "mult")
> > > > (sequence "i1_pipeline" (nothing 3)
> > > > (or "port_0" "port1")))
> > >
> > > Hi, Dan.
> > >
> > > Sequence requires list of rtl expressions. That means you should write
> > >
> > > (sequence (const_string "i1_pipeline") (nothing 3)
> > >
> > > > is a little bit more understandable and probably easier to parse
> > > > than:
> > > >
> > > > (define_insn_reservation "mult" 4 (eq_attr "cpu" "mult")
> > > > "i1_pipeline, nothing*3, (port_0 | port1)")
> > > >
> > > > (stolen from your example)
> > > >
> > > > Of course this could turn into a religious discussion...
> > > > Just wondering what everybody thinks...
> > >
> > > RTL has some constructions which could be used to describe the
> > > reservations (sequence, parallel etc.). If we are using rtl
> > > constructions to describe the reservation, it will be too verbose.
> > > Typical example is using (const_string "a") instead of "a". A 200 lines
> > > description (of one VLIW processor) would be 400-600 lines in such
> > > case. Also this description would be not readable. Actually, the first
> > > design used such approach and was rejected.
> > >
> > > If we don't use existing RTL constructions, we need to create new ones
> > > slightly different to the existing constructions which is also not
> > > good. So I'd choose brevity and simplicity to orthogonality in this
> > > case. That is not only my opinion.
> >
> > You could create a few new constructs: (pipe_sequence ... )
> > or (pseq ... )
> >
> > You just need 3-4 of them. (You introduce new constructs with the
> > regexp syntax anyway, so I don't think this is a problem).
> >
>
> Dan, it will be too verbose. Even if you don't use the existing rtl
> construction, you need nested constructions which is rtl expressions.
> It results in that you should always use for each name (const_string
> "..."). If we don't use the nested constructions, the model will be too
> primitive.
You don't have to. You are writing a new reader anyway, so you can
make it read whatever you want. So the change is just from a regexp
infix format to a prefix parenthesized format.
More information about the Gcc-patches
mailing list