<div dir="ltr"><div><div><div>Alright, couple of points here:<br><br></div>1. Address space 0 is invalid for global variables.  This is causing a crash in llc where we use llvm_unreachable() on this case.  This is most likely why you're seeing llc run forever.  The fix for this is to use address space 1 for globals, which puts them into PTX global memory.  On our side, we should provide a meaningful error message in this case.<br>
<br></div>2. The stdio.h header you're using has no chance of producing IR that is valid for NVPTX.  In this case, printf gets translated into a call to puts(), which will be undefined if you try to execute the PTX.<br>
<br></div>I'm putting together some documentation on using the back-end; hopefully I'll have something ready soon.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Feb 4, 2013 at 2:04 PM,  <span dir="ltr"><<a href="mailto:nkavv@physics.auth.gr" target="_blank">nkavv@physics.auth.gr</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Can you post the llc command line you're using?  Can you post an LLVM IR<br>
file that causes this behavior?<br>
</blockquote>
<br></div>
yes:<br>
<br>
${LLVM_PATH}/bin/llc -o helloworld.s -march=nvptx helloworld.ll<br>
<br>
where LLVM_PATH my local installation path for LLVM.<br>
<br>
Also attaching helloworld.c:<br>
<br>
#include <stdio.h><br>
<br>
int main(void) {<br>
  printf("Hello World!\n");<br>
  return 0;<br>
}<br>
<br>
<br>
<br>
and helloworld.ll:<br>
<br>
; ModuleID = 'helloworld.c'<br>
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-<u></u>i16:16:16-i32:32:32-i64:64:64-<u></u>f32:32:32-f64:64:64-f80:128:<u></u>128-v64:64:64-v128:128:128-a0:<u></u>0:64-f80:32:32-n8:16:32-S32"<br>
target triple = "i686-w64-mingw32"<br>
<br>
@str = private unnamed_addr constant [13 x i8] c"Hello World!\00"<br>
<br>
define i32 @main() nounwind {<br>
  %puts = tail call i32 @puts(i8* getelementptr inbounds ([13 x i8]* @str, i32 0, i32 0))<br>
  ret i32 0<br>
}<br>
<br>
declare i32 @puts(i8* nocapture) nounwind<br>
<br>
<br>
For instance, the "mips" target produces this:<br>
<br>
        .section .mdebug.abi32<br>
        .previous<br>
        .file   "helloworld.ll"<br>
        .text<br>
        .globl  main<br>
        .align  2<br>
        .type   main,@function<br>
        .set    nomips16                # @main<br>
        .ent    main<br>
main:<br>
        .frame  $sp,24,$ra<br>
        .mask   0x80000000,-4<br>
        .fmask  0x00000000,0<br>
        .set    noreorder<br>
        .set    nomacro<br>
        .set    noat<br>
# BB#0:<br>
        lui     $2, %hi(_gp_disp)<br>
        addiu   $2, $2, %lo(_gp_disp)<br>
        addiu   $sp, $sp, -24<br>
        sw      $ra, 20($sp)            # 4-byte Folded Spill<br>
        addu    $gp, $2, $25<br>
        lw      $1, %got($str)($gp)<br>
        lw      $25, %call16(puts)($gp)<br>
        jalr    $25<br>
        addiu   $4, $1, %lo($str)<br>
        addiu   $2, $zero, 0<br>
        lw      $ra, 20($sp)            # 4-byte Folded Reload<br>
        jr      $ra<br>
        addiu   $sp, $sp, 24<br>
        .set    at<br>
        .set    macro<br>
        .set    reorder<br>
        .end    main<br>
$tmp2:<br>
        .size   main, ($tmp2)-main<br>
<br>
        .type   $str,@object            # @str<br>
        .section        .rodata.str1.4,"aMS",@<u></u>progbits,1<br>
        .align  2<br>
$str:<br>
        .asciz   "Hello World!"<br>
        .size   $str, 13<br>
<br>
<br>
<br>
<br>
<br>
Best regards<br>
Nikolaos Kavvadias<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">

 BTW I've built LLVM with mingw (strange mixture of gcc-3.4.5 and<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
g++-4.6.1). Native compilation, MIPS backend and other things that i've<br>
tested, all work properly.<br>
<br>
</blockquote>
<br>
Perhaps this "strange mixture" is causing some symbol errors somewhere.<br>
Can you post the exact sequence of steps you used to build LLVM, along<br>
with<br>
the llc command-line that fails for you?<br>
<br>
</blockquote>
<br>
My configuration options were:<br>
<br>
--prefix=/my/local/path/or/so --enable-shared --enable-targets=all<br>
--enable-optimized --disable-libffi --disable-debug-runtime<br>
--disable-assertions --disable-expensive-checks<br>
<br>
Following configuration i did the typical make and make install (to a<br>
selected path by --prefix.<br>
<br>
<br>
Best regards<br>
Nikolaos Kavvadias<br>
<br>
<br>
<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
Any help is appreciated.<br>
<br>
Best regards,<br>
Nikolaos Kavvadias<br>
<br>
<br>
<br></div>
______________________________<u></u>****_________________<div class="im"><br>
<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>
</div><a href="http://lists.cs.uiuc.edu/****mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/****<u></u>mailman/listinfo/llvmdev</a><<a href="http://lists.cs.uiuc.edu/**mailman/listinfo/llvmdev" target="_blank">http:<u></u>//lists.cs.uiuc.edu/**mailman/<u></u>listinfo/llvmdev</a>><br>

<http:**//<a href="http://lists.cs.uiuc.edu/mailman/**listinfo/llvmdev" target="_blank">lists.cs.uiuc.edu/<u></u>mailman/**listinfo/llvmdev</a><<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">htt<u></u>p://lists.cs.uiuc.edu/mailman/<u></u>listinfo/llvmdev</a>><br>

><br>
<br>
<br>
</blockquote>
<br><span class="HOEnZb"><font color="#888888">
<br>
--<br>
<br>
Thanks,<br>
<br>
Justin Holewinski<br>
<br>
<br>
</font></span></blockquote><span class="HOEnZb"><font color="#888888">
<br>
<br>
<br>
</font></span></blockquote><span class="HOEnZb"><font color="#888888">
<br>
<br>
--<br>
<br>
Thanks,<br>
<br>
Justin Holewinski<br>
<br>
</font></span></blockquote>
<br>
<br>
</blockquote></div><br><br clear="all"><br>-- <br><br><div>Thanks,</div><div><br></div><div>Justin Holewinski</div>
</div>