Boris Boesler
2013-Jun-20 13:14 UTC
[LLVMdev] support for addressing units which are not 8 bits
Hi! I want to write a LLVM back-end for a bit addressing target architecture. http://llvm.org/docs/GetElementPtr.html#i-m-writing-a-backend-for-a-target-which-needs-custom-lowering-for-gep-how-do-i-do-this states quite clearly that some additional work must be done for this sort of architecture. Is this still true? Is there a project/branch to make it more flexible? Support for any memory addressing? I had a short look at SelectionDAGBuilder::visitGetElementPtr(const User &I) and either this method handles it properly already or customization with some target attributes should not be difficult. And what means "a lot of code in the backend" in the link above? Which other parts are involved? Thanks, Boris
Eli Friedman
2013-Jun-20 16:51 UTC
[LLVMdev] support for addressing units which are not 8 bits
On Thu, Jun 20, 2013 at 6:14 AM, Boris Boesler <baembel at gmx.de> wrote:> Hi! > > I want to write a LLVM back-end for a bit addressing target architecture. > > http://llvm.org/docs/GetElementPtr.html#i-m-writing-a-backend-for-a-target-which-needs-custom-lowering-for-gep-how-do-i-do-thisstates quite clearly that some additional work must be done for this sort > of architecture. Is this still true? Is there a project/branch to make it > more flexible? Support for any memory addressing? > > I had a short look at SelectionDAGBuilder::visitGetElementPtr(const User > &I) and either this method handles it properly already or customization > with some target attributes should not be difficult. >Yes, you're right.> > And what means "a lot of code in the backend" in the link above? Which > other parts are involved? > > >The tricky part here isn't addressing, it's that is that each address points at 32 bits, so you have to track down every single place LLVM hardcodes "i8" and fix it. CC'ing Philipp Brüschweiler, who had a patch series a while back (see http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120702/146050.html). -Eli -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130620/ae7af187/attachment.html>
Boris Boesler
2013-Jul-23 09:28 UTC
[LLVMdev] support for addressing units which are not 8 bits
Am 20.06.2013 um 18:51 schrieb Eli Friedman:> On Thu, Jun 20, 2013 at 6:14 AM, Boris Boesler <baembel at gmx.de> wrote: > Hi! > > I want to write a LLVM back-end for a bit addressing target architecture....> And what means "a lot of code in the backend" in the link above? Which other parts are involved? > > The tricky part here isn't addressing, it's that is that each address points at 32 bits, so you have to track down every single place LLVM hardcodes "i8" and fix it. > > CC'ing Philipp Brüschweiler, who had a patch series a while back (see http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120702/146050.html).Finally I had some time to give it a try. I can't apply the patches to llvm 3.2 because the files include/llvm/Target/TargetData.h and lib/Target/TargetData.cpp don't exist anymore. Probably they have been split into multiple new files. But applying the patches to the new files by hand should not be to hard. Anyway, are there plans to add this kind of feature to the trunk? Isn't there some demand? Boris
Possibly Parallel Threads
- [LLVMdev] support for addressing units which are not 8 bits
- [LLVMdev] Virtual register def doesn't dominate all uses
- [LLVMdev] Virtual register def doesn't dominate all uses
- LoopStrengthReduction generates false code
- [LLVMdev] Virtual register def doesn't dominate all uses