<div dir="ltr">PNaCl does exactly this: all its targets are le32, including x86-64. Intel also had a patch (which didn't make it into LLVM) which added x32 to LLVM.<div><br></div><div>You may want to look at both of these.</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Apr 3, 2014 at 3:31 PM, Jeroen Dobbelaere <span dir="ltr"><<a href="mailto:jeroen.dobbelaere@gmail.com" target="_blank">jeroen.dobbelaere@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Hi,<br><br></div>I am trying to get llvm working for an architecture that has 64bit registers, but 32bit addresses.<br>
</div>Because of that, I want the pointers to also be 32bit, although they will live in a 64 bit register.<br>
<br></div><div>On the frontend, I do not encounter any issues, but when I provide a<br> ...<br> "p:32:32:32"<br> ...<br></div><div>DataLayout specification to the backend, things get ugly:<br></div><div>- SelectionDag is producing a mix of 64bit and 32bit nodes, and it seems that a number of<br>
necessary legalizations/promotions are missing.<br><br></div><div>After adding support for 'PromoteIntRes_GlobalAddress(...)', I get a failure, because a 'store' node now has a mix of operands:<br></div><div>
- some of the operands were already 'i64' from the beginning,<br></div><div>- others were 'i32' (due to the 32bit pointers) and have been promoted to 'i64'<br><br></div><div>Because of the latter, the 'PromoteIntOp_STORE' is called. This uses 'GetPromotedInteger' to access the operands.<br>
</div><div>But, GetPromotedInteger fails if the operand was not promoted. So it fails on the operands of the 'store' that were already legal (i64).<br><br></div><div>What would be the recommended way to fix this ?<br>
</div><div>(Or did I miss something, and should 32bit pointers on a 64bit architecture be done in a completely different way)<br></div><div><br></div><div>Greetings,</div><br></div>Jeroen Dobbelaere<br><br></div>
<br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a> <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></blockquote></div><br></div>