[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