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

Evan Cheng evan.cheng at apple.com
Tue Aug 25 23:56:34 PDT 2009


On Aug 22, 2009, at 7:40 PM, Eric Christopher wrote:

>>
>> 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 :)

This will be fixed once we introduce scalar xmm registers (e.g.  
XMM0_F32) which are sub-registers of the 128-bit ones. That will  
eliminate the ambiguity.

Evan

>
> -eric
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list