Does a transform exist to breakdown the GEP? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111206/e88dddfe/attachment.html>
You mean, something along the lines of the GEPSplitterPass? // GEPSplitter - Split complex GEPs into simple ones in ./include/llvm/Transforms/Scalar.h On 06/12/11 20:53, Ryan Taylor wrote:> Does a transform exist to breakdown the GEP? > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111207/a526faef/attachment.html>
On Wed, Dec 7, 2011 at 1:50 PM, Ryan Taylor <ryta1203 at gmail.com> wrote:> There is a GEPSplitterPass in the Scalar.h but not in the > LLVM_SRC/lib/Transforms/Scalar folder, there is no GEPSplitterPass.cpp > file. Is it possible to get this from 2.8 and compile it and use it for 2.9? > > > On Wed, Dec 7, 2011 at 12:31 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: > >> Looking at the release notes for 2.9, it appears that GEPSplitterPass has >> been removed from 2.9. Is this the case, can I access it anyways or no? >> >> Due to all the changes between versions of LLVM, it's not timely to >> switch to any other version of LLVM, since the code modifications would be >> too many. Any other ideas? >> >> >> On Wed, Dec 7, 2011 at 12:14 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: >> >>> Yes, exactly along these lines, how do I use this pass? It's not >>> documented in the Transforms section of llvm.org >>> >>> >>> On Wed, Dec 7, 2011 at 6:06 AM, Pedro Ferreira < >>> pedro.ferreira at imgtec.com> wrote: >>> >>>> You mean, something along the lines of the GEPSplitterPass? >>>> >>>> // GEPSplitter - Split complex GEPs into simple ones >>>> >>>> in >>>> >>>> ./include/llvm/Transforms/Scalar.h >>>> >>>> >>>> On 06/12/11 20:53, Ryan Taylor wrote: >>>> >>>> Does a transform exist to breakdown the GEP? >>>> >>>> >>>> _______________________________________________ >>>> LLVM Developers mailing listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>> >>>> >>>> >>> >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111207/91c4b0f9/attachment.html>
No I think I misunderstood you, I actually want the GEP broken down into it's arithmetic instructions, I don't want any GEP instructions in my code at all. Is there a way to do that? On Wed, Dec 7, 2011 at 2:24 PM, Ryan Taylor <ryta1203 at gmail.com> wrote:> > > On Wed, Dec 7, 2011 at 1:50 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: > >> There is a GEPSplitterPass in the Scalar.h but not in the >> LLVM_SRC/lib/Transforms/Scalar folder, there is no GEPSplitterPass.cpp >> file. Is it possible to get this from 2.8 and compile it and use it for 2.9? >> >> >> On Wed, Dec 7, 2011 at 12:31 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: >> >>> Looking at the release notes for 2.9, it appears that GEPSplitterPass >>> has been removed from 2.9. Is this the case, can I access it anyways or no? >>> >>> Due to all the changes between versions of LLVM, it's not timely to >>> switch to any other version of LLVM, since the code modifications would be >>> too many. Any other ideas? >>> >>> >>> On Wed, Dec 7, 2011 at 12:14 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: >>> >>>> Yes, exactly along these lines, how do I use this pass? It's not >>>> documented in the Transforms section of llvm.org >>>> >>>> >>>> On Wed, Dec 7, 2011 at 6:06 AM, Pedro Ferreira < >>>> pedro.ferreira at imgtec.com> wrote: >>>> >>>>> You mean, something along the lines of the GEPSplitterPass? >>>>> >>>>> // GEPSplitter - Split complex GEPs into simple ones >>>>> >>>>> in >>>>> >>>>> ./include/llvm/Transforms/Scalar.h >>>>> >>>>> >>>>> On 06/12/11 20:53, Ryan Taylor wrote: >>>>> >>>>> Does a transform exist to breakdown the GEP? >>>>> >>>>> >>>>> _______________________________________________ >>>>> LLVM Developers mailing listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>>> >>>>> >>>>> >>>> >>> >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111207/035e334c/attachment.html>
Do you think I could use the SelectionDAGBuilder in a pass to accomplish this for me? if there is already code that does this I don't really think I should have to do this again, unless it's not possible to access that code from the stage where I want to use it? On Thu, Dec 8, 2011 at 12:56 AM, Pedro Ferreira <pedro.ferreira at imgtec.com>wrote:> I was unaware of its removal. I am still using 2.8. I grep'd the source > tree for that pass and found it on the header I mentioned; it led me to > believe the pass was still there. > > The transformation itself isn't complicated; doing it manually should be > simple. > > > On 07/12/11 21:50, Ryan Taylor wrote: > > There is a GEPSplitterPass in the Scalar.h but not in the > LLVM_SRC/lib/Transforms/Scalar folder, there is no GEPSplitterPass.cpp > file. Is it possible to get this from 2.8 and compile it and use it for 2.9? > > On Wed, Dec 7, 2011 at 12:31 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: > >> Looking at the release notes for 2.9, it appears that GEPSplitterPass has >> been removed from 2.9. Is this the case, can I access it anyways or no? >> >> Due to all the changes between versions of LLVM, it's not timely to >> switch to any other version of LLVM, since the code modifications would be >> too many. Any other ideas? >> >> >> On Wed, Dec 7, 2011 at 12:14 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: >> >>> Yes, exactly along these lines, how do I use this pass? It's not >>> documented in the Transforms section of llvm.org >>> >>> >>> On Wed, Dec 7, 2011 at 6:06 AM, Pedro Ferreira < >>> pedro.ferreira at imgtec.com> wrote: >>> >>>> You mean, something along the lines of the GEPSplitterPass? >>>> >>>> // GEPSplitter - Split complex GEPs into simple ones >>>> >>>> in >>>> >>>> ./include/llvm/Transforms/Scalar.h >>>> >>>> >>>> On 06/12/11 20:53, Ryan Taylor wrote: >>>> >>>> Does a transform exist to breakdown the GEP? >>>> >>>> >>>> _______________________________________________ >>>> LLVM Developers mailing listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>> >>>> >>>> >>> >> > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111208/76b07d24/attachment.html>
So basically, is it possible to initialize the SelectionDAG and extract the lowering of getelementptr from it within a pass? On Thu, Dec 8, 2011 at 11:00 AM, Ryan Taylor <ryta1203 at gmail.com> wrote:> Do you think I could use the SelectionDAGBuilder in a pass to accomplish > this for me? if there is already code that does this I don't really think I > should have to do this again, unless it's not possible to access that code > from the stage where I want to use it? > > > On Thu, Dec 8, 2011 at 12:56 AM, Pedro Ferreira <pedro.ferreira at imgtec.com > > wrote: > >> I was unaware of its removal. I am still using 2.8. I grep'd the source >> tree for that pass and found it on the header I mentioned; it led me to >> believe the pass was still there. >> >> The transformation itself isn't complicated; doing it manually should be >> simple. >> >> >> On 07/12/11 21:50, Ryan Taylor wrote: >> >> There is a GEPSplitterPass in the Scalar.h but not in the >> LLVM_SRC/lib/Transforms/Scalar folder, there is no GEPSplitterPass.cpp >> file. Is it possible to get this from 2.8 and compile it and use it for 2.9? >> >> On Wed, Dec 7, 2011 at 12:31 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: >> >>> Looking at the release notes for 2.9, it appears that GEPSplitterPass >>> has been removed from 2.9. Is this the case, can I access it anyways or no? >>> >>> Due to all the changes between versions of LLVM, it's not timely to >>> switch to any other version of LLVM, since the code modifications would be >>> too many. Any other ideas? >>> >>> >>> On Wed, Dec 7, 2011 at 12:14 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: >>> >>>> Yes, exactly along these lines, how do I use this pass? It's not >>>> documented in the Transforms section of llvm.org >>>> >>>> >>>> On Wed, Dec 7, 2011 at 6:06 AM, Pedro Ferreira < >>>> pedro.ferreira at imgtec.com> wrote: >>>> >>>>> You mean, something along the lines of the GEPSplitterPass? >>>>> >>>>> // GEPSplitter - Split complex GEPs into simple ones >>>>> >>>>> in >>>>> >>>>> ./include/llvm/Transforms/Scalar.h >>>>> >>>>> >>>>> On 06/12/11 20:53, Ryan Taylor wrote: >>>>> >>>>> Does a transform exist to breakdown the GEP? >>>>> >>>>> >>>>> _______________________________________________ >>>>> LLVM Developers mailing listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>>> >>>>> >>>>> >>>> >>> >> >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111208/83f26d16/attachment.html>
Why would you want to remove all GEP instructions? inttoptr+math+ptrtoint don't have the exact same semantics in LLVM IR. GEP instructions have certain guarantees about what addresses can be computed with them that straight pointer arithmetic doesn't. Reid On Thu, Dec 8, 2011 at 2:00 PM, Ryan Taylor <ryta1203 at gmail.com> wrote:> Do you think I could use the SelectionDAGBuilder in a pass to accomplish > this for me? if there is already code that does this I don't really think I > should have to do this again, unless it's not possible to access that code > from the stage where I want to use it? > > On Thu, Dec 8, 2011 at 12:56 AM, Pedro Ferreira <pedro.ferreira at imgtec.com > > wrote: > >> I was unaware of its removal. I am still using 2.8. I grep'd the source >> tree for that pass and found it on the header I mentioned; it led me to >> believe the pass was still there. >> >> The transformation itself isn't complicated; doing it manually should be >> simple. >> >> >> On 07/12/11 21:50, Ryan Taylor wrote: >> >> There is a GEPSplitterPass in the Scalar.h but not in the >> LLVM_SRC/lib/Transforms/Scalar folder, there is no GEPSplitterPass.cpp >> file. Is it possible to get this from 2.8 and compile it and use it for 2.9? >> >> On Wed, Dec 7, 2011 at 12:31 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: >> >>> Looking at the release notes for 2.9, it appears that GEPSplitterPass >>> has been removed from 2.9. Is this the case, can I access it anyways or no? >>> >>> Due to all the changes between versions of LLVM, it's not timely to >>> switch to any other version of LLVM, since the code modifications would be >>> too many. Any other ideas? >>> >>> >>> On Wed, Dec 7, 2011 at 12:14 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: >>> >>>> Yes, exactly along these lines, how do I use this pass? It's not >>>> documented in the Transforms section of llvm.org >>>> >>>> >>>> On Wed, Dec 7, 2011 at 6:06 AM, Pedro Ferreira < >>>> pedro.ferreira at imgtec.com> wrote: >>>> >>>>> You mean, something along the lines of the GEPSplitterPass? >>>>> >>>>> // GEPSplitter - Split complex GEPs into simple ones >>>>> >>>>> in >>>>> >>>>> ./include/llvm/Transforms/Scalar.h >>>>> >>>>> >>>>> On 06/12/11 20:53, Ryan Taylor wrote: >>>>> >>>>> Does a transform exist to breakdown the GEP? >>>>> >>>>> >>>>> _______________________________________________ >>>>> LLVM Developers mailing listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://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 > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111208/626592cf/attachment.html>
---------- Forwarded message ---------- From: Ryan Taylor <ryta1203 at gmail.com> Date: Thu, Dec 8, 2011 at 11:13 AM Subject: Re: [LLVMdev] GetElementPtr To: Reid Kleckner <reid.kleckner at gmail.com> There is no support for gep, it's my understanding that it's target-independent, so there's no reason to put the lowering in the target lowering portion is there? Eventually the GEP has to be lowered correctly, to the target architecture, but the docs state that it's target-independent, so given that it should be possible to lower it without knowing any specifics about the target, correct? On Thu, Dec 8, 2011 at 11:08 AM, Reid Kleckner <reid.kleckner at gmail.com>wrote:> Why would you want to remove all GEP instructions? inttoptr+math+ptrtoint > don't have the exact same semantics in LLVM IR. GEP instructions have > certain guarantees about what addresses can be computed with them that > straight pointer arithmetic doesn't. > > Reid > > > On Thu, Dec 8, 2011 at 2:00 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: > >> Do you think I could use the SelectionDAGBuilder in a pass to accomplish >> this for me? if there is already code that does this I don't really think I >> should have to do this again, unless it's not possible to access that code >> from the stage where I want to use it? >> >> On Thu, Dec 8, 2011 at 12:56 AM, Pedro Ferreira < >> pedro.ferreira at imgtec.com> wrote: >> >>> I was unaware of its removal. I am still using 2.8. I grep'd the source >>> tree for that pass and found it on the header I mentioned; it led me to >>> believe the pass was still there. >>> >>> The transformation itself isn't complicated; doing it manually should be >>> simple. >>> >>> >>> On 07/12/11 21:50, Ryan Taylor wrote: >>> >>> There is a GEPSplitterPass in the Scalar.h but not in the >>> LLVM_SRC/lib/Transforms/Scalar folder, there is no GEPSplitterPass.cpp >>> file. Is it possible to get this from 2.8 and compile it and use it for 2.9? >>> >>> On Wed, Dec 7, 2011 at 12:31 PM, Ryan Taylor <ryta1203 at gmail.com>wrote: >>> >>>> Looking at the release notes for 2.9, it appears that GEPSplitterPass >>>> has been removed from 2.9. Is this the case, can I access it anyways or no? >>>> >>>> Due to all the changes between versions of LLVM, it's not timely to >>>> switch to any other version of LLVM, since the code modifications would be >>>> too many. Any other ideas? >>>> >>>> >>>> On Wed, Dec 7, 2011 at 12:14 PM, Ryan Taylor <ryta1203 at gmail.com>wrote: >>>> >>>>> Yes, exactly along these lines, how do I use this pass? It's not >>>>> documented in the Transforms section of llvm.org >>>>> >>>>> >>>>> On Wed, Dec 7, 2011 at 6:06 AM, Pedro Ferreira < >>>>> pedro.ferreira at imgtec.com> wrote: >>>>> >>>>>> You mean, something along the lines of the GEPSplitterPass? >>>>>> >>>>>> // GEPSplitter - Split complex GEPs into simple ones >>>>>> >>>>>> in >>>>>> >>>>>> ./include/llvm/Transforms/Scalar.h >>>>>> >>>>>> >>>>>> On 06/12/11 20:53, Ryan Taylor wrote: >>>>>> >>>>>> Does a transform exist to breakdown the GEP? >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> LLVM Developers mailing listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://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 >> >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111208/3973773b/attachment.html>
Or is it in the docs such that when you use the word "independent", you really mean "independent of a particular target" and not actually "target independent"? On Thu, Dec 8, 2011 at 11:18 AM, Ryan Taylor <ryta1203 at gmail.com> wrote:> > > ---------- Forwarded message ---------- > From: Ryan Taylor <ryta1203 at gmail.com> > Date: Thu, Dec 8, 2011 at 11:13 AM > Subject: Re: [LLVMdev] GetElementPtr > To: Reid Kleckner <reid.kleckner at gmail.com> > > > There is no support for gep, it's my understanding that it's > target-independent, so there's no reason to put the lowering in the target > lowering portion is there? > > Eventually the GEP has to be lowered correctly, to the target > architecture, but the docs state that it's target-independent, so given > that it should be possible to lower it without knowing any specifics about > the target, correct? > > > On Thu, Dec 8, 2011 at 11:08 AM, Reid Kleckner <reid.kleckner at gmail.com>wrote: > >> Why would you want to remove all GEP instructions? >> inttoptr+math+ptrtoint don't have the exact same semantics in LLVM IR. >> GEP instructions have certain guarantees about what addresses can be >> computed with them that straight pointer arithmetic doesn't. >> >> Reid >> >> >> On Thu, Dec 8, 2011 at 2:00 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: >> >>> Do you think I could use the SelectionDAGBuilder in a pass to accomplish >>> this for me? if there is already code that does this I don't really think I >>> should have to do this again, unless it's not possible to access that code >>> from the stage where I want to use it? >>> >>> On Thu, Dec 8, 2011 at 12:56 AM, Pedro Ferreira < >>> pedro.ferreira at imgtec.com> wrote: >>> >>>> I was unaware of its removal. I am still using 2.8. I grep'd the >>>> source tree for that pass and found it on the header I mentioned; it led me >>>> to believe the pass was still there. >>>> >>>> The transformation itself isn't complicated; doing it manually should >>>> be simple. >>>> >>>> >>>> On 07/12/11 21:50, Ryan Taylor wrote: >>>> >>>> There is a GEPSplitterPass in the Scalar.h but not in the >>>> LLVM_SRC/lib/Transforms/Scalar folder, there is no GEPSplitterPass.cpp >>>> file. Is it possible to get this from 2.8 and compile it and use it for 2.9? >>>> >>>> On Wed, Dec 7, 2011 at 12:31 PM, Ryan Taylor <ryta1203 at gmail.com>wrote: >>>> >>>>> Looking at the release notes for 2.9, it appears that GEPSplitterPass >>>>> has been removed from 2.9. Is this the case, can I access it anyways or no? >>>>> >>>>> Due to all the changes between versions of LLVM, it's not timely to >>>>> switch to any other version of LLVM, since the code modifications would be >>>>> too many. Any other ideas? >>>>> >>>>> >>>>> On Wed, Dec 7, 2011 at 12:14 PM, Ryan Taylor <ryta1203 at gmail.com>wrote: >>>>> >>>>>> Yes, exactly along these lines, how do I use this pass? It's not >>>>>> documented in the Transforms section of llvm.org >>>>>> >>>>>> >>>>>> On Wed, Dec 7, 2011 at 6:06 AM, Pedro Ferreira < >>>>>> pedro.ferreira at imgtec.com> wrote: >>>>>> >>>>>>> You mean, something along the lines of the GEPSplitterPass? >>>>>>> >>>>>>> // GEPSplitter - Split complex GEPs into simple ones >>>>>>> >>>>>>> in >>>>>>> >>>>>>> ./include/llvm/Transforms/Scalar.h >>>>>>> >>>>>>> >>>>>>> On 06/12/11 20:53, Ryan Taylor wrote: >>>>>>> >>>>>>> Does a transform exist to breakdown the GEP? >>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> LLVM Developers mailing listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://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 >>> >>> >> > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111208/54944ae8/attachment.html>