[LLVMdev] Can I add GlobalVariable in MachineFunctionPass ?

Anthony Yu swpenim at gmail.com
Mon Aug 5 09:00:25 PDT 2013


Micah,

Thanks for your help. I will study on that code.


Justin,

Sorry for my misleading word. Local memory in OpenCL is the same as share
memory in CUDA. What I mean is share memory, so MachineFrameInfo is not
suitable to me.
And I need codegen data, so FunctionPass is also not suitable.
Anyway, thanks for the suggestion.

Antony



2013/8/5 Justin Holewinski <justin.holewinski at gmail.com>

> If you're running a MachineFunctionPass, then the code has already been
> lowered to machine instructions and modifying the original IR will most
> likely not do what you want.  You should only be using the IR as an
> immutable object for reference.  If you want to change the IR, I would
> suggest using a FunctionPass instead of a MachineFunctionPass.  Unless you
> need codegen data.
>
> At the MachineInstr level, to allocate local memory you can use the
> MachineFrameInfo interface.  This provides methods like CreateStackObject
> to allocate a new stack slot (which will be lowered to local memory in
> PTX).  The return value of these methods is an integer that represents a
> FrameIndex.  You can treat this as a pointer to your allocated object.  You
> will also need to emit the proper MachineInstr-level loads and stores to
> access the object.
>
>
> On Mon, Aug 5, 2013 at 11:00 AM, Anthony Yu <swpenim at gmail.com> wrote:
>
>> Micah,
>>
>> As you expected, I am trying to create local memory but in the NVPTX
>> backend. It's really not convenient that I can't create local memory in
>> runOnMachineFunction.
>> Hmm....
>> Since I should do it at doInitialization stage, I also need to do some
>> tricks in global variable and AsmPrinter to resize it.
>> Did you use the similar way?
>>
>> Antony
>>
>>
>>
>>
>> 2013/8/5 Micah Villmow <micah.villmow at smachines.com>
>>
>>> Antony,
>>>  What are you trying to accomplish in this case? I did something very
>>> similar in the AMDIL backend, but it was not the cleanest solution and you
>>> are correct it has to be do at doInitialization stage and not at
>>> runOnMachineFunction.
>>> Micah
>>>
>>> > -----Original Message-----
>>> > From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu]
>>> > On Behalf Of Antony Yu
>>> > Sent: Monday, August 05, 2013 3:41 AM
>>> > To: llvmdev at cs.uiuc.edu
>>> > Subject: [LLVMdev] Can I add GlobalVariable in MachineFunctionPass ?
>>> >
>>> > Hello,
>>> >
>>> > I want to add a global variable of arrayType in my MachineFunctionPass.
>>> > However, I only get const Module from
>>> > MachineFunction.getMMI().getModule().
>>> > I can't add any global variable to a const Module.
>>> > Another way is to add a global variable in doInitialization in my
>>> > MachineFunctionPass, but I can't determine the size of my arrayType for
>>> > global variable in doInitialization.
>>> >
>>> > Is there any suggestion that can help me achieve this?
>>> >
>>> > Thanks in advance.
>>> > Antony Yu
>>> >
>>> >
>>> >
>>> > --
>>> > View this message in context:
>>> http://llvm.1065342.n5.nabble.com/Can-I-add-
>>> > GlobalVariable-in-MachineFunctionPass-tp60165.html
>>> > Sent from the LLVM - Dev mailing list archive at Nabble.com.
>>> > _______________________________________________
>>> > LLVM Developers mailing list
>>> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>
>
> --
>
> Thanks,
>
> Justin Holewinski
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130806/3d361f34/attachment.html>


More information about the llvm-dev mailing list