This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: 2nd try for patch for automaton based pipeline hazard recognizer (part #1)


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.

Vladimir


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]