[PATCH] Constant Hoisting Pass

Juergen Ributzka juergen at apple.com
Mon Jan 27 14:38:05 PST 2014


Hi Hal,

currently the “getIntImmCost" hook is only used in SelectionDAG (getMemsetStringVal) for simplifying a load of a string constant to a constant during memset optimization.
There is already a TTI hook to calculate the cost of an memory operation, but that mostly counts the number of memory operations and can’t be directly compared to the cost of an immediate.

I guess a new target hook might still be the easiest solution here. What about “bool shouldConvertConstantLoadToIntImm(const APInt &Imm, Type *Ty) const”?

-Juergen

On Jan 23, 2014, at 4:12 PM, Juergen Ributzka <juergen at apple.com> wrote:

> Great! I will try to add that feature in a followup patch in this case.
> 
> Cheers,
> Juergen
> 
> On Jan 23, 2014, at 4:06 PM, Hal Finkel <hfinkel at anl.gov> wrote:
> 
>> ----- Original Message -----
>>> From: "Juergen Ributzka" <juergen at apple.com>
>>> To: "Hal Finkel" <hfinkel at anl.gov>
>>> Cc: "LLVM Commits" <llvm-commits at cs.uiuc.edu>, "Owen Anderson" <owen at apple.com>
>>> Sent: Thursday, January 23, 2014 5:58:47 PM
>>> Subject: Re: [PATCH] Constant Hoisting Pass
>>> 
>>> 
>>> That would be great.
>>> 
>>> 
>>> Yes, the TCC_LOAD part was and is still a little bit flaky. I think
>>> the only place where this is actually used is in the SelectionDAG.
>>> A targets definition of how expensive a load is also not well defined
>>> in this context, so maybe it would be better if we have a
>>> separate target hook to model this better?
>>> 
>> 
>> Makes sense to me.
>> 
>> Thanks again,
>> Hal
>> 
>>> 
>>> -Juergen
>>> 
>>> 
>>> On Jan 23, 2014, at 3:44 PM, Hal Finkel < hfinkel at anl.gov > wrote:
>>> 
>>> 
>>> Hi Juergen,
>>> 
>>> I think this looks useful, and I'd like to take advantage of this for
>>> PowerPC when it lands. One small request: I'd like to have some cost
>>> level in between "basic" and "load". There are constants on PPC that
>>> take a few add-cost instructions to materialize... hoisting these is
>>> likely useful, but loads of these constants should still be
>>> transformed into immediates (because the several integer
>>> instructions necessary are still cheaper than a load).
>>> 
>>> Thanks,
>>> Hal
>>> 
>> 
>> -- 
>> Hal Finkel
>> Assistant Computational Scientist
>> Leadership Computing Facility
>> Argonne National Laboratory
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140127/daaa4652/attachment.html>


More information about the llvm-commits mailing list