Re: gdb prints only 128 bits of a YMM register (AVX)

Laurent ML <[email protected]>
Newsgroups gmane.comp.gdb.devel,gmane.comp.gdb.general
Message-ID <CA+H-mRhqoPMskF5h55Oubvr_ZKoOhX1D6VbWUVBOCyA5G8bRsg@mail.gmail.com>
Hi,

I ran this set like below in gdb:

b func2_compare_32bitsPack
commands 1
print $ymm1.v2_int128
print $ymm2.v2_int128
print $ymm3.v2_int128
print $ymm4.v2_int128
print $ymm5.v2_int128
print $ymm6.v2_int128
print $ymm7.v2_int128
print $ymm8.v2_int128
print $ymm9.v2_int128
print $ymm10.v2_int128
print $ymm11.v2_int128
print $ymm12.v2_int128
print $ymm13.v2_int128
print $ymm14.v2_int128
print $ymm15.v2_int128
continue
end

Concerning my problem, I found the reason: it's because of the
compiler optimization. If I compile my program without using any
optimization switch, the AVX register is completely set.

Thanks,
Laurent


On Wed, Jul 29, 2015 at 1:48 PM, Tedeschi, Walfred
<[email protected]> wrote:
> Hello Laurent,
>
> I did not understand how you are trying to see register values from the example bellow.
>
> Have you used print $ymm0 or info register?
>
> Thanks and regards,
> -Fred
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of Laurent ML
> Sent: Monday, July 27, 2015 2:48 PM
> To: [email protected]
> Subject: gdb prints only 128 bits of a YMM register (AVX)
>
> Hello,
>
> I have created a small C program that uses AVX extensions, and I have compiled it with options -03 -mavx.
> Next I used GDB to print the content of YMM registers, but each time I print the content of one of the YMM register, gdb prints only the highest 128 bits of the registers:
>
> Breakpoint 1, 0x0000000000400a70 in func2_compare_32bitsPack ()
> $1 = ">"
> $2 = {0xffffffffffff00000000000000000000, 0x00000000000000000000000000000000}
> $3 = {0x0000000000006e6f73697261706d6f43, 0x00000000000000000000000000000000}
> $4 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}
> $5 = {0x000000000000ff000000000000ffffff, 0x00000000000000000000000000000000}
> $6 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}
> $7 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}
> $8 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}
> $9 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}
> $10 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}
> $11 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}
> $12 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}
> $13 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}
> $14 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}
> $15 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}
> $16 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}
> $17 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}
>
> Is there a way to get the last part of the register ?
>
> I used gdb on EL7 :
> $ gdb -v
> GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-64.el7
>
> Thanks for your help.
> Intel Deutschland GmbH
> Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
> Tel: +49 89 99 8853-0, www.intel.de
> Managing Directors: Christin Eisenschmid, Prof. Dr. Hermann Eul
> Chairperson of the Supervisory Board: Tiffany Doon Silva
> Registered Office: Munich
> Commercial Register: Amtsgericht Muenchen HRB 186928
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.