<div dir="ltr">I believe the following does what you would like:<div><br></div><div><div>define i64 @getStackBottom(i64 %addr) {</div><div>  %0 = inttoptr i64 %addr to i64 addrspace(256)*<br></div><div>  %1 = load i64 addrspace(256)* %0, align 1</div>
<div>  ret i64 %1</div><div>} </div></div><div><br></div><div>My build of llvm generates the following code with -O3:</div><div><div>getStackBottom:</div><div>        movq    %gs:(%rdi), %rax</div><div>        retq</div></div>
<div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jan 27, 2014 at 12:04 PM, Kai Nacke <span dir="ltr"><<a href="mailto:kai.nacke@redstar.de" target="_blank">kai.nacke@redstar.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all!<br>
<br>
On x86_64, segment prefix fs: is in address space 257 and gs: in address space 256. (BTW: are there constants for these magic values?) How can I use this in IR? I want to express this assembler code in IR:<br>
<br>
                 mov RAX, 8;<br>
                 mov RAX, GS:[RAX];<br>
                 ret;<br>
<br>
I tried the following:<br>
<br>
define i64 @getStackBottom(i64 %addr) {<br>
entry:<br>
  %ptr = inttoptr i64 %addr to i64*<br>
  %fs_ptr = addrspacecast i64* %ptr to i64 addrspace(256)*<br>
  %bottom = load i64 addrspace(256)* %fs_ptr, align 1<br>
  ret i64 %bottom<br>
}<br>
<br>
but this results in<br>
<br>
LLVM ERROR: Cannot select: 0xcc6c60: i64 = addrspacecast 0xcc6b60[0 -> 256] [ORD=3] [ID=6]<br>
  0xcc6b60: i64,ch = CopyFromReg 0xc95e38, 0xcc6a60 [ORD=1] [ID=5]<br>
    0xcc6a60: i64 = Register %vreg0 [ID=1]<br>
In function: getStackBottom<br>
Stack dump:<br>
0.      Program arguments: llc thr_ll.ll<br>
1.      Running pass 'Function Pass Manager' on module 'thr_ll.ll'.<br>
2.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@getStackBottom'<br>
<br>
Do I miss something here? Or is this simply not yet implemented?<br>
<br>
Regards,<br>
Kai<br>
<br>
______________________________<u></u>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">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/<u></u>mailman/listinfo/llvmdev</a><br>
</blockquote></div><br></div>