[llvm-commits] [llvm] r45620 - /llvm/trunk/lib/Target/X86/X86InstrInfo.cpp

Evan Cheng evan.cheng at apple.com
Sat Jan 5 00:59:37 PST 2008


On Jan 5, 2008, at 12:53 AM, Evan Cheng wrote:

>
> On Jan 5, 2008, at 12:28 AM, Chris Lattner wrote:
>
>>
>> On Jan 4, 2008, at 11:21 PM, Bill Wendling wrote:
>>
>>> On Jan 4, 2008, at 11:02 PM, Chris Lattner wrote:
>>>> You aren't looking for loads *from the global*, you're looking for
>>>> loads from the *stub for the global*, which are always invariant.
>>>> You
>>>> just need to know whether the load is from a global or from its
>>>> stub.
>>>>
>>> Okay. I just don't know how to check that it's a load from a *stub*
>>> for the global. :-)
>>
>> I am not 100% sure, but I think that  
>> X86Subtarget::GVRequiresExtraLoad
>> is the place to start looking.
>
> Right. If it's a load from GV and GVRequiresExtraLoad() returns true
> then it's a load from a stub.
>
> Here is something to consider for further enhancement. There are
> potentially other GV loads which can be side effect free though. As
> the comment says, if the value in the GV isn't redefined (in the
> loop), then it can be moved. Should there be some kind of callback
> function provided by caller of isReallySideEffectFree() that checks
> if a register or a GV operand is considered side effect free? In the
> case of LICM, if a register or GV operand is considered a loop
> invariant, then the instruction is really side effect free. In the
> case of remat, if an operand is "available", then it's side effect
> free, etc. etc.

Alternatively, the caller should pass a vector operands that require  
checking in addition to the MI in question.

Evan

>
> BTW, what do we do about volatile loads? I don't think the property
> is transferred to target instructions. Or perhaps volatile property
> should be on the location (GV) instead of the instruction?
>
> Evan
>
>
>>
>> -Chris
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list