Re: gdb prints only 128 bits of a YMM register (AVX)
Laurent ML <[email protected]> Fri, 31 Jul 2015 10:53:38 +0200
| 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