[llvm] r200022 - Add Constant Hoisting Pass
Juergen Ributzka
juergen at apple.com
Mon Jan 27 13:50:30 PST 2014
Hi Quentin,
the constant coalescing code isn’t that clever, so you won’t have a chain of adds to get the final constant. There is always at most one add between the materialization of the base constant and its use.
For the test case I found it to be much easier to just count the number of constant materializations.
Cheers,
Juergen
On Jan 24, 2014, at 11:06 AM, Quentin Colombet <qcolombet at apple.com> wrote:
> Hi Juergen,
>
> Sorry for the late comments on this.
> 1. I have one comment on the added test case, see inline comments.
> 2. When you create a displacement from one constant to another, you are creating data dependencies. I know that you did not measure any performance impact for this pass, but is the scheduler able to break these dependency it is increase the critical path?
> What I have in mind in something like this:
>
> Before:
> op1 BigCst
> op2 BigCst+MaxDisplacement
> op3 BigCst+2*MaxDisplacement
> =>
>
> After:
> regCst = bitcast BigCst
> op1 regCst
> regCst2 = add regCst, MaxDisplacement
> op2 regCst2
> regCst3 = add regCst2, MaxDisplacement
> op3 regCst3
>
> Before has 3 independent computations.
> After has one big chain of computation.
>
> That said, I believe that wouldn’t happen often, just curious :).
>
> Thanks,
> -Quentin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140127/19c1197a/attachment.html>
More information about the llvm-commits
mailing list