[LLVMdev] Multi-Instruction Patterns
Chris Lattner
clattner at apple.com
Wed Sep 24 13:42:31 PDT 2008
On Sep 24, 2008, at 11:34 AM, Evan Cheng wrote:
>
> On Sep 24, 2008, at 10:16 AM, Chris Lattner wrote:
>
>> On Sep 24, 2008, at 8:44 AM, Dan Gohman wrote:
>>>> #2 is conceptually correct. The problem is 128 bit XMM0 is the same
>>>> register as 32 bit (or 64 bit) XMM0. So it's not possible to define
>>>> the super-register / sub-register relationship.
>>>
>>> I don't understand the problem with subregs here. Is it just a
>>> naming issue? That can be solved by introducing alternate names,
>>> like XMM0_32 and XMM0_64, for each of the subregs. They could
>>> still be printed as "xmm0" in the assembly output of course.
>>
>> this is what the PPC64 backend does. "X0" (64-bit GPR) and "R0" (32-
>> bit GPR) both print as "r0".
>
> Somewhat different scenario there. On PPC64, these are actually
> distinct registers, right?
No, the 32-bit GPR is a subreg (low 32-bits) of the 64-bit register.
IIRC, storing to the 32-bit GPR clears out the top half.
This seems very analogous to the SSE case. However, in full
disclosure, we never fixed the coalescing performance issue for PPC64.
-Chris
More information about the llvm-dev
mailing list