[LLVMdev] Polly test and example

Tobias Grosser grosser at fim.uni-passau.de
Fri Jun 10 08:01:00 PDT 2011


On 06/10/2011 08:38 AM, MORIYAMA Tomohiro wrote:
> hi, James.
> Thanks for your advice.
>
> "James Molloy" wrote.
> (Fri, 10 Jun 2011 08:38:44 +0100)
>> Hi,
>>
>>> out.s: Assembler messages:
>>> out.s:8: Error: bad register name `%rsp'
>>> out.s:9: Error: bad register name `%rsp)'
>>> out.s:12: Error: invalid instruction suffix for `call'
>>> out.s:14: Error: bad register name `%rax'
>>> out.s:18: Error: bad register name `%rcx'
>>> out.s:22: Error: bad register name `%rcx)'
>>> out.s:23: Error: bad register name `%rsp,%rcx,4)'
>>> out.s:24: Error: bad register name `%rdx'
>>> out.s:29: Error: bad register name `%rax'
>>> out.s:36: Error: bad register name `%rsp,%rax,4)'
>>> out.s:39: Error: bad register name `%rsp)'
>>> out.s:42: Error: bad register name `%rsp)'
>>> out.s:44: Error: bad register name `%rsp)'
>>> out.s:45: Error: bad register name `%rsp'
>>> tomohiro at ubuntu:~$
>>
>> llc compiled the test for 64-bit X86, and you're assembling with a 32-bit
>> assembler. Try the -m32 option.
>
> I tried this option with 'llc -march=x86' as follows,
>
> tomohiro at ubuntu:~/llvm/tools/polly/test/CodeGen$ opt -load /home/tomohiro/build/
> lib/LLVMPolly.so \
>    -basicaa -polly-prepare -polly-region-simplify -scev-aa \
>     -polly-codegen \
>     /home/tomohiro/llvm/tools/polly/test/CodeGen/single_loop.ll \
>      | llc -march=x86 -o out.s&&  gcc -m32  out.s&&  ./a.out
> tomohiro at ubuntu:~/build$
>
>
> then it successfully ran.
> So, on compiling llvm with Polly, is the suite of the tests are built as 64bit
> files as the default?

Mh. We built several test cases from C files on an amd64 machine. 
Because of this the amd64 target triple is at the top of the several of 
the .ll files. Have a look at single_loop.ll:

target datalayout = 
"e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-unknown-linux-gnu"

As I believe there should not yet be any target specific stuff in the 
.ll files, you may try to just remove those two lines from the .ll file 
and run the test case again. Without the amd64 target triple it should 
be built automatically for the native architecture.

Cheers
Tobi



More information about the llvm-dev mailing list