[LLVMdev] JIT support for inline asm on Linux

Ashok Nalkund ashoknn at qualcomm.com
Mon May 7 23:16:28 PDT 2012



On 5/7/2012 10:17 PM, Bendersky, Eli wrote:
<snip>
>>> $lli -entry-function="ISimEngine_GetVersion" -use-mcjit libengine.bc
>>> LLVM ERROR: Inline asm not supported by this streamer because we don't
>>> have an asm parser for this target
>>
>> I also tried other variations of the call with the same result:
>>> $lli -entry-function="ISimEngine_GetVersion" -use-mcjit -mattr=+avx
>>> -mcpu=corei7-avx libengine.bc
>>
>> I updated my program looking at lli.cpp and it also gave the same error as
>> above. The info from lli --version is below:
>>
>>> $lli --version
>>> LLVM (http://llvm.org/):
>>>    LLVM version 3.2svn
>>>    Optimized build with assertions.
>>>    Built May  7 2012 (10:54:43).
>>>    Default target: x86_64-unknown-linux-gnu
>>>    Host CPU: corei7-avx
>>
>> Any pointers? I saw another thread "Trouble using the MCJIT: "Target does
>> not support MC emission" error" but that didnt seem to have positive
>> ending.
>>
>
> Sorry, I'm not familiar with these parts (ASM parsing in MC). Perhaps someone else could help here. I wonder, though, did you manage to get some code running without inline ASM?
> Eli

I tried the attached program, compiled with clang and used lli to run it:
clang -cc1 -O0 -g -emit-llvm test.c
lli -use-mcjit test.ll

The lli prints out what looks like binary data. If I remove the inline 
asm from the program, it works fine.

TIA,
Ashok
-------------- next part --------------
//#include <stdio.h>

/*
void f(void)
{
}
*/

int main(void)
{
        int foo = 10, bar = 15;
        __asm__ __volatile__("addl  %%ebx,%%eax"
                             :"=a"(foo)
                             :"a"(foo), "b"(bar)
                             );
        //printf("foo+bar=%d\n", foo);
        return 0;
}



More information about the llvm-dev mailing list