This is the mail archive of the cgen@sources.redhat.com mailing list for the CGEN project.


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

Too many sfmts


Hi -

For an internal port that is a heavy user of anyof-operands, and thus
produces the Cartesian product of ~1000 instantiated instructions, there
is also a huge number of sfmt objects created.  Many of them appear
in nearly-duplicate sets that share ifmts.  The only difference between
the sfmts appear to be in-ops & out-ops, many of which do not appear
really relevant.  For example, some SEM-ONLY operands may appear in
some, but not others.  Some may take ordinary operands as both inputs
and outputs; some as outputs only.

The reason this bugs me is that the generated extractor clauses in the
decoder for many of these sets is *identical*.  Of those 1000
instructions, perhaps 100 unique extraction clauses are emitted.
(The compiler soaks up ~300MB of memory (!) processing the bloated
decoder/extractor function.)  So, I'd like to get a sense of why ...

- sfmts exist at all (as distinct from ifmts and argbufs)
- the sim decoder uses sfmts rather than ifmts during extraction
- how -sfmt-search-key could be changed to be less sensitive to
  irrelevant deltas (SEM-ONLY operands, etc.), so sfmts could be
  shared more among instructions
- can't we make the extractor clauses functions instead?


- FChE

PGP signature


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