This is the mail archive of the
cgen@sources.redhat.com
mailing list for the CGEN project.
Too many sfmts
- To: cgen at sources dot redhat dot com
- Subject: Too many sfmts
- From: "Frank Ch. Eigler" <fche at redhat dot com>
- Date: Fri, 10 Nov 2000 12:13:15 -0500
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