[llvm-commits] [llvm] r79377 - in /llvm/trunk/lib/Target/X86: X86ISelLowering.cpp X86ISelLowering.h X86InstrFormats.td X86InstrSSE.td

Eric Christopher echristo at apple.com
Sat Aug 22 19:40:26 PDT 2009


>
> I still don't understand what the problem is here.  Is the problem  
> you're solving a type inference issue?

Nope.

>  If so, you can fix it by doing something like:
>
>
> (set (v4i32 XMM0), ...)
>
> or better yet:
>
> (set XMM0, (v4i32 ... ))
>
> Is this the problem, or is there something else going on?  We'd  
> prefer to have as little custom c++ matching code as possible for  
> obvious reasons :)

Quite, I tried about 10 things before going with this on Evan's  
suggestion.  The other idea I had was a custom register class for  
XMM0, but Evan wanted to keep the number of register classes small.

Basically the problem comes when codegen wants to move the value to/ 
from a register - since XMM0 can be of a number of different register  
types it ends up believing that this is a register of type MVT::Other  
and there's no knowledge in the backend on how to do this.

I am open to other ideas, and thinking it was a problem on my end I'd  
already tried the two above :)

-eric



More information about the llvm-commits mailing list