[LLVMdev] A few inline assembly questions

Chris Lattner
Mon, 19 Mar 2007 00:14:13 -0000

On Sun, 18 Mar 2007, Zack Rusin wrote:
> I'm contemplating adding llvm-gcc as a core platform to Qt, meaning
we'd
> release Qt unless we would make sure it compiles and works with llvm-gcc
but
> I have some problems with making it work cleanly so I just wanted to ask a
> few simple questions.

Very nice!

> The problems refer to llvm and llvm-gcc from respectively cvs/svn which,
I'm
> assuming, means upcoming 2.0 release.

Great, that is very useful.

> 1) we added a little inline assembly to do runtime detection of a few cpu
> features. llvm-g++ crashes on the attached testcase (test.cpp).

Anton filed a bug for this, I'll try to make sure it gets fixed this week.

> 2) i have code utilizing whatever vector insructions i can get my hands on
to
> speed up some very common rendering operations. llvm-gcc doesn't seem
to
> support mmx intrinsics which makes Qt compiled with llvm-gcc quite a bit
> slower when it comes to graphics.

As Anton mentioned, work is actively underway to add MMX intrinsic
support.  Right now we have very basic support for a few simple operations
like add and multiply.  Bill Wendling is the one working on this, I
forwarded your testcase to him so that he can focus on those operations
first.

> test2.cpp shows in essence what we're doing
> in Qt. we basically have a very simple class that defines simple static
> methods like negate/add/byte_mul/interpolate_pixel. now the question is if
> there is any way of getting code like this to utilize vector instructions
> with llvm-gcc. i wouldn't mind having llvm specific path there as long
as it
> works.

Absolutely.  Until now, there hasn't been anything pushing for MMX
intrinsic support (most clients we've worked with so far use SSE2 instead
of MMX).  LLVM definitely needs to support the MMX intrinsics, when Bill
has your testcase working, I'd appreciate it if you could try Qt with MMX
enabled again.  I filed http://llvm.org/PR1260 to track your specific
testcase (PR1222 is the bug for MMX intrinsics in general).  If you want
to see when this is completed, it is easiest to CC yourself on the bug.

If there is anything else we can do, please don't hesitate to email the
list further (or file bugs) :)

-Chris

--