[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