Re: PATCH: Extend gdb remote protocol for AVX

H.J. Lu
2008-10-12T22:18:52Z

On Sun, Oct 12, 2008 at 6:37 AM, Mark Kettenis <mark.kettenis@xs4all.nl> wrote:
>> Gcc 4.4 supports AVX. Gcc uses the same register number internally
>> for xmm0 and ymm0. It has no problems with register allocator.
>
> I guess that makes sense. Otherwise the register allocator might
> think it can use xmm0 independently from ymm0.
>
>> > We really should make sure the DWARF register number mapping in the
>> > AMD64 psABI gets updated for these new registers. Given the way the
>> > current mapping us defined for %stN and %mmN, it probably makes sense
>> > to give %ymmN their own numbers.
>> >
>>
>> The AVX x86-64 psABI extension is at
>>
>> http://gcc.gnu.org/ml/gcc/2008-06/msg00408.html
>>
>> The ia32 psABI extension is similar to SSE. The only difference is
>> __m256 requires 32byte alignment, instead of 16btye.
>
> And it doesn't mention the DWARF debug register mapping. That's sad.
>
>> I removed AVX register map:
>>
>> http://sourceware.org/ml/binutils/2008-08/msg00010.html
>>
>> since xmm/ymm registers are all caller-saved and there are
>> no xmm/ymm registers in unwind info.
>
> That's a mistake. Unwind info for signal handlers should mention
> xmm/ymm registers. Although I'm not sure how one would express the
> xsave layout in DWARF.

I removed ymm register map. But I reserved those ranges for future
ymm register use. If it turns out that we really need them, we can
reenable the map. So far I haven't found xmm register map is used
anywhere, including signal handler.

>
>> For debug info, we can tell ymm from xmm with data size.
>
> But what should "info address" display for a variable stored in a %ymm
> register? If we can't distinguish between the two, we'll probably end
> up printing %xmm.
>

We can treat variables in xmm/ymm the same way as variables in al/ax/eax/rax.

Thanks.

--
H.J.