Too many sfmts

Frank Ch. Eigler fche@redhat.com
Fri Nov 10 09:13:00 GMT 2000


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
-- 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.4 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE6DCyrVZbdDOm/ZT0RAiuGAJ9QzEpBoeWSoJ1WSgkniD41FMjxYwCfa568
2WIEVSL2C3TK2ExFmjZervM=
=Ovmf
-----END PGP SIGNATURE-----


More information about the Cgen mailing list