[LLVMdev] Subsuming a memory node of a TargetGlobalAddress with a TargetConstant node
Sanjiv Gupta
sanjiv.gupta at microchip.com
Fri Jun 5 08:20:15 PDT 2009
Villmow, Micah wrote:
>
> I am trying to removing a load to a TargetGlobalAddress in
> ISelDagToDag that my backend does not support. The TargetGlobalAddress
> is assumed to always be of ConstantInt or ConstantFP type, so this
> transformation is valid. I am correctly able to modify the dag and
> remove all of the uses of the node as specified in the attached before
> and after dot images. The nodes in question is the
> CUSTOM_ADD_i32(0x002EDE80) -> load(0x002EDAC8), but I am not able to
> figure out how to correctly modify the chain and point the
> TokenFactor(0x002EDBD8) node to the
> llvm.opencl.other.get.global.id(0x002ED3E0) node so that I can
> completely remove the load, undef, and targetglobaladdress nodes.
>
> If anyone can give me any hints on how I can do this, it would be
> greatly appreciated. I am already creating a target specific constant
> and then using DAG->ReplaceAllUsesOfValueWith(Op, SDValue(N, 0)) to
> remove the first connect, but I’m not sure how to remove the chain.
>
> Thanks for your time,
>
> Micah
>
>
A load takes a chain as input and produces a chain as output. While
removing the load node you can retrieve the incoming chain to load and
put it where the out chain of load goes to.
In PIC16 backend, we replace "load" with pic16 specific load node called
"PIC16Load". See if PIC16 code can help.
- Sanjiv
> ------------------------------------------------------------------------
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list