Related articles |
---|
Compiler optimization of division and remainder hbaker@netcom.com (1996-01-27) |
Re: Compiler optimization of division and remainder d.sand@ix.netcom.com (1996-01-27) |
Re: Compiler optimization of division and remainder augustss@cs.chalmers.se (1996-01-27) |
Re: Compiler optimization of division and remainder richard@atheist.tamu.edu (1996-01-28) |
Re: Compiler optimization of division and remainder prener@watson.ibm.com (1996-01-29) |
Re: Compiler optimization of division and remainder hbaker@netcom.com (1996-01-29) |
Re: Compiler optimization of division and remainder Peter-Lawrence.Montgomery@cwi.nl (1996-01-29) |
[5 later articles] |
From: | hbaker@netcom.com (Henry G. Baker) |
Newsgroups: | comp.compilers |
Date: | 27 Jan 1996 01:12:48 -0500 |
Organization: | nil |
Keywords: | arithmetic, optimize, question |
On another newsgroup, a poster claimed that some compilers could
optimize a program which used both a/b and a%b (both quotient and
remainder with the _same_ arguments) in such a way that the compiler
would perform only a single hardware division operation and arrange to
use both the quotient and remainder from this single operation.
I've looked at a lot of highly optimized code from a lot of compilers,
and I can't recall ever seeing such an optimization.
I can imagine how such an optimization would be done, but I can't
imagine many other places -- except for possibly keeping track of a
shifted out carry bit in a shift operation, or gathering both the high
order and low order bits of a double-precision integer multiplication
-- where such an optimization would be used. Due to the relatively
low frequency (statically) of occurrence of such a situation, I can
imagine that such an optimization never 'makes the cut'. (I would
also imagine that the general case would easily be NP-complete, as are
most code generation optimizations.)
I have seen references to some pretty garish shifting hacks in the GNU
C compiler, but I'm not sure how many other compilers dabble in this
sort of thing.
I would be interested in a) references to real, existing compilers
which are capable of doing such a thing; and b)
papers/tech-reports/theses, etc. which say how to do this.
Thx in advance.
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.