public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] x86-64: fix ZMM register state tracking
@ 2018-09-05 13:23 Jan Beulich
  2018-09-07 23:13 ` Simon Marchi
                   ` (4 more replies)
  0 siblings, 5 replies; 24+ messages in thread
From: Jan Beulich @ 2018-09-05 13:23 UTC (permalink / raw)
  To: GDB

The three AVX512 state components are entirely independent - one being
in its "init state" has no implication whatsoever on either of the other
two. Fully separate X86_XSTATE_ZMM_H and X86_XSTATE_ZMM handling, to
prevent upper halves of the upper 16 ZMM registers to display as if they
were zero (when they aren't) after e.g. VZEROALL/VZEROUPPER.

gdb/
2018-09-05  Jan Beulich  <jbeulich@suse.com>

	* i387-tdep.c (i387_supply_xsave): Split handling of
	X86_XSTATE_ZMM_H and X86_XSTATE_ZMM.
	(i387_collect_xsave): Likewise.

--- a/gdb/i387-tdep.c
+++ b/gdb/i387-tdep.c
@@ -923,7 +923,8 @@ i387_supply_xsave (struct regcache *regc
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
   const gdb_byte *regs = (const gdb_byte *) xsave;
-  int i;
+  int i, zmm_endlo_regnum = I387_ZMM0H_REGNUM (tdep)
+			    + std::min (tdep->num_zmm_regs, 16);
   ULONGEST clear_bv;
   static const gdb_byte zero[I386_MAX_REGISTER_SIZE] = { 0 };
   enum
@@ -1002,7 +1003,8 @@ i387_supply_xsave (struct regcache *regc
       return;
 
     case avx512_zmm_h:
-      if ((clear_bv & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
+      if ((clear_bv & (regnum < zmm_endlo_regnum ? X86_XSTATE_ZMM_H
+						 : X86_XSTATE_ZMM)))
 	regcache->raw_supply (regnum, zero);
       else
 	regcache->raw_supply (regnum,
@@ -1080,21 +1082,17 @@ i387_supply_xsave (struct regcache *regc
 	    }
 	}
 
-      /* Handle the upper ZMM registers.  */
-      if ((tdep->xcr0 & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
+      /* Handle the upper halves of the low 8/16 ZMM registers.  */
+      if ((tdep->xcr0 & X86_XSTATE_ZMM_H))
 	{
-	  if ((clear_bv & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
+	  if ((clear_bv & X86_XSTATE_ZMM_H))
 	    {
-	      for (i = I387_ZMM0H_REGNUM (tdep);
-		   i < I387_ZMMENDH_REGNUM (tdep);
-		   i++)
+	      for (i = I387_ZMM0H_REGNUM (tdep); i < zmm_endlo_regnum; i++)
 		regcache->raw_supply (i, zero);
 	    }
 	  else
 	    {
-	      for (i = I387_ZMM0H_REGNUM (tdep);
-		   i < I387_ZMMENDH_REGNUM (tdep);
-		   i++)
+	      for (i = I387_ZMM0H_REGNUM (tdep); i < zmm_endlo_regnum; i++)
 		regcache->raw_supply (i,
 				      XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i));
 	    }
@@ -1119,11 +1117,13 @@ i387_supply_xsave (struct regcache *regc
 	    }
 	}
 
-      /* Handle the YMM_AVX512 registers.  */
+      /* Handle the upper 16 ZMM/YMM/XMM registers (if any).  */
       if ((tdep->xcr0 & X86_XSTATE_ZMM))
 	{
 	  if ((clear_bv & X86_XSTATE_ZMM))
 	    {
+	      for (i = zmm_endlo_regnum; i < I387_ZMMENDH_REGNUM (tdep); i++)
+		regcache->raw_supply (i, zero);
 	      for (i = I387_YMM16H_REGNUM (tdep);
 		   i < I387_YMMH_AVX512_END_REGNUM (tdep);
 		   i++)
@@ -1135,6 +1135,9 @@ i387_supply_xsave (struct regcache *regc
 	    }
 	  else
 	    {
+	      for (i = zmm_endlo_regnum; i < I387_ZMMENDH_REGNUM (tdep); i++)
+		regcache->raw_supply (i,
+				      XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i));
 	      for (i = I387_YMM16H_REGNUM (tdep);
 		   i < I387_YMMH_AVX512_END_REGNUM (tdep);
 		   i++)
@@ -1340,7 +1343,8 @@ i387_collect_xsave (const struct regcach
   gdb_byte *p, *regs = (gdb_byte *) xsave;
   gdb_byte raw[I386_MAX_REGISTER_SIZE];
   ULONGEST initial_xstate_bv, clear_bv, xstate_bv = 0;
-  unsigned int i;
+  unsigned int i, zmm_endlo_regnum = I387_ZMM0H_REGNUM (tdep)
+				     + std::min (tdep->num_zmm_regs, 16);
   enum
     {
       x87_ctrl_or_mxcsr = 0x1,
@@ -1441,9 +1445,8 @@ i387_collect_xsave (const struct regcach
 	     i < I387_MPXEND_REGNUM (tdep); i++)
 	  memset (XSAVE_MPX_ADDR (tdep, regs, i), 0, 8);
 
-      if ((clear_bv & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
-	for (i = I387_ZMM0H_REGNUM (tdep);
-	     i < I387_ZMMENDH_REGNUM (tdep); i++)
+      if ((clear_bv & X86_XSTATE_ZMM_H))
+	for (i = I387_ZMM0H_REGNUM (tdep); i < zmm_endlo_regnum; i++)
 	  memset (XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i), 0, 32);
 
       if ((clear_bv & X86_XSTATE_K))
@@ -1453,6 +1456,8 @@ i387_collect_xsave (const struct regcach
 
       if ((clear_bv & X86_XSTATE_ZMM))
 	{
+	  for (i = zmm_endlo_regnum; i < I387_ZMMENDH_REGNUM (tdep); i++)
+	    memset (XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i), 0, 32);
 	  for (i = I387_YMM16H_REGNUM (tdep);
 	       i < I387_YMMH_AVX512_END_REGNUM (tdep); i++)
 	    memset (XSAVE_YMM_AVX512_ADDR (tdep, regs, i), 0, 16);



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] x86-64: fix ZMM register state tracking
  2018-09-05 13:23 [PATCH] x86-64: fix ZMM register state tracking Jan Beulich
@ 2018-09-07 23:13 ` Simon Marchi
  2018-09-10  6:25   ` Jan Beulich
  2018-09-11 10:34 ` Pedro Alves
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 24+ messages in thread
From: Simon Marchi @ 2018-09-07 23:13 UTC (permalink / raw)
  To: Jan Beulich, GDB; +Cc: Wiederhake, Tim

Hi Jan,

Would it be possible to update or create a test to exercise that?
arch-specific tests are in testsuite/gdb.arch.

I have some comments about the form.  Tim, could you or somebody
else from Intel take a look at the functional side of the changes?

On 2018-09-05 02:22 PM, Jan Beulich wrote:
> The three AVX512 state components are entirely independent - one being
> in its "init state" has no implication whatsoever on either of the other
> two. Fully separate X86_XSTATE_ZMM_H and X86_XSTATE_ZMM handling, to
> prevent upper halves of the upper 16 ZMM registers to display as if they
> were zero (when they aren't) after e.g. VZEROALL/VZEROUPPER.
> 
> gdb/
> 2018-09-05  Jan Beulich  <jbeulich@suse.com>
> 
> 	* i387-tdep.c (i387_supply_xsave): Split handling of
> 	X86_XSTATE_ZMM_H and X86_XSTATE_ZMM.
> 	(i387_collect_xsave): Likewise.
> 
> --- a/gdb/i387-tdep.c
> +++ b/gdb/i387-tdep.c
> @@ -923,7 +923,8 @@ i387_supply_xsave (struct regcache *regc
>    enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
>    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
>    const gdb_byte *regs = (const gdb_byte *) xsave;
> -  int i;
> +  int i, zmm_endlo_regnum = I387_ZMM0H_REGNUM (tdep)
> +			    + std::min (tdep->num_zmm_regs, 16);

The GNU standard requires to parenthesis when breaking lines:

  int i, zmm_endlo_regnum = (I387_ZMM0H_REGNUM (tdep)
			     + std::min (tdep->num_zmm_regs, 16));

Simon

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] x86-64: fix ZMM register state tracking
  2018-09-07 23:13 ` Simon Marchi
@ 2018-09-10  6:25   ` Jan Beulich
  2018-09-10 13:01     ` Simon Marchi
  0 siblings, 1 reply; 24+ messages in thread
From: Jan Beulich @ 2018-09-10  6:25 UTC (permalink / raw)
  To: simon.marchi; +Cc: tim.wiederhake, gdb-patches

>>> Simon Marchi <simon.marchi@ericsson.com> 09/08/18 1:13 AM >>>
>Would it be possible to update or create a test to exercise that?
>arch-specific tests are in testsuite/gdb.arch.

I'm sure it would be possible, but while I was happy to invest the time to
fix the actual bug (because it affects work I'm doing), I'm afraid I don't have
the time to learn how gdb test cases are to be constructed (I'm familiar
only with the binutils / gas side of things).


>On 2018-09-05 02:22 PM, Jan Beulich wrote:
>> --- a/gdb/i387-tdep.c
>> +++ b/gdb/i387-tdep.c
>> @@ -923,7 +923,8 @@ i387_supply_xsave (struct regcache *regc
>>    enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
>>    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
>>    const gdb_byte *regs = (const gdb_byte *) xsave;
>> -  int i;
>> +  int i, zmm_endlo_regnum = I387_ZMM0H_REGNUM (tdep)
>> +			    + std::min (tdep->num_zmm_regs, 16);
>
>The GNU standard requires to parenthesis when breaking lines:
>
>int i, zmm_endlo_regnum = (I387_ZMM0H_REGNUM (tdep)
>+ std::min (tdep->num_zmm_regs, 16));

This is easy enough to fix (perhaps even without the need to send a v2,
but just before/while committing?); I don't think this is a rule being
enforced on the binutils side, so I simply wasn't aware.

Jan



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] x86-64: fix ZMM register state tracking
  2018-09-10  6:25   ` Jan Beulich
@ 2018-09-10 13:01     ` Simon Marchi
  2018-09-18 13:38       ` Jan Beulich
  0 siblings, 1 reply; 24+ messages in thread
From: Simon Marchi @ 2018-09-10 13:01 UTC (permalink / raw)
  To: Jan Beulich; +Cc: simon.marchi, tim.wiederhake, gdb-patches

On 2018-09-10 07:25, Jan Beulich wrote:
>>>> Simon Marchi <simon.marchi@ericsson.com> 09/08/18 1:13 AM >>>
>> Would it be possible to update or create a test to exercise that?
>> arch-specific tests are in testsuite/gdb.arch.
> 
> I'm sure it would be possible, but while I was happy to invest the time 
> to
> fix the actual bug (because it affects work I'm doing), I'm afraid I 
> don't have
> the time to learn how gdb test cases are to be constructed (I'm 
> familiar
> only with the binutils / gas side of things).

I understand.  If you can provide:

  - a minimal source file (C + assembly in this case, I suppose)
  - GDB commands to reproduce the bug
  - actual and expected output

I can take care of turning it in a GDB test case.

>> On 2018-09-05 02:22 PM, Jan Beulich wrote:
>>> --- a/gdb/i387-tdep.c
>>> +++ b/gdb/i387-tdep.c
>>> @@ -923,7 +923,8 @@ i387_supply_xsave (struct regcache *regc
>>>    enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
>>>    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
>>>    const gdb_byte *regs = (const gdb_byte *) xsave;
>>> -  int i;
>>> +  int i, zmm_endlo_regnum = I387_ZMM0H_REGNUM (tdep)
>>> +			    + std::min (tdep->num_zmm_regs, 16);
>> 
>> The GNU standard requires to parenthesis when breaking lines:
>> 
>> int i, zmm_endlo_regnum = (I387_ZMM0H_REGNUM (tdep)
>> + std::min (tdep->num_zmm_regs, 16));
> 
> This is easy enough to fix (perhaps even without the need to send a v2,
> but just before/while committing?); I don't think this is a rule being
> enforced on the binutils side, so I simply wasn't aware.

Yeah, no problem, I can do it.  It's suggested in the GNU coding 
standards, so I think it would apply to binutils too:

   https://www.gnu.org/prep/standards/html_node/Formatting.html

Search for "Adding a set of parentheses".

Simon

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] x86-64: fix ZMM register state tracking
  2018-09-05 13:23 [PATCH] x86-64: fix ZMM register state tracking Jan Beulich
  2018-09-07 23:13 ` Simon Marchi
@ 2018-09-11 10:34 ` Pedro Alves
  2018-09-11 11:34   ` Jan Beulich
  2018-09-24 17:19 ` Metzger, Markus T
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 24+ messages in thread
From: Pedro Alves @ 2018-09-11 10:34 UTC (permalink / raw)
  To: Jan Beulich, GDB

On 09/05/2018 02:22 PM, Jan Beulich wrote:
> The three AVX512 state components are entirely independent - one being
> in its "init state" has no implication whatsoever on either of the other
> two. Fully separate X86_XSTATE_ZMM_H and X86_XSTATE_ZMM handling, to
> prevent upper halves of the upper 16 ZMM registers to display as if they
> were zero (when they aren't) after e.g. VZEROALL/VZEROUPPER.
> 
> gdb/
> 2018-09-05  Jan Beulich  <jbeulich@suse.com>
> 
> 	* i387-tdep.c (i387_supply_xsave): Split handling of
> 	X86_XSTATE_ZMM_H and X86_XSTATE_ZMM.
> 	(i387_collect_xsave): Likewise.

Does gdb/gdbserver/i387-fp.c need similar treatment?

Thanks,
Pedro Alves

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] x86-64: fix ZMM register state tracking
  2018-09-11 10:34 ` Pedro Alves
@ 2018-09-11 11:34   ` Jan Beulich
  0 siblings, 0 replies; 24+ messages in thread
From: Jan Beulich @ 2018-09-11 11:34 UTC (permalink / raw)
  To: Pedro Alves; +Cc: GDB

>>> On 11.09.18 at 12:34, <palves@redhat.com> wrote:
> On 09/05/2018 02:22 PM, Jan Beulich wrote:
>> The three AVX512 state components are entirely independent - one being
>> in its "init state" has no implication whatsoever on either of the other
>> two. Fully separate X86_XSTATE_ZMM_H and X86_XSTATE_ZMM handling, to
>> prevent upper halves of the upper 16 ZMM registers to display as if they
>> were zero (when they aren't) after e.g. VZEROALL/VZEROUPPER.
>> 
>> gdb/
>> 2018-09-05  Jan Beulich  <jbeulich@suse.com>
>> 
>> 	* i387-tdep.c (i387_supply_xsave): Split handling of
>> 	X86_XSTATE_ZMM_H and X86_XSTATE_ZMM.
>> 	(i387_collect_xsave): Likewise.
> 
> Does gdb/gdbserver/i387-fp.c need similar treatment?

Not afaics - there's no place where both flags would be tested at
the same time (other than was the case here before this patch).

Jan


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] x86-64: fix ZMM register state tracking
  2018-09-10 13:01     ` Simon Marchi
@ 2018-09-18 13:38       ` Jan Beulich
  2018-09-25  3:29         ` Simon Marchi
  0 siblings, 1 reply; 24+ messages in thread
From: Jan Beulich @ 2018-09-18 13:38 UTC (permalink / raw)
  To: Simon Marchi; +Cc: simon.marchi, tim.wiederhake, GDB

[-- Attachment #1: Type: text/plain, Size: 1101 bytes --]

>>> On 10.09.18 at 15:01, <simon.marchi@polymtl.ca> wrote:
> On 2018-09-10 07:25, Jan Beulich wrote:
>>>>> Simon Marchi <simon.marchi@ericsson.com> 09/08/18 1:13 AM >>>
>>> Would it be possible to update or create a test to exercise that?
>>> arch-specific tests are in testsuite/gdb.arch.
>> 
>> I'm sure it would be possible, but while I was happy to invest the time 
>> to
>> fix the actual bug (because it affects work I'm doing), I'm afraid I 
>> don't have
>> the time to learn how gdb test cases are to be constructed (I'm 
>> familiar
>> only with the binutils / gas side of things).
> 
> I understand.  If you can provide:
> 
>   - a minimal source file (C + assembly in this case, I suppose)
>   - GDB commands to reproduce the bug
>   - actual and expected output

Attached. vzero.s is the source file used (no C file needed). gdb.log
is a transcript of a session with a broken gdb (the one installed on
the system), while gdb.txt is a transcript for the fixed one that I've
built myself.

> I can take care of turning it in a GDB test case.

Thanks.

Jan



[-- Attachment #2: vzero.s --]
[-- Type: application/octet-stream, Size: 139 bytes --]

	.text
	.global main
main:
	vpternlogd $0xff, %zmm0, %zmm0, %zmm0
	vpternlogd $0xff, %zmm0, %zmm0, %zmm16
	vzeroupper
	xor	%eax, %eax
	ret

[-- Attachment #3: gdb.log --]
[-- Type: application/octet-stream, Size: 1636 bytes --]

[jbeulich@dus-dev-sles15v ~]$ gcc -Wall -W -o vzero{,.s} && gdb ./vzero
GNU gdb (GDB; SUSE Linux Enterprise 15) 8.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://bugs.opensuse.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./vzero...done.
(gdb) break main
Breakpoint 1 at 0x400497
(gdb) r
Starting program: /home/jbeulich/vzero 

Breakpoint 1, 0x0000000000400497 in main ()
(gdb) disp/i $pc
2: x/i $pc
=> 0x400497 <main>:	vpternlogd zmm0,zmm0,zmm0,0xff
(gdb) si
0x000000000040049e in main ()
2: x/i $pc
=> 0x40049e <main+7>:	vpternlogd zmm16,zmm0,zmm0,0xff
(gdb) 
0x00000000004004a5 in main ()
2: x/i $pc
=> 0x4004a5 <main+14>:	vzeroupper 
(gdb) print $zmm0.v16_int32
$1 = {-1 <repeats 16 times>}
(gdb) print $zmm16.v16_int32
$2 = {-1 <repeats 16 times>}
(gdb) si
0x00000000004004a8 in main ()
2: x/i $pc
=> 0x4004a8 <main+17>:	xor    eax,eax
(gdb) print $zmm16.v16_int32
$3 = {-1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0}
(gdb) q
A debugging session is active.

	Inferior 1 [process 56844] will be killed.

Quit anyway? (y or n) y

[-- Attachment #4: gdb.txt --]
[-- Type: text/plain, Size: 1645 bytes --]

[jbeulich@dus-dev-sles15v ~]$ gcc -Wall -W -o vzero{,.s} && gdbx ./vzero
GNU gdb (GDB) 8.1.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./vzero...done.
(gdb) break main
Breakpoint 1 at 0x400497
(gdb) r
Starting program: /home/jbeulich/vzero 

Breakpoint 1, 0x0000000000400497 in main ()
(gdb) disp/i $pc
2: x/i $pc
=> 0x400497 <main>:	vpternlogd zmm0,zmm0,zmm0,0xff
(gdb) si
0x000000000040049e in main ()
2: x/i $pc
=> 0x40049e <main+7>:	vpternlogd zmm16,zmm0,zmm0,0xff
(gdb) 
0x00000000004004a5 in main ()
2: x/i $pc
=> 0x4004a5 <main+14>:	vzeroupper 
(gdb) print $zmm0.v16_int32
$1 = {-1 <repeats 16 times>}
(gdb) print $zmm16.v16_int32
$2 = {-1 <repeats 16 times>}
(gdb) si
0x00000000004004a8 in main ()
2: x/i $pc
=> 0x4004a8 <main+17>:	xor    eax,eax
(gdb) print $zmm16.v16_int32
$3 = {-1 <repeats 16 times>}
(gdb) q
A debugging session is active.

	Inferior 1 [process 56857] will be killed.

Quit anyway? (y or n) y


^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: [PATCH] x86-64: fix ZMM register state tracking
  2018-09-05 13:23 [PATCH] x86-64: fix ZMM register state tracking Jan Beulich
  2018-09-07 23:13 ` Simon Marchi
  2018-09-11 10:34 ` Pedro Alves
@ 2018-09-24 17:19 ` Metzger, Markus T
  2018-09-25  7:47   ` Jan Beulich
  2018-10-10 15:12 ` [PATCH v2] " Jan Beulich
  2018-10-29 10:31 ` Ping: " Jan Beulich
  4 siblings, 1 reply; 24+ messages in thread
From: Metzger, Markus T @ 2018-09-24 17:19 UTC (permalink / raw)
  To: Jan Beulich, GDB; +Cc: Wiederhake, Tim, Simon Marchi

Hello Jan,

> The three AVX512 state components are entirely independent - one being in its "init
> state" has no implication whatsoever on either of the other two. Fully separate
> X86_XSTATE_ZMM_H and X86_XSTATE_ZMM handling, to prevent upper halves of
> the upper 16 ZMM registers to display as if they were zero (when they aren't) after
> e.g. VZEROALL/VZEROUPPER.
> 
> gdb/
> 2018-09-05  Jan Beulich  <jbeulich@suse.com>
> 
> 	* i387-tdep.c (i387_supply_xsave): Split handling of
> 	X86_XSTATE_ZMM_H and X86_XSTATE_ZMM.
> 	(i387_collect_xsave): Likewise.
> 
> --- a/gdb/i387-tdep.c
> +++ b/gdb/i387-tdep.c
> @@ -923,7 +923,8 @@ i387_supply_xsave (struct regcache *regc
>    enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
>    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
>    const gdb_byte *regs = (const gdb_byte *) xsave;
> -  int i;
> +  int i, zmm_endlo_regnum = I387_ZMM0H_REGNUM (tdep)
> +			    + std::min (tdep->num_zmm_regs, 16);

It would be nice to comment on this magic 16 and the min operation.
It's how XSAVE organizes things but it isn't entirely intuitive.


>    ULONGEST clear_bv;
>    static const gdb_byte zero[I386_MAX_REGISTER_SIZE] = { 0 };
>    enum
> @@ -1002,7 +1003,8 @@ i387_supply_xsave (struct regcache *regc
>        return;
> 
>      case avx512_zmm_h:
> -      if ((clear_bv & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
> +      if ((clear_bv & (regnum < zmm_endlo_regnum ? X86_XSTATE_ZMM_H
> +						 : X86_XSTATE_ZMM)))

A comment that XSAVE stores the lower 16 registers in a different place
than the higher 16 registers and also guards them by different XCR0 bits
would be nice.

We hid the different places behind those XSAVE_AVX512_ZMM_H_ADDR
macros but there's nothing similar for the guard bits.  Maybe add macros
for the guard check, as well?


>  	regcache->raw_supply (regnum, zero);
>        else
>  	regcache->raw_supply (regnum,
> @@ -1080,21 +1082,17 @@ i387_supply_xsave (struct regcache *regc
>  	    }
>  	}
> 
> -      /* Handle the upper ZMM registers.  */
> -      if ((tdep->xcr0 & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
> +      /* Handle the upper halves of the low 8/16 ZMM registers.  */
> +      if ((tdep->xcr0 & X86_XSTATE_ZMM_H))
>  	{
> -	  if ((clear_bv & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
> +	  if ((clear_bv & X86_XSTATE_ZMM_H))
>  	    {
> -	      for (i = I387_ZMM0H_REGNUM (tdep);
> -		   i < I387_ZMMENDH_REGNUM (tdep);
> -		   i++)
> +	      for (i = I387_ZMM0H_REGNUM (tdep); i < zmm_endlo_regnum; i++)
>  		regcache->raw_supply (i, zero);
>  	    }
>  	  else
>  	    {
> -	      for (i = I387_ZMM0H_REGNUM (tdep);
> -		   i < I387_ZMMENDH_REGNUM (tdep);
> -		   i++)
> +	      for (i = I387_ZMM0H_REGNUM (tdep); i < zmm_endlo_regnum; i++)
>  		regcache->raw_supply (i,
>  				      XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i));
>  	    }
> @@ -1119,11 +1117,13 @@ i387_supply_xsave (struct regcache *regc
>  	    }
>  	}
> 
> -      /* Handle the YMM_AVX512 registers.  */
> +      /* Handle the upper 16 ZMM/YMM/XMM registers (if any).  */
>        if ((tdep->xcr0 & X86_XSTATE_ZMM))
>  	{
>  	  if ((clear_bv & X86_XSTATE_ZMM))
>  	    {
> +	      for (i = zmm_endlo_regnum; i < I387_ZMMENDH_REGNUM (tdep); i++)
> +		regcache->raw_supply (i, zero);
>  	      for (i = I387_YMM16H_REGNUM (tdep);
>  		   i < I387_YMMH_AVX512_END_REGNUM (tdep);
>  		   i++)
> @@ -1135,6 +1135,9 @@ i387_supply_xsave (struct regcache *regc
>  	    }
>  	  else
>  	    {
> +	      for (i = zmm_endlo_regnum; i < I387_ZMMENDH_REGNUM (tdep); i++)
> +		regcache->raw_supply (i,
> +				      XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i));

This covers the upper halves of zmm16 to zmm31.  Looking at the function it looks
like the lower halves are covered in separate cases avx512_ymmh_avx512 and
avx512_xmmh_avx512.  Maybe reflect this in the comment?  It currently suggests
that it handles the entire upper 16 registers.


>  	      for (i = I387_YMM16H_REGNUM (tdep);
>  		   i < I387_YMMH_AVX512_END_REGNUM (tdep);
>  		   i++)
> @@ -1340,7 +1343,8 @@ i387_collect_xsave (const struct regcach
>    gdb_byte *p, *regs = (gdb_byte *) xsave;
>    gdb_byte raw[I386_MAX_REGISTER_SIZE];
>    ULONGEST initial_xstate_bv, clear_bv, xstate_bv = 0;
> -  unsigned int i;
> +  unsigned int i, zmm_endlo_regnum = I387_ZMM0H_REGNUM (tdep)
> +				     + std::min (tdep->num_zmm_regs, 16);
>    enum
>      {
>        x87_ctrl_or_mxcsr = 0x1,
> @@ -1441,9 +1445,8 @@ i387_collect_xsave (const struct regcach
>  	     i < I387_MPXEND_REGNUM (tdep); i++)
>  	  memset (XSAVE_MPX_ADDR (tdep, regs, i), 0, 8);
> 
> -      if ((clear_bv & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
> -	for (i = I387_ZMM0H_REGNUM (tdep);
> -	     i < I387_ZMMENDH_REGNUM (tdep); i++)
> +      if ((clear_bv & X86_XSTATE_ZMM_H))
> +	for (i = I387_ZMM0H_REGNUM (tdep); i < zmm_endlo_regnum; i++)
>  	  memset (XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i), 0, 32);
> 
>        if ((clear_bv & X86_XSTATE_K))
> @@ -1453,6 +1456,8 @@ i387_collect_xsave (const struct regcach
> 
>        if ((clear_bv & X86_XSTATE_ZMM))
>  	{
> +	  for (i = zmm_endlo_regnum; i < I387_ZMMENDH_REGNUM (tdep); i++)
> +	    memset (XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i), 0, 32);
>  	  for (i = I387_YMM16H_REGNUM (tdep);
>  	       i < I387_YMMH_AVX512_END_REGNUM (tdep); i++)
>  	    memset (XSAVE_YMM_AVX512_ADDR (tdep, regs, i), 0, 16);

Looks OK to me.

Regards,
Markus.

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, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] x86-64: fix ZMM register state tracking
  2018-09-18 13:38       ` Jan Beulich
@ 2018-09-25  3:29         ` Simon Marchi
  2018-09-25 15:04           ` Jan Beulich
  0 siblings, 1 reply; 24+ messages in thread
From: Simon Marchi @ 2018-09-25  3:29 UTC (permalink / raw)
  To: Jan Beulich, Simon Marchi; +Cc: tim.wiederhake, GDB

On 2018-09-18 09:37 AM, Jan Beulich wrote:
>>>> On 10.09.18 at 15:01, <simon.marchi@polymtl.ca> wrote:
>> On 2018-09-10 07:25, Jan Beulich wrote:
>>>>>> Simon Marchi <simon.marchi@ericsson.com> 09/08/18 1:13 AM >>>
>>>> Would it be possible to update or create a test to exercise that?
>>>> arch-specific tests are in testsuite/gdb.arch.
>>>
>>> I'm sure it would be possible, but while I was happy to invest the time 
>>> to
>>> fix the actual bug (because it affects work I'm doing), I'm afraid I 
>>> don't have
>>> the time to learn how gdb test cases are to be constructed (I'm 
>>> familiar
>>> only with the binutils / gas side of things).
>>
>> I understand.  If you can provide:
>>
>>   - a minimal source file (C + assembly in this case, I suppose)
>>   - GDB commands to reproduce the bug
>>   - actual and expected output
> 
> Attached. vzero.s is the source file used (no C file needed). gdb.log
> is a transcript of a session with a broken gdb (the one installed on
> the system), while gdb.txt is a transcript for the fixed one that I've
> built myself.
> 
>> I can take care of turning it in a GDB test case.
> 
> Thanks.
> 
> Jan
> 
> 

Hi Jan,

Thanks for the instructions.  There is already a test covering AVX512
instructions, so I figured I would add it there.  However, I don't
have a processor that supports AVX512, so I'm unable to run the test.

Here's a patch, can you try to confirm that the test fails without the
fix and passes with the fix?  I probably screwed up somewhere, but it
should be pretty close.

You can run the test with

  $ make check TESTS="gdb.arch/i386-avx512.exp"

in the gdb/ build directory.  The gdb/testsuite/gdb.log file is useful
to look at in case something fails.

Feel free to integrate this in your eventual v2 if there is one, and
feel free to add a comment in the test to say what we are testing here,
as I am not too sure how to describe it.

Thanks!

Simon


From a167d21f452f6f3f19eac6623fa872fde1162128 Mon Sep 17 00:00:00 2001
From: Simon Marchi <simon.marchi@ericsson.com>
Date: Mon, 24 Sep 2018 23:21:19 -0400
Subject: [PATCH] AVX512 test

---
 gdb/testsuite/gdb.arch/i386-avx512.c   | 5 +++++
 gdb/testsuite/gdb.arch/i386-avx512.exp | 8 ++++++++
 2 files changed, 13 insertions(+)

diff --git a/gdb/testsuite/gdb.arch/i386-avx512.c b/gdb/testsuite/gdb.arch/i386-avx512.c
index 9349f09d62e..537adb3ab86 100644
--- a/gdb/testsuite/gdb.arch/i386-avx512.c
+++ b/gdb/testsuite/gdb.arch/i386-avx512.c
@@ -249,6 +249,11 @@ main (int argc, char **argv)
 	 move back to array and check values.  */
       move_zmm_data_to_memory ();
       asm ("nop"); /* sixth breakpoint here  */
+
+      asm ("vpternlogd $0xff, %zmm0, %zmm0, %zmm0\n"
+	   "vpternlogd $0xff, %zmm0, %zmm0, %zmm16\n"
+	   "vzeroupper\n");
+      asm ("nop"); /* seventh breakpoint here  */
     }

   return 0;
diff --git a/gdb/testsuite/gdb.arch/i386-avx512.exp b/gdb/testsuite/gdb.arch/i386-avx512.exp
index d806d5f9a94..de2f62c3e1f 100644
--- a/gdb/testsuite/gdb.arch/i386-avx512.exp
+++ b/gdb/testsuite/gdb.arch/i386-avx512.exp
@@ -174,3 +174,11 @@ for { set r 0 } { $r < $nr_regs } { incr r } {
         ".. = \\{f = \\{[expr $r + 30], [expr $r.125 + 30], [expr $r.25 + 20], [expr $r.375 + 20], [expr $r.5 + 10], [expr $r.625 + 10], [expr $r.75 + 10], [expr $r.875 + 10]\\}\\}.*" \
         "check contents of zmm_data\[$r\] after writing XMM regs"
 }
+
+gdb_test "break [gdb_get_line_number "seventh breakpoint here"]" \
+    "Breakpoint .* at .*i386-avx512.c.*" \
+    "set seventh breakpoint in main"
+gdb_continue_to_breakpoint "continue to seventh breakpoint in main"
+for { set r 16 } { $r < $nr_regs } { incr r } {
+    gdb_test "print \$zmm${r}.v16_int32" "{-1 <repeats 16 times>}"
+}
-- 
2.19.0


^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: [PATCH] x86-64: fix ZMM register state tracking
  2018-09-24 17:19 ` Metzger, Markus T
@ 2018-09-25  7:47   ` Jan Beulich
  0 siblings, 0 replies; 24+ messages in thread
From: Jan Beulich @ 2018-09-25  7:47 UTC (permalink / raw)
  To: Markus T Metzger; +Cc: simon.marchi, tim.wiederhake, GDB

>>> On 24.09.18 at 19:19, <markus.t.metzger@intel.com> wrote:
>> --- a/gdb/i387-tdep.c
>> +++ b/gdb/i387-tdep.c
>> @@ -923,7 +923,8 @@ i387_supply_xsave (struct regcache *regc
>>    enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
>>    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
>>    const gdb_byte *regs = (const gdb_byte *) xsave;
>> -  int i;
>> +  int i, zmm_endlo_regnum = I387_ZMM0H_REGNUM (tdep)
>> +			    + std::min (tdep->num_zmm_regs, 16);
> 
> It would be nice to comment on this magic 16 and the min operation.
> It's how XSAVE organizes things but it isn't entirely intuitive.

Okay, I can accept the desire for a (new) comment here, albeit it pretty
much goes along the lines of what I say further down.

>> @@ -1002,7 +1003,8 @@ i387_supply_xsave (struct regcache *regc
>>        return;
>> 
>>      case avx512_zmm_h:
>> -      if ((clear_bv & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
>> +      if ((clear_bv & (regnum < zmm_endlo_regnum ? X86_XSTATE_ZMM_H
>> +						 : X86_XSTATE_ZMM)))
> 
> A comment that XSAVE stores the lower 16 registers in a different place
> than the higher 16 registers and also guards them by different XCR0 bits
> would be nice.

Such a comment would have been appropriate already prior to my patch.
I have to admit that I'm not inclined to invest time in improving
pre-existing (lack of) commentary, the more that how to exactly word
this might be controversial. If that's really a requirement, then I'd
abandon the patch (perhaps for someone else to pick up), maintaining it
locally until the bug has been fixed upstream by whatever means. This
is even more so that the extra time I'll have to put into playing with
Simon's test case is also nothing I really have time for (but I'll try to
find the time nevertheless).

> We hid the different places behind those XSAVE_AVX512_ZMM_H_ADDR
> macros but there's nothing similar for the guard bits.  Maybe add macros
> for the guard check, as well?

Same here - nothing that this patch really changes.

>> @@ -1135,6 +1135,9 @@ i387_supply_xsave (struct regcache *regc
>>  	    }
>>  	  else
>>  	    {
>> +	      for (i = zmm_endlo_regnum; i < I387_ZMMENDH_REGNUM (tdep); i++)
>> +		regcache->raw_supply (i,
>> +				      XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i));
> 
> This covers the upper halves of zmm16 to zmm31.  Looking at the function it looks
> like the lower halves are covered in separate cases avx512_ymmh_avx512 and
> avx512_xmmh_avx512.  Maybe reflect this in the comment?  It currently suggests
> that it handles the entire upper 16 registers.

Same here - the split among code regions has been there before (also
for e.g. the YMM register lower and upper halves).

Irrespective of my mostly negative responses thanks for your
comments, Jan


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] x86-64: fix ZMM register state tracking
  2018-09-25  3:29         ` Simon Marchi
@ 2018-09-25 15:04           ` Jan Beulich
  2018-10-02 19:20             ` Simon Marchi
  0 siblings, 1 reply; 24+ messages in thread
From: Jan Beulich @ 2018-09-25 15:04 UTC (permalink / raw)
  To: simon.marchi, Simon Marchi; +Cc: tim.wiederhake, GDB

>>> On 25.09.18 at 05:28, <simon.marchi@ericsson.com> wrote:
> On 2018-09-18 09:37 AM, Jan Beulich wrote:
> Thanks for the instructions.  There is already a test covering AVX512
> instructions, so I figured I would add it there.  However, I don't
> have a processor that supports AVX512, so I'm unable to run the test.
> 
> Here's a patch, can you try to confirm that the test fails without the
> fix and passes with the fix?  I probably screwed up somewhere, but it
> should be pretty close.

There are two issues here: First of all, unrelated to this patch, the
construct around line 95 in i386-avx512.exp should look like

if [is_amd64_regs_target] {
    set nr_regs 32
} else {
    set nr_regs 8
}

Of course this also affects other tests in here, but without this correction
the loop you add does nothing at all.

And then that very loop and the i386-avx512.c addition are not in sync,
and I'm not sure which way you meant it to be: Either in the C file all 16
upper ZMM registers need to be set identically (not just ZMM16), or
there should be no loop.

Furthermore I think the C code addition and hence the test will need to
be x86-64-specific, as registers ZMM8 and higher are inaccessible in
32-bit mode.

So what I can confirm at this point is that with the fix in place there's
one less new failure from the test than with the fix no in place.

Jan


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] x86-64: fix ZMM register state tracking
  2018-09-25 15:04           ` Jan Beulich
@ 2018-10-02 19:20             ` Simon Marchi
  2018-10-03 14:30               ` Jan Beulich
  0 siblings, 1 reply; 24+ messages in thread
From: Simon Marchi @ 2018-10-02 19:20 UTC (permalink / raw)
  To: Jan Beulich, Simon Marchi; +Cc: tim.wiederhake, GDB, Metzger, Markus T

On 2018-09-25 11:04 AM, Jan Beulich wrote:
>>>> On 25.09.18 at 05:28, <simon.marchi@ericsson.com> wrote:
>> On 2018-09-18 09:37 AM, Jan Beulich wrote:
>> Thanks for the instructions.  There is already a test covering AVX512
>> instructions, so I figured I would add it there.  However, I don't
>> have a processor that supports AVX512, so I'm unable to run the test.
>>
>> Here's a patch, can you try to confirm that the test fails without the
>> fix and passes with the fix?  I probably screwed up somewhere, but it
>> should be pretty close.
> 
> There are two issues here: First of all, unrelated to this patch, the
> construct around line 95 in i386-avx512.exp should look like
> 
> if [is_amd64_regs_target] {
>     set nr_regs 32
> } else {
>     set nr_regs 8
> }
> 
> Of course this also affects other tests in here, but without this correction
> the loop you add does nothing at all.

Thanks, this has now been fixed in master.

> And then that very loop and the i386-avx512.c addition are not in sync,
> and I'm not sure which way you meant it to be: Either in the C file all 16
> upper ZMM registers need to be set identically (not just ZMM16), or
> there should be no loop.

Woops.  Testing only zmm0 and zmm16 will be enough I think.

> Furthermore I think the C code addition and hence the test will need to
> be x86-64-specific, as registers ZMM8 and higher are inaccessible in
> 32-bit mode.

Good point.

Here's the revised version with this fixed.  I am not sure about the output
for zmm0 though.


From cd9f3e298a3a516298d3fea15ba80b3eaa33cc7c Mon Sep 17 00:00:00 2001
From: Simon Marchi <simon.marchi@ericsson.com>
Date: Mon, 24 Sep 2018 23:28:28 -0400
Subject: [PATCH] AVX512 test

---
 gdb/testsuite/gdb.arch/i386-avx512.c   |  7 +++++++
 gdb/testsuite/gdb.arch/i386-avx512.exp | 10 ++++++++++
 2 files changed, 17 insertions(+)

diff --git a/gdb/testsuite/gdb.arch/i386-avx512.c b/gdb/testsuite/gdb.arch/i386-avx512.c
index 9349f09d62e..7d088ed0343 100644
--- a/gdb/testsuite/gdb.arch/i386-avx512.c
+++ b/gdb/testsuite/gdb.arch/i386-avx512.c
@@ -249,6 +249,13 @@ main (int argc, char **argv)
 	 move back to array and check values.  */
       move_zmm_data_to_memory ();
       asm ("nop"); /* sixth breakpoint here  */
+
+      asm ("vpternlogd $0xff, %zmm0, %zmm0, %zmm0");
+#ifdef __x86_64__s
+      asm ("vpternlogd $0xff, %zmm0, %zmm0, %zmm16");
+#endif
+      asm ("vzeroupper");
+      asm ("nop"); /* seventh breakpoint here  */
     }

   return 0;
diff --git a/gdb/testsuite/gdb.arch/i386-avx512.exp b/gdb/testsuite/gdb.arch/i386-avx512.exp
index cd15e05fd03..43fde12f257 100644
--- a/gdb/testsuite/gdb.arch/i386-avx512.exp
+++ b/gdb/testsuite/gdb.arch/i386-avx512.exp
@@ -174,3 +174,13 @@ for { set r 0 } { $r < $nr_regs } { incr r } {
         ".. = \\{f = \\{[expr $r + 30], [expr $r.125 + 30], [expr $r.25 + 20], [expr $r.375 + 20], [expr $r.5 + 10], [expr $r.625 + 10], [expr $r.75 + 10], [expr $r.875 + 10]\\}\\}.*" \
         "check contents of zmm_data\[$r\] after writing XMM regs"
 }
+
+gdb_test "break [gdb_get_line_number "seventh breakpoint here"]" \
+    "Breakpoint .* at .*i386-avx512.c.*" \
+    "set seventh breakpoint in main"
+gdb_continue_to_breakpoint "continue to seventh breakpoint in main"
+gdb_test "print \$zmm0.v16_int32" "= {-1, -1, -1, -1, 0 <repeats 12 times>}"
+
+if { $nr_regs >= 16 } {
+    gdb_test "print \$zmm16.v16_int32" "= {-1 <repeats 16 times>}"
+}
-- 
2.19.0




^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] x86-64: fix ZMM register state tracking
  2018-10-02 19:20             ` Simon Marchi
@ 2018-10-03 14:30               ` Jan Beulich
  2018-10-03 14:41                 ` Simon Marchi
  0 siblings, 1 reply; 24+ messages in thread
From: Jan Beulich @ 2018-10-03 14:30 UTC (permalink / raw)
  To: simon.marchi, simon.marchi; +Cc: markus.t.metzger, tim.wiederhake, gdb-patches

>>> Simon Marchi <simon.marchi@ericsson.com> 10/02/18 9:20 PM >>>
>On 2018-09-25 11:04 AM, Jan Beulich wrote:
>>>>> On 25.09.18 at 05:28, <simon.marchi@ericsson.com> wrote:
>>> On 2018-09-18 09:37 AM, Jan Beulich wrote:
>>> Thanks for the instructions.  There is already a test covering AVX512
>>> instructions, so I figured I would add it there.  However, I don't
>>> have a processor that supports AVX512, so I'm unable to run the test.
>>>
>>> Here's a patch, can you try to confirm that the test fails without the
>>> fix and passes with the fix?  I probably screwed up somewhere, but it
>>> should be pretty close.
>> 
>> There are two issues here: First of all, unrelated to this patch, the
>> construct around line 95 in i386-avx512.exp should look like
>> 
>> if [is_amd64_regs_target] {
>>     set nr_regs 32
>> } else {
>>     set nr_regs 8
>> }
>> 
>> Of course this also affects other tests in here, but without this correction
>> the loop you add does nothing at all.
>
>Thanks, this has now been fixed in master.

Ah, good to know.


>Here's the revised version with this fixed.  I am not sure about the output
>for zmm0 though.

I'll give this a go and adjust if need be, but it'll likely take me a couple of
days to get to it. I take it that ...


>--- a/gdb/testsuite/gdb.arch/i386-avx512.c
>+++ b/gdb/testsuite/gdb.arch/i386-avx512.c
>@@ -249,6 +249,13 @@ main (int argc, char **argv)
>move back to array and check values.  */
>move_zmm_data_to_memory ();
>asm ("nop"); /* sixth breakpoint here  */
>+
>+      asm ("vpternlogd $0xff, %zmm0, %zmm0, %zmm0");
>+#ifdef __x86_64__s

... the trailing s here simply is a typo.

Jan




^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] x86-64: fix ZMM register state tracking
  2018-10-03 14:30               ` Jan Beulich
@ 2018-10-03 14:41                 ` Simon Marchi
  0 siblings, 0 replies; 24+ messages in thread
From: Simon Marchi @ 2018-10-03 14:41 UTC (permalink / raw)
  To: Jan Beulich; +Cc: simon.marchi, markus.t.metzger, tim.wiederhake, gdb-patches

On 2018-10-03 10:30, Jan Beulich wrote:
>> Here's the revised version with this fixed.  I am not sure about the 
>> output
>> for zmm0 though.
> 
> I'll give this a go and adjust if need be, but it'll likely take me a 
> couple of
> days to get to it. I take it that ...

There's no rush, thanks for helping.

>> --- a/gdb/testsuite/gdb.arch/i386-avx512.c
>> +++ b/gdb/testsuite/gdb.arch/i386-avx512.c
>> @@ -249,6 +249,13 @@ main (int argc, char **argv)
>> move back to array and check values.  */
>> move_zmm_data_to_memory ();
>> asm ("nop"); /* sixth breakpoint here  */
>> +
>> +      asm ("vpternlogd $0xff, %zmm0, %zmm0, %zmm0");
>> +#ifdef __x86_64__s
> 
> ... the trailing s here simply is a typo.

Arrrg, indeed.

Simon

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH v2] x86-64: fix ZMM register state tracking
  2018-09-05 13:23 [PATCH] x86-64: fix ZMM register state tracking Jan Beulich
                   ` (2 preceding siblings ...)
  2018-09-24 17:19 ` Metzger, Markus T
@ 2018-10-10 15:12 ` Jan Beulich
  2018-10-29 10:31 ` Ping: " Jan Beulich
  4 siblings, 0 replies; 24+ messages in thread
From: Jan Beulich @ 2018-10-10 15:12 UTC (permalink / raw)
  To: GDB; +Cc: Markus T Metzger, Simon Marchi

The three AVX512 state components are entirely independent - one being
in its "init state" has no implication whatsoever on either of the other
two. Fully separate X86_XSTATE_ZMM_H and X86_XSTATE_ZMM handling, to
prevent upper halves of the upper 16 ZMM registers to display as if they
were zero (when they aren't) after e.g. VZEROALL/VZEROUPPER.

gdb/
2018-10-10  Jan Beulich  <jbeulich@suse.com>

	* i387-tdep.c (i387_supply_xsave): Split handling of
	X86_XSTATE_ZMM_H and X86_XSTATE_ZMM.
	(i387_collect_xsave): Likewise.

gdb/testsuite/
2018-10-10  Simon Marchi <simon.marchi@polymtl.ca>

	* testsuite/gdb.arch/i386-avx512.c,
	testsuite/gdb.arch/i386-avx512.exp: Add 7th test.

---
v2: Attach comments to zmm_endlo_regnum declarations. Add testcase
    provided by Simon.

--- a/gdb/i387-tdep.c
+++ b/gdb/i387-tdep.c
@@ -924,6 +924,12 @@ i387_supply_xsave (struct regcache *regc
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
   const gdb_byte *regs = (const gdb_byte *) xsave;
   int i;
+  /* In 64-bit mode the split between "low" and "high" ZMM registers is at
+     ZMM16.  Outside of 64-bit mode there are no "high" ZMM registers at all.
+     Precalculate the number to be used for the split point, with the all
+     registers in the "low" portion outside of 64-bit mode.  */
+  unsigned int zmm_endlo_regnum = I387_ZMM0H_REGNUM (tdep)
+				  + std::min (tdep->num_zmm_regs, 16);
   ULONGEST clear_bv;
   static const gdb_byte zero[I386_MAX_REGISTER_SIZE] = { 0 };
   enum
@@ -1002,7 +1008,8 @@ i387_supply_xsave (struct regcache *regc
       return;
 
     case avx512_zmm_h:
-      if ((clear_bv & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
+      if ((clear_bv & (regnum < zmm_endlo_regnum ? X86_XSTATE_ZMM_H
+						 : X86_XSTATE_ZMM)))
 	regcache->raw_supply (regnum, zero);
       else
 	regcache->raw_supply (regnum,
@@ -1080,21 +1087,17 @@ i387_supply_xsave (struct regcache *regc
 	    }
 	}
 
-      /* Handle the upper ZMM registers.  */
-      if ((tdep->xcr0 & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
+      /* Handle the upper halves of the low 8/16 ZMM registers.  */
+      if ((tdep->xcr0 & X86_XSTATE_ZMM_H))
 	{
-	  if ((clear_bv & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
+	  if ((clear_bv & X86_XSTATE_ZMM_H))
 	    {
-	      for (i = I387_ZMM0H_REGNUM (tdep);
-		   i < I387_ZMMENDH_REGNUM (tdep);
-		   i++)
+	      for (i = I387_ZMM0H_REGNUM (tdep); i < zmm_endlo_regnum; i++)
 		regcache->raw_supply (i, zero);
 	    }
 	  else
 	    {
-	      for (i = I387_ZMM0H_REGNUM (tdep);
-		   i < I387_ZMMENDH_REGNUM (tdep);
-		   i++)
+	      for (i = I387_ZMM0H_REGNUM (tdep); i < zmm_endlo_regnum; i++)
 		regcache->raw_supply (i,
 				      XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i));
 	    }
@@ -1119,11 +1122,13 @@ i387_supply_xsave (struct regcache *regc
 	    }
 	}
 
-      /* Handle the YMM_AVX512 registers.  */
+      /* Handle the upper 16 ZMM/YMM/XMM registers (if any).  */
       if ((tdep->xcr0 & X86_XSTATE_ZMM))
 	{
 	  if ((clear_bv & X86_XSTATE_ZMM))
 	    {
+	      for (i = zmm_endlo_regnum; i < I387_ZMMENDH_REGNUM (tdep); i++)
+		regcache->raw_supply (i, zero);
 	      for (i = I387_YMM16H_REGNUM (tdep);
 		   i < I387_YMMH_AVX512_END_REGNUM (tdep);
 		   i++)
@@ -1135,6 +1140,9 @@ i387_supply_xsave (struct regcache *regc
 	    }
 	  else
 	    {
+	      for (i = zmm_endlo_regnum; i < I387_ZMMENDH_REGNUM (tdep); i++)
+		regcache->raw_supply (i,
+				      XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i));
 	      for (i = I387_YMM16H_REGNUM (tdep);
 		   i < I387_YMMH_AVX512_END_REGNUM (tdep);
 		   i++)
@@ -1341,6 +1349,9 @@ i387_collect_xsave (const struct regcach
   gdb_byte raw[I386_MAX_REGISTER_SIZE];
   ULONGEST initial_xstate_bv, clear_bv, xstate_bv = 0;
   unsigned int i;
+  /* See the comment in i387_supply_xsave().  */
+  unsigned int zmm_endlo_regnum = I387_ZMM0H_REGNUM (tdep)
+				  + std::min (tdep->num_zmm_regs, 16);
   enum
     {
       x87_ctrl_or_mxcsr = 0x1,
@@ -1441,9 +1452,8 @@ i387_collect_xsave (const struct regcach
 	     i < I387_MPXEND_REGNUM (tdep); i++)
 	  memset (XSAVE_MPX_ADDR (tdep, regs, i), 0, 8);
 
-      if ((clear_bv & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
-	for (i = I387_ZMM0H_REGNUM (tdep);
-	     i < I387_ZMMENDH_REGNUM (tdep); i++)
+      if ((clear_bv & X86_XSTATE_ZMM_H))
+	for (i = I387_ZMM0H_REGNUM (tdep); i < zmm_endlo_regnum; i++)
 	  memset (XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i), 0, 32);
 
       if ((clear_bv & X86_XSTATE_K))
@@ -1453,6 +1463,8 @@ i387_collect_xsave (const struct regcach
 
       if ((clear_bv & X86_XSTATE_ZMM))
 	{
+	  for (i = zmm_endlo_regnum; i < I387_ZMMENDH_REGNUM (tdep); i++)
+	    memset (XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i), 0, 32);
 	  for (i = I387_YMM16H_REGNUM (tdep);
 	       i < I387_YMMH_AVX512_END_REGNUM (tdep); i++)
 	    memset (XSAVE_YMM_AVX512_ADDR (tdep, regs, i), 0, 16);
--- a/gdb/testsuite/gdb.arch/i386-avx512.c
+++ b/gdb/testsuite/gdb.arch/i386-avx512.c
@@ -249,6 +249,13 @@ main (int argc, char **argv)
 	 move back to array and check values.  */
       move_zmm_data_to_memory ();
       asm ("nop"); /* sixth breakpoint here  */
+
+      asm ("vpternlogd $0xff, %zmm0, %zmm0, %zmm0");
+#ifdef __x86_64__
+      asm ("vpternlogd $0xff, %zmm0, %zmm0, %zmm16");
+#endif
+      asm ("vzeroupper");
+      asm ("nop"); /* seventh breakpoint here  */
     }
 
   return 0;
--- a/gdb/testsuite/gdb.arch/i386-avx512.exp
+++ b/gdb/testsuite/gdb.arch/i386-avx512.exp
@@ -174,3 +174,13 @@ for { set r 0 } { $r < $nr_regs } { incr
         ".. = \\{f = \\{[expr $r + 30], [expr $r.125 + 30], [expr $r.25 + 20], [expr $r.375 + 20], [expr $r.5 + 10], [expr $r.625 + 10], [expr $r.75 + 10], [expr $r.875 + 10]\\}\\}.*" \
         "check contents of zmm_data\[$r\] after writing XMM regs"
 }
+
+gdb_test "break [gdb_get_line_number "seventh breakpoint here"]" \
+    "Breakpoint .* at .*i386-avx512.c.*" \
+    "set seventh breakpoint in main"
+gdb_continue_to_breakpoint "continue to seventh breakpoint in main"
+gdb_test "print \$zmm0.v16_int32" "= {-1, -1, -1, -1, 0 <repeats 12 times>}"
+
+if { $nr_regs >= 16 } {
+    gdb_test "print \$zmm16.v16_int32" "= {-1 <repeats 16 times>}"
+}



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Ping: [PATCH v2] x86-64: fix ZMM register state tracking
  2018-09-05 13:23 [PATCH] x86-64: fix ZMM register state tracking Jan Beulich
                   ` (3 preceding siblings ...)
  2018-10-10 15:12 ` [PATCH v2] " Jan Beulich
@ 2018-10-29 10:31 ` Jan Beulich
  2018-10-31 14:00   ` Simon Marchi
  4 siblings, 1 reply; 24+ messages in thread
From: Jan Beulich @ 2018-10-29 10:31 UTC (permalink / raw)
  To: GDB; +Cc: Markus T Metzger, Simon Marchi

>>> On 10.10.18 at 17:12,  wrote:
> The three AVX512 state components are entirely independent - one being
> in its "init state" has no implication whatsoever on either of the other
> two. Fully separate X86_XSTATE_ZMM_H and X86_XSTATE_ZMM handling, to
> prevent upper halves of the upper 16 ZMM registers to display as if they
> were zero (when they aren't) after e.g. VZEROALL/VZEROUPPER.
> 
> gdb/
> 2018-10-10  Jan Beulich  <jbeulich@suse.com>
> 
> 	* i387-tdep.c (i387_supply_xsave): Split handling of
> 	X86_XSTATE_ZMM_H and X86_XSTATE_ZMM.
> 	(i387_collect_xsave): Likewise.
> 
> gdb/testsuite/
> 2018-10-10  Simon Marchi <simon.marchi@polymtl.ca>
> 
> 	* testsuite/gdb.arch/i386-avx512.c,
> 	testsuite/gdb.arch/i386-avx512.exp: Add 7th test.
> 
> ---
> v2: Attach comments to zmm_endlo_regnum declarations. Add testcase
>     provided by Simon.
> 
> --- a/gdb/i387-tdep.c
> +++ b/gdb/i387-tdep.c
> @@ -924,6 +924,12 @@ i387_supply_xsave (struct regcache *regc
>    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
>    const gdb_byte *regs = (const gdb_byte *) xsave;
>    int i;
> +  /* In 64-bit mode the split between "low" and "high" ZMM registers is at
> +     ZMM16.  Outside of 64-bit mode there are no "high" ZMM registers at 
> all.
> +     Precalculate the number to be used for the split point, with the all
> +     registers in the "low" portion outside of 64-bit mode.  */
> +  unsigned int zmm_endlo_regnum = I387_ZMM0H_REGNUM (tdep)
> +				  + std::min (tdep->num_zmm_regs, 16);
>    ULONGEST clear_bv;
>    static const gdb_byte zero[I386_MAX_REGISTER_SIZE] = { 0 };
>    enum
> @@ -1002,7 +1008,8 @@ i387_supply_xsave (struct regcache *regc
>        return;
>  
>      case avx512_zmm_h:
> -      if ((clear_bv & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
> +      if ((clear_bv & (regnum < zmm_endlo_regnum ? X86_XSTATE_ZMM_H
> +						 : X86_XSTATE_ZMM)))
>  	regcache->raw_supply (regnum, zero);
>        else
>  	regcache->raw_supply (regnum,
> @@ -1080,21 +1087,17 @@ i387_supply_xsave (struct regcache *regc
>  	    }
>  	}
>  
> -      /* Handle the upper ZMM registers.  */
> -      if ((tdep->xcr0 & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
> +      /* Handle the upper halves of the low 8/16 ZMM registers.  */
> +      if ((tdep->xcr0 & X86_XSTATE_ZMM_H))
>  	{
> -	  if ((clear_bv & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
> +	  if ((clear_bv & X86_XSTATE_ZMM_H))
>  	    {
> -	      for (i = I387_ZMM0H_REGNUM (tdep);
> -		   i < I387_ZMMENDH_REGNUM (tdep);
> -		   i++)
> +	      for (i = I387_ZMM0H_REGNUM (tdep); i < zmm_endlo_regnum; i++)
>  		regcache->raw_supply (i, zero);
>  	    }
>  	  else
>  	    {
> -	      for (i = I387_ZMM0H_REGNUM (tdep);
> -		   i < I387_ZMMENDH_REGNUM (tdep);
> -		   i++)
> +	      for (i = I387_ZMM0H_REGNUM (tdep); i < zmm_endlo_regnum; i++)
>  		regcache->raw_supply (i,
>  				      XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i));
>  	    }
> @@ -1119,11 +1122,13 @@ i387_supply_xsave (struct regcache *regc
>  	    }
>  	}
>  
> -      /* Handle the YMM_AVX512 registers.  */
> +      /* Handle the upper 16 ZMM/YMM/XMM registers (if any).  */
>        if ((tdep->xcr0 & X86_XSTATE_ZMM))
>  	{
>  	  if ((clear_bv & X86_XSTATE_ZMM))
>  	    {
> +	      for (i = zmm_endlo_regnum; i < I387_ZMMENDH_REGNUM (tdep); i++)
> +		regcache->raw_supply (i, zero);
>  	      for (i = I387_YMM16H_REGNUM (tdep);
>  		   i < I387_YMMH_AVX512_END_REGNUM (tdep);
>  		   i++)
> @@ -1135,6 +1140,9 @@ i387_supply_xsave (struct regcache *regc
>  	    }
>  	  else
>  	    {
> +	      for (i = zmm_endlo_regnum; i < I387_ZMMENDH_REGNUM (tdep); i++)
> +		regcache->raw_supply (i,
> +				      XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i));
>  	      for (i = I387_YMM16H_REGNUM (tdep);
>  		   i < I387_YMMH_AVX512_END_REGNUM (tdep);
>  		   i++)
> @@ -1341,6 +1349,9 @@ i387_collect_xsave (const struct regcach
>    gdb_byte raw[I386_MAX_REGISTER_SIZE];
>    ULONGEST initial_xstate_bv, clear_bv, xstate_bv = 0;
>    unsigned int i;
> +  /* See the comment in i387_supply_xsave().  */
> +  unsigned int zmm_endlo_regnum = I387_ZMM0H_REGNUM (tdep)
> +				  + std::min (tdep->num_zmm_regs, 16);
>    enum
>      {
>        x87_ctrl_or_mxcsr = 0x1,
> @@ -1441,9 +1452,8 @@ i387_collect_xsave (const struct regcach
>  	     i < I387_MPXEND_REGNUM (tdep); i++)
>  	  memset (XSAVE_MPX_ADDR (tdep, regs, i), 0, 8);
>  
> -      if ((clear_bv & (X86_XSTATE_ZMM_H | X86_XSTATE_ZMM)))
> -	for (i = I387_ZMM0H_REGNUM (tdep);
> -	     i < I387_ZMMENDH_REGNUM (tdep); i++)
> +      if ((clear_bv & X86_XSTATE_ZMM_H))
> +	for (i = I387_ZMM0H_REGNUM (tdep); i < zmm_endlo_regnum; i++)
>  	  memset (XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i), 0, 32);
>  
>        if ((clear_bv & X86_XSTATE_K))
> @@ -1453,6 +1463,8 @@ i387_collect_xsave (const struct regcach
>  
>        if ((clear_bv & X86_XSTATE_ZMM))
>  	{
> +	  for (i = zmm_endlo_regnum; i < I387_ZMMENDH_REGNUM (tdep); i++)
> +	    memset (XSAVE_AVX512_ZMM_H_ADDR (tdep, regs, i), 0, 32);
>  	  for (i = I387_YMM16H_REGNUM (tdep);
>  	       i < I387_YMMH_AVX512_END_REGNUM (tdep); i++)
>  	    memset (XSAVE_YMM_AVX512_ADDR (tdep, regs, i), 0, 16);
> --- a/gdb/testsuite/gdb.arch/i386-avx512.c
> +++ b/gdb/testsuite/gdb.arch/i386-avx512.c
> @@ -249,6 +249,13 @@ main (int argc, char **argv)
>  	 move back to array and check values.  */
>        move_zmm_data_to_memory ();
>        asm ("nop"); /* sixth breakpoint here  */
> +
> +      asm ("vpternlogd $0xff, %zmm0, %zmm0, %zmm0");
> +#ifdef __x86_64__
> +      asm ("vpternlogd $0xff, %zmm0, %zmm0, %zmm16");
> +#endif
> +      asm ("vzeroupper");
> +      asm ("nop"); /* seventh breakpoint here  */
>      }
>  
>    return 0;
> --- a/gdb/testsuite/gdb.arch/i386-avx512.exp
> +++ b/gdb/testsuite/gdb.arch/i386-avx512.exp
> @@ -174,3 +174,13 @@ for { set r 0 } { $r < $nr_regs } { incr
>          ".. = \\{f = \\{[expr $r + 30], [expr $r.125 + 30], [expr $r.25 + 
> 20], [expr $r.375 + 20], [expr $r.5 + 10], [expr $r.625 + 10], [expr $r.75 + 
> 10], [expr $r.875 + 10]\\}\\}.*" \
>          "check contents of zmm_data\[$r\] after writing XMM regs"
>  }
> +
> +gdb_test "break [gdb_get_line_number "seventh breakpoint here"]" \
> +    "Breakpoint .* at .*i386-avx512.c.*" \
> +    "set seventh breakpoint in main"
> +gdb_continue_to_breakpoint "continue to seventh breakpoint in main"
> +gdb_test "print \$zmm0.v16_int32" "= {-1, -1, -1, -1, 0 <repeats 12 
> times>}"
> +
> +if { $nr_regs >= 16 } {
> +    gdb_test "print \$zmm16.v16_int32" "= {-1 <repeats 16 times>}"
> +}
> 
> 
> 
> 



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: Ping: [PATCH v2] x86-64: fix ZMM register state tracking
  2018-10-29 10:31 ` Ping: " Jan Beulich
@ 2018-10-31 14:00   ` Simon Marchi
  2018-11-07  9:07     ` Metzger, Markus T
  0 siblings, 1 reply; 24+ messages in thread
From: Simon Marchi @ 2018-10-31 14:00 UTC (permalink / raw)
  To: Jan Beulich; +Cc: GDB, Markus T Metzger

On 2018-10-29 06:31, Jan Beulich wrote:
>>>> On 10.10.18 at 17:12,  wrote:
>> The three AVX512 state components are entirely independent - one being
>> in its "init state" has no implication whatsoever on either of the 
>> other
>> two. Fully separate X86_XSTATE_ZMM_H and X86_XSTATE_ZMM handling, to
>> prevent upper halves of the upper 16 ZMM registers to display as if 
>> they
>> were zero (when they aren't) after e.g. VZEROALL/VZEROUPPER.
>> 
>> gdb/
>> 2018-10-10  Jan Beulich  <jbeulich@suse.com>
>> 
>> 	* i387-tdep.c (i387_supply_xsave): Split handling of
>> 	X86_XSTATE_ZMM_H and X86_XSTATE_ZMM.
>> 	(i387_collect_xsave): Likewise.
>> 
>> gdb/testsuite/
>> 2018-10-10  Simon Marchi <simon.marchi@polymtl.ca>
>> 
>> 	* testsuite/gdb.arch/i386-avx512.c,
>> 	testsuite/gdb.arch/i386-avx512.exp: Add 7th test.
>> 
>> ---
>> v2: Attach comments to zmm_endlo_regnum declarations. Add testcase
>>     provided by Simon.

The testcase obviously LGTM.  I will let Markus approve the other 
changes.

Simon

^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: Ping: [PATCH v2] x86-64: fix ZMM register state tracking
  2018-10-31 14:00   ` Simon Marchi
@ 2018-11-07  9:07     ` Metzger, Markus T
  2018-11-07  9:12       ` Jan Beulich
  0 siblings, 1 reply; 24+ messages in thread
From: Metzger, Markus T @ 2018-11-07  9:07 UTC (permalink / raw)
  To: Simon Marchi, Jan Beulich; +Cc: GDB

> On 2018-10-29 06:31, Jan Beulich wrote:
> >>>> On 10.10.18 at 17:12,  wrote:
> >> The three AVX512 state components are entirely independent - one
> >> being in its "init state" has no implication whatsoever on either of
> >> the other two. Fully separate X86_XSTATE_ZMM_H and X86_XSTATE_ZMM
> >> handling, to prevent upper halves of the upper 16 ZMM registers to
> >> display as if they were zero (when they aren't) after e.g.
> >> VZEROALL/VZEROUPPER.
> >>
> >> gdb/
> >> 2018-10-10  Jan Beulich  <jbeulich@suse.com>
> >>
> >> 	* i387-tdep.c (i387_supply_xsave): Split handling of
> >> 	X86_XSTATE_ZMM_H and X86_XSTATE_ZMM.
> >> 	(i387_collect_xsave): Likewise.
> >>
> >> gdb/testsuite/
> >> 2018-10-10  Simon Marchi <simon.marchi@polymtl.ca>
> >>
> >> 	* testsuite/gdb.arch/i386-avx512.c,
> >> 	testsuite/gdb.arch/i386-avx512.exp: Add 7th test.
> >>
> >> ---
> >> v2: Attach comments to zmm_endlo_regnum declarations. Add testcase
> >>     provided by Simon.
> 
> The testcase obviously LGTM.  I will let Markus approve the other changes.

The code already looked good to me in v1.  Thanks for adding comments.

Markus.
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, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: Ping: [PATCH v2] x86-64: fix ZMM register state tracking
  2018-11-07  9:07     ` Metzger, Markus T
@ 2018-11-07  9:12       ` Jan Beulich
  2018-11-07 13:18         ` Metzger, Markus T
  0 siblings, 1 reply; 24+ messages in thread
From: Jan Beulich @ 2018-11-07  9:12 UTC (permalink / raw)
  To: Markus T Metzger, Simon Marchi; +Cc: GDB

>>> On 07.11.18 at 10:07, <markus.t.metzger@intel.com> wrote:
>>  On 2018-10-29 06:31, Jan Beulich wrote:
>> >>>> On 10.10.18 at 17:12,  wrote:
>> >> The three AVX512 state components are entirely independent - one
>> >> being in its "init state" has no implication whatsoever on either of
>> >> the other two. Fully separate X86_XSTATE_ZMM_H and X86_XSTATE_ZMM
>> >> handling, to prevent upper halves of the upper 16 ZMM registers to
>> >> display as if they were zero (when they aren't) after e.g.
>> >> VZEROALL/VZEROUPPER.
>> >>
>> >> gdb/
>> >> 2018-10-10  Jan Beulich  <jbeulich@suse.com>
>> >>
>> >> 	* i387-tdep.c (i387_supply_xsave): Split handling of
>> >> 	X86_XSTATE_ZMM_H and X86_XSTATE_ZMM.
>> >> 	(i387_collect_xsave): Likewise.
>> >>
>> >> gdb/testsuite/
>> >> 2018-10-10  Simon Marchi <simon.marchi@polymtl.ca>
>> >>
>> >> 	* testsuite/gdb.arch/i386-avx512.c,
>> >> 	testsuite/gdb.arch/i386-avx512.exp: Add 7th test.
>> >>
>> >> ---
>> >> v2: Attach comments to zmm_endlo_regnum declarations. Add testcase
>> >>     provided by Simon.
>> 
>> The testcase obviously LGTM.  I will let Markus approve the other changes.
> 
> The code already looked good to me in v1.  Thanks for adding comments.

So can I translate this into an ack for me to commit the change?
Or else, who would be the one to give the go-ahead?

Jan


^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: Ping: [PATCH v2] x86-64: fix ZMM register state tracking
  2018-11-07  9:12       ` Jan Beulich
@ 2018-11-07 13:18         ` Metzger, Markus T
  2018-11-07 13:25           ` Jan Beulich
  0 siblings, 1 reply; 24+ messages in thread
From: Metzger, Markus T @ 2018-11-07 13:18 UTC (permalink / raw)
  To: Jan Beulich, Simon Marchi; +Cc: GDB, Pedro Alves (palves@redhat.com)

> >>> On 07.11.18 at 10:07, <markus.t.metzger@intel.com> wrote:
> >>  On 2018-10-29 06:31, Jan Beulich wrote:
> >> >>>> On 10.10.18 at 17:12,  wrote:
> >> >> The three AVX512 state components are entirely independent - one
> >> >> being in its "init state" has no implication whatsoever on either
> >> >> of the other two. Fully separate X86_XSTATE_ZMM_H and
> >> >> X86_XSTATE_ZMM handling, to prevent upper halves of the upper 16
> >> >> ZMM registers to display as if they were zero (when they aren't) after e.g.
> >> >> VZEROALL/VZEROUPPER.
> >> >>
> >> >> gdb/
> >> >> 2018-10-10  Jan Beulich  <jbeulich@suse.com>
> >> >>
> >> >> 	* i387-tdep.c (i387_supply_xsave): Split handling of
> >> >> 	X86_XSTATE_ZMM_H and X86_XSTATE_ZMM.
> >> >> 	(i387_collect_xsave): Likewise.
> >> >>
> >> >> gdb/testsuite/
> >> >> 2018-10-10  Simon Marchi <simon.marchi@polymtl.ca>
> >> >>
> >> >> 	* testsuite/gdb.arch/i386-avx512.c,
> >> >> 	testsuite/gdb.arch/i386-avx512.exp: Add 7th test.
> >> >>
> >> >> ---
> >> >> v2: Attach comments to zmm_endlo_regnum declarations. Add testcase
> >> >>     provided by Simon.
> >>
> >> The testcase obviously LGTM.  I will let Markus approve the other changes.
> >
> > The code already looked good to me in v1.  Thanks for adding comments.
> 
> So can I translate this into an ack for me to commit the change?
> Or else, who would be the one to give the go-ahead?

Simon can approve your patch.

IIRC Pedro had a question regarding gdbserver.  From a first look, it seems to get the
feature bits right but does not distinguish 32-bit and 64-bit mode regarding the number
of available registers.

Did you run the new test you added also in remote configuration?

Markus.

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, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: Ping: [PATCH v2] x86-64: fix ZMM register state tracking
  2018-11-07 13:18         ` Metzger, Markus T
@ 2018-11-07 13:25           ` Jan Beulich
  2018-11-07 14:18             ` Simon Marchi
  0 siblings, 1 reply; 24+ messages in thread
From: Jan Beulich @ 2018-11-07 13:25 UTC (permalink / raw)
  To: Markus T Metzger; +Cc: Simon Marchi, Pedro Alves, GDB

>>> On 07.11.18 at 14:18, <markus.t.metzger@intel.com> wrote:
>> >>> On 07.11.18 at 10:07, <markus.t.metzger@intel.com> wrote:
>> >>  On 2018-10-29 06:31, Jan Beulich wrote:
>> >> >>>> On 10.10.18 at 17:12,  wrote:
>> >> >> The three AVX512 state components are entirely independent - one
>> >> >> being in its "init state" has no implication whatsoever on either
>> >> >> of the other two. Fully separate X86_XSTATE_ZMM_H and
>> >> >> X86_XSTATE_ZMM handling, to prevent upper halves of the upper 16
>> >> >> ZMM registers to display as if they were zero (when they aren't) after 
> e.g.
>> >> >> VZEROALL/VZEROUPPER.
>> >> >>
>> >> >> gdb/
>> >> >> 2018-10-10  Jan Beulich  <jbeulich@suse.com>
>> >> >>
>> >> >> 	* i387-tdep.c (i387_supply_xsave): Split handling of
>> >> >> 	X86_XSTATE_ZMM_H and X86_XSTATE_ZMM.
>> >> >> 	(i387_collect_xsave): Likewise.
>> >> >>
>> >> >> gdb/testsuite/
>> >> >> 2018-10-10  Simon Marchi <simon.marchi@polymtl.ca>
>> >> >>
>> >> >> 	* testsuite/gdb.arch/i386-avx512.c,
>> >> >> 	testsuite/gdb.arch/i386-avx512.exp: Add 7th test.
>> >> >>
>> >> >> ---
>> >> >> v2: Attach comments to zmm_endlo_regnum declarations. Add testcase
>> >> >>     provided by Simon.
>> >>
>> >> The testcase obviously LGTM.  I will let Markus approve the other changes.
>> >
>> > The code already looked good to me in v1.  Thanks for adding comments.
>> 
>> So can I translate this into an ack for me to commit the change?
>> Or else, who would be the one to give the go-ahead?
> 
> Simon can approve your patch.
> 
> IIRC Pedro had a question regarding gdbserver.  From a first look, it seems to get the
> feature bits right but does not distinguish 32-bit and 64-bit mode regarding the number
> of available registers.

If there was a problem there, it was my understanding that this can
(and should) be fixed in a separate patch, by someone able to test
this.

> Did you run the new test you added also in remote configuration?

No, and I also have no idea how I would go about doing so.

Jan


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: Ping: [PATCH v2] x86-64: fix ZMM register state tracking
  2018-11-07 13:25           ` Jan Beulich
@ 2018-11-07 14:18             ` Simon Marchi
  2018-11-08 11:16               ` Jan Beulich
  0 siblings, 1 reply; 24+ messages in thread
From: Simon Marchi @ 2018-11-07 14:18 UTC (permalink / raw)
  To: Jan Beulich, Markus T Metzger; +Cc: Simon Marchi, Pedro Alves, GDB

On 2018-11-07 8:25 a.m., Jan Beulich wrote:
>>> So can I translate this into an ack for me to commit the change?
>>> Or else, who would be the one to give the go-ahead?
>>
>> Simon can approve your patch.

If Markus is happy with the comments, it's all fine with me, please push (I see
you are listed in MAINTAINERS, so I assume you have push access).

>>
>> IIRC Pedro had a question regarding gdbserver.  From a first look, it seems to get the
>> feature bits right but does not distinguish 32-bit and 64-bit mode regarding the number
>> of available registers.
> 
> If there was a problem there, it was my understanding that this can
> (and should) be fixed in a separate patch, by someone able to test
> this.

Well, you are able to test it (see commands below) :).  But indeed, I think we
should push this patch, which already improves GDB.  It would be nice to at least
get an idea of the status of the test when ran with gdbserver.  Since access to
this hardware is quite limited, it would be appreciated if you could give it a
quick shot and report the results.

>> Did you run the new test you added also in remote configuration?
> 
> No, and I also have no idea how I would go about doing so.

Run:

$ make check TESTS="gdb.arch/i386-avx512.exp" RUNTESTFLAGS="--target_board=native-gdbserver"
$ make check TESTS="gdb.arch/i386-avx512.exp" RUNTESTFLAGS="--target_board=native-extended-gdbserver"

in the gdb/ build directory.

Thanks,

Simon

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: Ping: [PATCH v2] x86-64: fix ZMM register state tracking
  2018-11-07 14:18             ` Simon Marchi
@ 2018-11-08 11:16               ` Jan Beulich
  2018-11-08 16:24                 ` Simon Marchi
  0 siblings, 1 reply; 24+ messages in thread
From: Jan Beulich @ 2018-11-08 11:16 UTC (permalink / raw)
  To: simon.marchi; +Cc: Markus T Metzger, Simon Marchi, Pedro Alves, GDB

[-- Attachment #1: Type: text/plain, Size: 1733 bytes --]

>>> On 07.11.18 at 15:18, <simon.marchi@ericsson.com> wrote:
> On 2018-11-07 8:25 a.m., Jan Beulich wrote:
>>>> So can I translate this into an ack for me to commit the change?
>>>> Or else, who would be the one to give the go-ahead?
>>>
>>> Simon can approve your patch.
> 
> If Markus is happy with the comments, it's all fine with me, please push (I see
> you are listed in MAINTAINERS, so I assume you have push access).

Done.

>>> IIRC Pedro had a question regarding gdbserver.  From a first look, it seems to get the
>>> feature bits right but does not distinguish 32-bit and 64-bit mode regarding the number
>>> of available registers.
>> 
>> If there was a problem there, it was my understanding that this can
>> (and should) be fixed in a separate patch, by someone able to test
>> this.
> 
> Well, you are able to test it (see commands below) :).  But indeed, I think we
> should push this patch, which already improves GDB.  It would be nice to at least
> get an idea of the status of the test when ran with gdbserver.  Since access to
> this hardware is quite limited, it would be appreciated if you could give it a
> quick shot and report the results.
> 
>>> Did you run the new test you added also in remote configuration?
>> 
>> No, and I also have no idea how I would go about doing so.
> 
> Run:
> 
> $ make check TESTS="gdb.arch/i386-avx512.exp" RUNTESTFLAGS="--target_board=native-gdbserver"

I'm afraid there's more broken here than just this one test.
Log file attached. I hope you can make sense of it.

> $ make check TESTS="gdb.arch/i386-avx512.exp" RUNTESTFLAGS="--target_board=native-extended-gdbserver"

This produces effectively the same (bad) results.

Jan



[-- Attachment #2: gdb.log.native-gdbserver --]
[-- Type: application/octet-stream, Size: 134327 bytes --]

Test run by jbeulich on Thu Nov  8 12:06:36 2018
Native configuration is x86_64-pc-linux-gnu

		=== gdb tests ===

Schedule of variations:
    native-gdbserver

Running target native-gdbserver
Using /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/boards/../boards/native-gdbserver.exp as board description file for target.
Using /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/boards/../boards/gdbserver-base.exp as board description file for target.
Using /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/boards/../boards/local-board.exp as board description file for target.
Using /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/config/gdbserver.exp as tool-and-target-specific interface file.
Running /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.exp ...
get_compiler_info: gcc-7-3-1
Executing on host: gcc   -fdiagnostics-color=never -w -mavx512f -I/home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/../nat -c -g  -o /build/gdb/master-git/2018-10-10/gdb/testsuite/outputs/gdb.arch/i386-avx512/i386-avx5120.o /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c    (timeout = 300)
spawn -ignore SIGHUP gcc -fdiagnostics-color=never -w -mavx512f -I/home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/../nat -c -g -o /build/gdb/master-git/2018-10-10/gdb/testsuite/outputs/gdb.arch/i386-avx512/i386-avx5120.o /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c
Executing on host: gcc  /build/gdb/master-git/2018-10-10/gdb/testsuite/outputs/gdb.arch/i386-avx512/i386-avx5120.o  -fdiagnostics-color=never -w -mavx512f -I/home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/../nat -g  -lm   -o /build/gdb/master-git/2018-10-10/gdb/testsuite/outputs/gdb.arch/i386-avx512/i386-avx512    (timeout = 300)
spawn -ignore SIGHUP gcc /build/gdb/master-git/2018-10-10/gdb/testsuite/outputs/gdb.arch/i386-avx512/i386-avx5120.o -fdiagnostics-color=never -w -mavx512f -I/home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/../nat -g -lm -o /build/gdb/master-git/2018-10-10/gdb/testsuite/outputs/gdb.arch/i386-avx512/i386-avx512
spawn /build/gdb/master-git/2018-10-10/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /build/gdb/master-git/2018-10-10/gdb/testsuite/../data-directory -ex set auto-connect-native-target off
GNU gdb (GDB) 8.2.50.20181010-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) set height 0
(gdb) set width 0
(gdb) dir
Reinitialize source path to empty? (y or n) y
Source directories searched: $cdir:$cwd
(gdb) dir /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch
Source directories searched: /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch:$cdir:$cwd
(gdb) kill
The program is not being run.
(gdb) file /build/gdb/master-git/2018-10-10/gdb/testsuite/outputs/gdb.arch/i386-avx512/i386-avx512
Reading symbols from /build/gdb/master-git/2018-10-10/gdb/testsuite/outputs/gdb.arch/i386-avx512/i386-avx512...
(gdb) delete breakpoints
(gdb) info breakpoints
No breakpoints or watchpoints.
(gdb) break main
Breakpoint 1 at 0x4007ba: file /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c, line 222.
(gdb) kill
The program is not being run.
(gdb) spawn /build/gdb/master-git/2018-10-10/gdb/testsuite/../gdbserver/gdbserver --once localhost:2346 /build/gdb/master-git/2018-10-10/gdb/testsuite/outputs/gdb.arch/i386-avx512/i386-avx512
Process /build/gdb/master-git/2018-10-10/gdb/testsuite/outputs/gdb.arch/i386-avx512/i386-avx512 created; pid = 3632
Listening on port 2346
target remote localhost:2346
Remote debugging using localhost:2346
warning: Can not parse XML target description; XML support was disabled at compile time
Reading /lib64/ld-linux-x86-64.so.2 from remote target...
warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
Reading /lib64/ld-linux-x86-64.so.2 from remote target...
Reading symbols from target:/lib64/ld-linux-x86-64.so.2...
Reading /lib64/ld-2.26.so-2.26-11.8.x86_64.debug from remote target...
Reading /lib64/.debug/ld-2.26.so-2.26-11.8.x86_64.debug from remote target...
(No debugging symbols found in target:/lib64/ld-linux-x86-64.so.2)
0x00007ffff7dd7ea0 in _start () from target:/lib64/ld-linux-x86-64.so.2
(gdb) continue
Continuing.
Reading /lib64/libm.so.6 from remote target...
Reading /lib64/libc.so.6 from remote target...
Reading /lib64/libm-2.26.so-2.26-11.8.x86_64.debug from remote target...
Reading /lib64/.debug/libm-2.26.so-2.26-11.8.x86_64.debug from remote target...
Reading /lib64/libc-2.26.so-2.26-11.8.x86_64.debug from remote target...
Reading /lib64/.debug/libc-2.26.so-2.26-11.8.x86_64.debug from remote target...

Breakpoint 1, main (argc=1, argv=0x7fffffffc8d8) at /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c:222
222	  if (have_avx512 ())
(gdb) print have_avx512()
$1 = 1
(gdb) PASS: gdb.arch/i386-avx512.exp: probe AVX512 support
break 226
Breakpoint 2 at 0x4007c8: file /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c, line 226.
(gdb) PASS: gdb.arch/i386-avx512.exp: set first breakpoint in main
continue
Continuing.

Breakpoint 2, main (argc=1, argv=0x7fffffffc8d8) at /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c:226
226	      asm ("nop"); /* first breakpoint here  */
(gdb) PASS: gdb.arch/i386-avx512.exp: continue to breakpoint: continue to first breakpoint in main
print/x $k1
$2 = 0x0
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of %k1
print/x $k2
$3 = 0x0
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of %k2
print/x $k3
$4 = 0x0
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of %k3
print/x $k4
$5 = 0x0
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of %k4
print/x $k5
$6 = 0x0
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of %k5
print/x $k6
$7 = 0x0
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of %k6
print/x $k7
$8 = 0x0
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of %k7
set var $k1 = 0x1111
(gdb) PASS: gdb.arch/i386-avx512.exp: set %k1
set var $k2 = 0x2222
(gdb) PASS: gdb.arch/i386-avx512.exp: set %k2
set var $k3 = 0x3333
(gdb) PASS: gdb.arch/i386-avx512.exp: set %k3
set var $k4 = 0x4444
(gdb) PASS: gdb.arch/i386-avx512.exp: set %k4
set var $k5 = 0x5555
(gdb) PASS: gdb.arch/i386-avx512.exp: set %k5
set var $k6 = 0x6666
(gdb) PASS: gdb.arch/i386-avx512.exp: set %k6
set var $k7 = 0x7777
(gdb) PASS: gdb.arch/i386-avx512.exp: set %k7
break 229
Breakpoint 3 at 0x4007ce: file /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c, line 229.
(gdb) PASS: gdb.arch/i386-avx512.exp: set second breakpoint in main
continue
Continuing.

Breakpoint 3, main (argc=1, argv=0x7fffffffc8d8) at /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c:229
229	      asm ("nop"); /* second breakpoint here  */
(gdb) PASS: gdb.arch/i386-avx512.exp: continue to breakpoint: continue to second breakpoint in main
print/x k_data[0]
$9 = 0x1211
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of k_data[0]
print/x k_data[1]
$10 = 0x2221
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of k_data[1]
print/x k_data[2]
$11 = 0x3231
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of k_data[2]
print/x k_data[3]
$12 = 0x4241
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of k_data[3]
print/x k_data[4]
$13 = 0x5251
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of k_data[4]
print/x k_data[5]
$14 = 0x6261
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of k_data[5]
print/x k_data[6]
$15 = 0x7271
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of k_data[6]
break 234
Breakpoint 4 at 0x4007d4: file /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c, line 234.
(gdb) PASS: gdb.arch/i386-avx512.exp: set third breakpoint in main
continue
Continuing.

Breakpoint 4, main (argc=1, argv=0x7fffffffc8d8) at /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c:234
234	      asm ("nop"); /* third breakpoint here  */
(gdb) PASS: gdb.arch/i386-avx512.exp: continue to breakpoint: continue to third breakpoint in main
Executing on host: gcc   -fdiagnostics-color=never -w -c -g  -o /build/gdb/master-git/2018-10-10/gdb/testsuite/temp/3582/is_amd64_regs_target-3582.o /build/gdb/master-git/2018-10-10/gdb/testsuite/temp/3582/is_amd64_regs_target-3582.c    (timeout = 300)
spawn -ignore SIGHUP gcc -fdiagnostics-color=never -w -c -g -o /build/gdb/master-git/2018-10-10/gdb/testsuite/temp/3582/is_amd64_regs_target-3582.o /build/gdb/master-git/2018-10-10/gdb/testsuite/temp/3582/is_amd64_regs_target-3582.c
print $zmm0.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm0
print $zmm0.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm0
print $ymm0.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm0
print $ymm0.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm0
print $xmm0.v2_double
$16 = {0, 0.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm0
print $xmm0.v8_int16
$17 = {0, 0, 0, 0, 0, 0, 0, 16320}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm0
print $zmm1.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm1
print $zmm1.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm1
print $ymm1.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm1
print $ymm1.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm1
print $xmm1.v2_double
$18 = {1, 1.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm1
print $xmm1.v8_int16
$19 = {0, 0, 0, 16368, 0, 0, 0, 16370}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm1
print $zmm2.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm2
print $zmm2.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm2
print $ymm2.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm2
print $ymm2.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm2
print $xmm2.v2_double
$20 = {2, 2.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm2
print $xmm2.v8_int16
$21 = {0, 0, 0, 16384, 0, 0, 0, 16385}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm2
print $zmm3.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm3
print $zmm3.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm3
print $ymm3.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm3
print $ymm3.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm3
print $xmm3.v2_double
$22 = {3, 3.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm3
print $xmm3.v8_int16
$23 = {0, 0, 0, 16392, 0, 0, 0, 16393}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm3
print $zmm4.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm4
print $zmm4.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm4
print $ymm4.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm4
print $ymm4.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm4
print $xmm4.v2_double
$24 = {4, 4.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm4
print $xmm4.v8_int16
$25 = {0, 0, 0, 16400, 0, 0, -32768, 16400}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm4
print $zmm5.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm5
print $zmm5.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm5
print $ymm5.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm5
print $ymm5.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm5
print $xmm5.v2_double
$26 = {5, 5.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm5
print $xmm5.v8_int16
$27 = {0, 0, 0, 16404, 0, 0, -32768, 16404}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm5
print $zmm6.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm6
print $zmm6.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm6
print $ymm6.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm6
print $ymm6.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm6
print $xmm6.v2_double
$28 = {6, 6.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm6
print $xmm6.v8_int16
$29 = {0, 0, 0, 16408, 0, 0, -32768, 16408}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm6
print $zmm7.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm7
print $zmm7.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm7
print $ymm7.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm7
print $ymm7.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm7
print $xmm7.v2_double
$30 = {7, 7.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm7
print $xmm7.v8_int16
$31 = {0, 0, 0, 16412, 0, 0, -32768, 16412}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm7
print $zmm8.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm8
print $zmm8.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm8
print $ymm8.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm8
print $ymm8.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm8
print $xmm8.v2_double
$32 = {8, 8.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm8
print $xmm8.v8_int16
$33 = {0, 0, 0, 16416, 0, 0, 16384, 16416}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm8
print $zmm9.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm9
print $zmm9.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm9
print $ymm9.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm9
print $ymm9.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm9
print $xmm9.v2_double
$34 = {9, 9.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm9
print $xmm9.v8_int16
$35 = {0, 0, 0, 16418, 0, 0, 16384, 16418}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm9
print $zmm10.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm10
print $zmm10.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm10
print $ymm10.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm10
print $ymm10.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm10
print $xmm10.v2_double
$36 = {10, 10.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm10
print $xmm10.v8_int16
$37 = {0, 0, 0, 16420, 0, 0, 16384, 16420}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm10
print $zmm11.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm11
print $zmm11.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm11
print $ymm11.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm11
print $ymm11.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm11
print $xmm11.v2_double
$38 = {11, 11.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm11
print $xmm11.v8_int16
$39 = {0, 0, 0, 16422, 0, 0, 16384, 16422}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm11
print $zmm12.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm12
print $zmm12.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm12
print $ymm12.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm12
print $ymm12.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm12
print $xmm12.v2_double
$40 = {12, 12.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm12
print $xmm12.v8_int16
$41 = {0, 0, 0, 16424, 0, 0, 16384, 16424}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm12
print $zmm13.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm13
print $zmm13.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm13
print $ymm13.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm13
print $ymm13.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm13
print $xmm13.v2_double
$42 = {13, 13.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm13
print $xmm13.v8_int16
$43 = {0, 0, 0, 16426, 0, 0, 16384, 16426}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm13
print $zmm14.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm14
print $zmm14.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm14
print $ymm14.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm14
print $ymm14.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm14
print $xmm14.v2_double
$44 = {14, 14.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm14
print $xmm14.v8_int16
$45 = {0, 0, 0, 16428, 0, 0, 16384, 16428}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm14
print $zmm15.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm15
print $zmm15.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm15
print $ymm15.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm15
print $ymm15.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm15
print $xmm15.v2_double
$46 = {15, 15.125}
(gdb) PASS: gdb.arch/i386-avx512.exp: check float contents of %xmm15
print $xmm15.v8_int16
$47 = {0, 0, 0, 16430, 0, 0, 16384, 16430}
(gdb) PASS: gdb.arch/i386-avx512.exp: check int16 contents of %xmm15
print $zmm16.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm16
print $zmm16.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm16
print $ymm16.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm16
print $ymm16.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm16
print $xmm16.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm16
print $xmm16.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm16
print $zmm17.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm17
print $zmm17.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm17
print $ymm17.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm17
print $ymm17.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm17
print $xmm17.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm17
print $xmm17.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm17
print $zmm18.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm18
print $zmm18.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm18
print $ymm18.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm18
print $ymm18.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm18
print $xmm18.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm18
print $xmm18.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm18
print $zmm19.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm19
print $zmm19.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm19
print $ymm19.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm19
print $ymm19.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm19
print $xmm19.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm19
print $xmm19.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm19
print $zmm20.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm20
print $zmm20.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm20
print $ymm20.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm20
print $ymm20.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm20
print $xmm20.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm20
print $xmm20.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm20
print $zmm21.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm21
print $zmm21.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm21
print $ymm21.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm21
print $ymm21.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm21
print $xmm21.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm21
print $xmm21.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm21
print $zmm22.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm22
print $zmm22.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm22
print $ymm22.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm22
print $ymm22.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm22
print $xmm22.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm22
print $xmm22.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm22
print $zmm23.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm23
print $zmm23.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm23
print $ymm23.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm23
print $ymm23.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm23
print $xmm23.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm23
print $xmm23.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm23
print $zmm24.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm24
print $zmm24.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm24
print $ymm24.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm24
print $ymm24.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm24
print $xmm24.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm24
print $xmm24.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm24
print $zmm25.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm25
print $zmm25.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm25
print $ymm25.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm25
print $ymm25.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm25
print $xmm25.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm25
print $xmm25.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm25
print $zmm26.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm26
print $zmm26.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm26
print $ymm26.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm26
print $ymm26.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm26
print $xmm26.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm26
print $xmm26.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm26
print $zmm27.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm27
print $zmm27.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm27
print $ymm27.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm27
print $ymm27.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm27
print $xmm27.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm27
print $xmm27.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm27
print $zmm28.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm28
print $zmm28.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm28
print $ymm28.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm28
print $ymm28.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm28
print $xmm28.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm28
print $xmm28.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm28
print $zmm29.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm29
print $zmm29.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm29
print $ymm29.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm29
print $ymm29.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm29
print $xmm29.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm29
print $xmm29.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm29
print $zmm30.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm30
print $zmm30.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm30
print $ymm30.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm30
print $ymm30.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm30
print $xmm30.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm30
print $xmm30.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm30
print $zmm31.v8_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check double contents of %zmm31
print $zmm31.v32_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %zmm31
print $ymm31.v4_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %ymm31
print $ymm31.v16_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %ymm31
print $xmm31.v2_double
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check float contents of %xmm31
print $xmm31.v8_int16
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: check int16 contents of %xmm31
set var $zmm0.v8_double[0] = 0 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm0.v8_double[0]
set var $zmm0.v8_double[1] = 0 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm0.v8_double[1]
set var $zmm0.v8_double[2] = 0 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm0.v8_double[2]
set var $zmm0.v8_double[3] = 0 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm0.v8_double[3]
set var $zmm0.v8_double[4] = 0 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm0.v8_double[4]
set var $zmm0.v8_double[5] = 0 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm0.v8_double[5]
set var $zmm0.v8_double[6] = 0 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm0.v8_double[6]
set var $zmm0.v8_double[7] = 0 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm0.v8_double[7]
set var $zmm1.v8_double[0] = 1 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm1.v8_double[0]
set var $zmm1.v8_double[1] = 1 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm1.v8_double[1]
set var $zmm1.v8_double[2] = 1 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm1.v8_double[2]
set var $zmm1.v8_double[3] = 1 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm1.v8_double[3]
set var $zmm1.v8_double[4] = 1 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm1.v8_double[4]
set var $zmm1.v8_double[5] = 1 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm1.v8_double[5]
set var $zmm1.v8_double[6] = 1 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm1.v8_double[6]
set var $zmm1.v8_double[7] = 1 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm1.v8_double[7]
set var $zmm2.v8_double[0] = 2 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm2.v8_double[0]
set var $zmm2.v8_double[1] = 2 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm2.v8_double[1]
set var $zmm2.v8_double[2] = 2 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm2.v8_double[2]
set var $zmm2.v8_double[3] = 2 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm2.v8_double[3]
set var $zmm2.v8_double[4] = 2 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm2.v8_double[4]
set var $zmm2.v8_double[5] = 2 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm2.v8_double[5]
set var $zmm2.v8_double[6] = 2 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm2.v8_double[6]
set var $zmm2.v8_double[7] = 2 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm2.v8_double[7]
set var $zmm3.v8_double[0] = 3 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm3.v8_double[0]
set var $zmm3.v8_double[1] = 3 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm3.v8_double[1]
set var $zmm3.v8_double[2] = 3 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm3.v8_double[2]
set var $zmm3.v8_double[3] = 3 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm3.v8_double[3]
set var $zmm3.v8_double[4] = 3 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm3.v8_double[4]
set var $zmm3.v8_double[5] = 3 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm3.v8_double[5]
set var $zmm3.v8_double[6] = 3 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm3.v8_double[6]
set var $zmm3.v8_double[7] = 3 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm3.v8_double[7]
set var $zmm4.v8_double[0] = 4 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm4.v8_double[0]
set var $zmm4.v8_double[1] = 4 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm4.v8_double[1]
set var $zmm4.v8_double[2] = 4 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm4.v8_double[2]
set var $zmm4.v8_double[3] = 4 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm4.v8_double[3]
set var $zmm4.v8_double[4] = 4 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm4.v8_double[4]
set var $zmm4.v8_double[5] = 4 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm4.v8_double[5]
set var $zmm4.v8_double[6] = 4 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm4.v8_double[6]
set var $zmm4.v8_double[7] = 4 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm4.v8_double[7]
set var $zmm5.v8_double[0] = 5 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm5.v8_double[0]
set var $zmm5.v8_double[1] = 5 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm5.v8_double[1]
set var $zmm5.v8_double[2] = 5 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm5.v8_double[2]
set var $zmm5.v8_double[3] = 5 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm5.v8_double[3]
set var $zmm5.v8_double[4] = 5 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm5.v8_double[4]
set var $zmm5.v8_double[5] = 5 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm5.v8_double[5]
set var $zmm5.v8_double[6] = 5 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm5.v8_double[6]
set var $zmm5.v8_double[7] = 5 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm5.v8_double[7]
set var $zmm6.v8_double[0] = 6 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm6.v8_double[0]
set var $zmm6.v8_double[1] = 6 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm6.v8_double[1]
set var $zmm6.v8_double[2] = 6 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm6.v8_double[2]
set var $zmm6.v8_double[3] = 6 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm6.v8_double[3]
set var $zmm6.v8_double[4] = 6 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm6.v8_double[4]
set var $zmm6.v8_double[5] = 6 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm6.v8_double[5]
set var $zmm6.v8_double[6] = 6 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm6.v8_double[6]
set var $zmm6.v8_double[7] = 6 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm6.v8_double[7]
set var $zmm7.v8_double[0] = 7 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm7.v8_double[0]
set var $zmm7.v8_double[1] = 7 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm7.v8_double[1]
set var $zmm7.v8_double[2] = 7 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm7.v8_double[2]
set var $zmm7.v8_double[3] = 7 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm7.v8_double[3]
set var $zmm7.v8_double[4] = 7 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm7.v8_double[4]
set var $zmm7.v8_double[5] = 7 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm7.v8_double[5]
set var $zmm7.v8_double[6] = 7 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm7.v8_double[6]
set var $zmm7.v8_double[7] = 7 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm7.v8_double[7]
set var $zmm8.v8_double[0] = 8 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm8.v8_double[0]
set var $zmm8.v8_double[1] = 8 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm8.v8_double[1]
set var $zmm8.v8_double[2] = 8 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm8.v8_double[2]
set var $zmm8.v8_double[3] = 8 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm8.v8_double[3]
set var $zmm8.v8_double[4] = 8 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm8.v8_double[4]
set var $zmm8.v8_double[5] = 8 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm8.v8_double[5]
set var $zmm8.v8_double[6] = 8 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm8.v8_double[6]
set var $zmm8.v8_double[7] = 8 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm8.v8_double[7]
set var $zmm9.v8_double[0] = 9 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm9.v8_double[0]
set var $zmm9.v8_double[1] = 9 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm9.v8_double[1]
set var $zmm9.v8_double[2] = 9 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm9.v8_double[2]
set var $zmm9.v8_double[3] = 9 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm9.v8_double[3]
set var $zmm9.v8_double[4] = 9 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm9.v8_double[4]
set var $zmm9.v8_double[5] = 9 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm9.v8_double[5]
set var $zmm9.v8_double[6] = 9 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm9.v8_double[6]
set var $zmm9.v8_double[7] = 9 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm9.v8_double[7]
set var $zmm10.v8_double[0] = 10 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm10.v8_double[0]
set var $zmm10.v8_double[1] = 10 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm10.v8_double[1]
set var $zmm10.v8_double[2] = 10 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm10.v8_double[2]
set var $zmm10.v8_double[3] = 10 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm10.v8_double[3]
set var $zmm10.v8_double[4] = 10 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm10.v8_double[4]
set var $zmm10.v8_double[5] = 10 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm10.v8_double[5]
set var $zmm10.v8_double[6] = 10 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm10.v8_double[6]
set var $zmm10.v8_double[7] = 10 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm10.v8_double[7]
set var $zmm11.v8_double[0] = 11 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm11.v8_double[0]
set var $zmm11.v8_double[1] = 11 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm11.v8_double[1]
set var $zmm11.v8_double[2] = 11 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm11.v8_double[2]
set var $zmm11.v8_double[3] = 11 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm11.v8_double[3]
set var $zmm11.v8_double[4] = 11 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm11.v8_double[4]
set var $zmm11.v8_double[5] = 11 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm11.v8_double[5]
set var $zmm11.v8_double[6] = 11 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm11.v8_double[6]
set var $zmm11.v8_double[7] = 11 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm11.v8_double[7]
set var $zmm12.v8_double[0] = 12 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm12.v8_double[0]
set var $zmm12.v8_double[1] = 12 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm12.v8_double[1]
set var $zmm12.v8_double[2] = 12 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm12.v8_double[2]
set var $zmm12.v8_double[3] = 12 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm12.v8_double[3]
set var $zmm12.v8_double[4] = 12 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm12.v8_double[4]
set var $zmm12.v8_double[5] = 12 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm12.v8_double[5]
set var $zmm12.v8_double[6] = 12 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm12.v8_double[6]
set var $zmm12.v8_double[7] = 12 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm12.v8_double[7]
set var $zmm13.v8_double[0] = 13 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm13.v8_double[0]
set var $zmm13.v8_double[1] = 13 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm13.v8_double[1]
set var $zmm13.v8_double[2] = 13 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm13.v8_double[2]
set var $zmm13.v8_double[3] = 13 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm13.v8_double[3]
set var $zmm13.v8_double[4] = 13 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm13.v8_double[4]
set var $zmm13.v8_double[5] = 13 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm13.v8_double[5]
set var $zmm13.v8_double[6] = 13 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm13.v8_double[6]
set var $zmm13.v8_double[7] = 13 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm13.v8_double[7]
set var $zmm14.v8_double[0] = 14 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm14.v8_double[0]
set var $zmm14.v8_double[1] = 14 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm14.v8_double[1]
set var $zmm14.v8_double[2] = 14 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm14.v8_double[2]
set var $zmm14.v8_double[3] = 14 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm14.v8_double[3]
set var $zmm14.v8_double[4] = 14 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm14.v8_double[4]
set var $zmm14.v8_double[5] = 14 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm14.v8_double[5]
set var $zmm14.v8_double[6] = 14 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm14.v8_double[6]
set var $zmm14.v8_double[7] = 14 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm14.v8_double[7]
set var $zmm15.v8_double[0] = 15 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm15.v8_double[0]
set var $zmm15.v8_double[1] = 15 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm15.v8_double[1]
set var $zmm15.v8_double[2] = 15 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm15.v8_double[2]
set var $zmm15.v8_double[3] = 15 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm15.v8_double[3]
set var $zmm15.v8_double[4] = 15 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm15.v8_double[4]
set var $zmm15.v8_double[5] = 15 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm15.v8_double[5]
set var $zmm15.v8_double[6] = 15 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm15.v8_double[6]
set var $zmm15.v8_double[7] = 15 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm15.v8_double[7]
set var $zmm16.v8_double[0] = 16 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm16.v8_double[0]
set var $zmm16.v8_double[1] = 16 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm16.v8_double[1]
set var $zmm16.v8_double[2] = 16 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm16.v8_double[2]
set var $zmm16.v8_double[3] = 16 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm16.v8_double[3]
set var $zmm16.v8_double[4] = 16 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm16.v8_double[4]
set var $zmm16.v8_double[5] = 16 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm16.v8_double[5]
set var $zmm16.v8_double[6] = 16 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm16.v8_double[6]
set var $zmm16.v8_double[7] = 16 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm16.v8_double[7]
set var $zmm17.v8_double[0] = 17 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm17.v8_double[0]
set var $zmm17.v8_double[1] = 17 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm17.v8_double[1]
set var $zmm17.v8_double[2] = 17 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm17.v8_double[2]
set var $zmm17.v8_double[3] = 17 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm17.v8_double[3]
set var $zmm17.v8_double[4] = 17 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm17.v8_double[4]
set var $zmm17.v8_double[5] = 17 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm17.v8_double[5]
set var $zmm17.v8_double[6] = 17 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm17.v8_double[6]
set var $zmm17.v8_double[7] = 17 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm17.v8_double[7]
set var $zmm18.v8_double[0] = 18 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm18.v8_double[0]
set var $zmm18.v8_double[1] = 18 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm18.v8_double[1]
set var $zmm18.v8_double[2] = 18 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm18.v8_double[2]
set var $zmm18.v8_double[3] = 18 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm18.v8_double[3]
set var $zmm18.v8_double[4] = 18 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm18.v8_double[4]
set var $zmm18.v8_double[5] = 18 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm18.v8_double[5]
set var $zmm18.v8_double[6] = 18 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm18.v8_double[6]
set var $zmm18.v8_double[7] = 18 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm18.v8_double[7]
set var $zmm19.v8_double[0] = 19 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm19.v8_double[0]
set var $zmm19.v8_double[1] = 19 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm19.v8_double[1]
set var $zmm19.v8_double[2] = 19 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm19.v8_double[2]
set var $zmm19.v8_double[3] = 19 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm19.v8_double[3]
set var $zmm19.v8_double[4] = 19 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm19.v8_double[4]
set var $zmm19.v8_double[5] = 19 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm19.v8_double[5]
set var $zmm19.v8_double[6] = 19 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm19.v8_double[6]
set var $zmm19.v8_double[7] = 19 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm19.v8_double[7]
set var $zmm20.v8_double[0] = 20 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm20.v8_double[0]
set var $zmm20.v8_double[1] = 20 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm20.v8_double[1]
set var $zmm20.v8_double[2] = 20 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm20.v8_double[2]
set var $zmm20.v8_double[3] = 20 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm20.v8_double[3]
set var $zmm20.v8_double[4] = 20 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm20.v8_double[4]
set var $zmm20.v8_double[5] = 20 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm20.v8_double[5]
set var $zmm20.v8_double[6] = 20 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm20.v8_double[6]
set var $zmm20.v8_double[7] = 20 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm20.v8_double[7]
set var $zmm21.v8_double[0] = 21 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm21.v8_double[0]
set var $zmm21.v8_double[1] = 21 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm21.v8_double[1]
set var $zmm21.v8_double[2] = 21 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm21.v8_double[2]
set var $zmm21.v8_double[3] = 21 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm21.v8_double[3]
set var $zmm21.v8_double[4] = 21 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm21.v8_double[4]
set var $zmm21.v8_double[5] = 21 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm21.v8_double[5]
set var $zmm21.v8_double[6] = 21 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm21.v8_double[6]
set var $zmm21.v8_double[7] = 21 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm21.v8_double[7]
set var $zmm22.v8_double[0] = 22 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm22.v8_double[0]
set var $zmm22.v8_double[1] = 22 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm22.v8_double[1]
set var $zmm22.v8_double[2] = 22 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm22.v8_double[2]
set var $zmm22.v8_double[3] = 22 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm22.v8_double[3]
set var $zmm22.v8_double[4] = 22 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm22.v8_double[4]
set var $zmm22.v8_double[5] = 22 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm22.v8_double[5]
set var $zmm22.v8_double[6] = 22 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm22.v8_double[6]
set var $zmm22.v8_double[7] = 22 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm22.v8_double[7]
set var $zmm23.v8_double[0] = 23 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm23.v8_double[0]
set var $zmm23.v8_double[1] = 23 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm23.v8_double[1]
set var $zmm23.v8_double[2] = 23 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm23.v8_double[2]
set var $zmm23.v8_double[3] = 23 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm23.v8_double[3]
set var $zmm23.v8_double[4] = 23 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm23.v8_double[4]
set var $zmm23.v8_double[5] = 23 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm23.v8_double[5]
set var $zmm23.v8_double[6] = 23 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm23.v8_double[6]
set var $zmm23.v8_double[7] = 23 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm23.v8_double[7]
set var $zmm24.v8_double[0] = 24 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm24.v8_double[0]
set var $zmm24.v8_double[1] = 24 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm24.v8_double[1]
set var $zmm24.v8_double[2] = 24 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm24.v8_double[2]
set var $zmm24.v8_double[3] = 24 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm24.v8_double[3]
set var $zmm24.v8_double[4] = 24 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm24.v8_double[4]
set var $zmm24.v8_double[5] = 24 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm24.v8_double[5]
set var $zmm24.v8_double[6] = 24 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm24.v8_double[6]
set var $zmm24.v8_double[7] = 24 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm24.v8_double[7]
set var $zmm25.v8_double[0] = 25 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm25.v8_double[0]
set var $zmm25.v8_double[1] = 25 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm25.v8_double[1]
set var $zmm25.v8_double[2] = 25 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm25.v8_double[2]
set var $zmm25.v8_double[3] = 25 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm25.v8_double[3]
set var $zmm25.v8_double[4] = 25 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm25.v8_double[4]
set var $zmm25.v8_double[5] = 25 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm25.v8_double[5]
set var $zmm25.v8_double[6] = 25 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm25.v8_double[6]
set var $zmm25.v8_double[7] = 25 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm25.v8_double[7]
set var $zmm26.v8_double[0] = 26 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm26.v8_double[0]
set var $zmm26.v8_double[1] = 26 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm26.v8_double[1]
set var $zmm26.v8_double[2] = 26 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm26.v8_double[2]
set var $zmm26.v8_double[3] = 26 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm26.v8_double[3]
set var $zmm26.v8_double[4] = 26 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm26.v8_double[4]
set var $zmm26.v8_double[5] = 26 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm26.v8_double[5]
set var $zmm26.v8_double[6] = 26 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm26.v8_double[6]
set var $zmm26.v8_double[7] = 26 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm26.v8_double[7]
set var $zmm27.v8_double[0] = 27 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm27.v8_double[0]
set var $zmm27.v8_double[1] = 27 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm27.v8_double[1]
set var $zmm27.v8_double[2] = 27 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm27.v8_double[2]
set var $zmm27.v8_double[3] = 27 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm27.v8_double[3]
set var $zmm27.v8_double[4] = 27 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm27.v8_double[4]
set var $zmm27.v8_double[5] = 27 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm27.v8_double[5]
set var $zmm27.v8_double[6] = 27 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm27.v8_double[6]
set var $zmm27.v8_double[7] = 27 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm27.v8_double[7]
set var $zmm28.v8_double[0] = 28 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm28.v8_double[0]
set var $zmm28.v8_double[1] = 28 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm28.v8_double[1]
set var $zmm28.v8_double[2] = 28 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm28.v8_double[2]
set var $zmm28.v8_double[3] = 28 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm28.v8_double[3]
set var $zmm28.v8_double[4] = 28 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm28.v8_double[4]
set var $zmm28.v8_double[5] = 28 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm28.v8_double[5]
set var $zmm28.v8_double[6] = 28 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm28.v8_double[6]
set var $zmm28.v8_double[7] = 28 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm28.v8_double[7]
set var $zmm29.v8_double[0] = 29 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm29.v8_double[0]
set var $zmm29.v8_double[1] = 29 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm29.v8_double[1]
set var $zmm29.v8_double[2] = 29 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm29.v8_double[2]
set var $zmm29.v8_double[3] = 29 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm29.v8_double[3]
set var $zmm29.v8_double[4] = 29 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm29.v8_double[4]
set var $zmm29.v8_double[5] = 29 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm29.v8_double[5]
set var $zmm29.v8_double[6] = 29 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm29.v8_double[6]
set var $zmm29.v8_double[7] = 29 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm29.v8_double[7]
set var $zmm30.v8_double[0] = 30 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm30.v8_double[0]
set var $zmm30.v8_double[1] = 30 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm30.v8_double[1]
set var $zmm30.v8_double[2] = 30 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm30.v8_double[2]
set var $zmm30.v8_double[3] = 30 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm30.v8_double[3]
set var $zmm30.v8_double[4] = 30 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm30.v8_double[4]
set var $zmm30.v8_double[5] = 30 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm30.v8_double[5]
set var $zmm30.v8_double[6] = 30 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm30.v8_double[6]
set var $zmm30.v8_double[7] = 30 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm30.v8_double[7]
set var $zmm31.v8_double[0] = 31 + 10
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm31.v8_double[0]
set var $zmm31.v8_double[1] = 31 + 10.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm31.v8_double[1]
set var $zmm31.v8_double[2] = 31 + 10.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm31.v8_double[2]
set var $zmm31.v8_double[3] = 31 + 10.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm31.v8_double[3]
set var $zmm31.v8_double[4] = 31 + 10.5
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm31.v8_double[4]
set var $zmm31.v8_double[5] = 31 + 10.625
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm31.v8_double[5]
set var $zmm31.v8_double[6] = 31 + 10.75
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm31.v8_double[6]
set var $zmm31.v8_double[7] = 31 + 10.875
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %zmm31.v8_double[7]
break 239
Breakpoint 5 at 0x4007da: file /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c, line 239.
(gdb) PASS: gdb.arch/i386-avx512.exp: set fourth breakpoint in main
continue
Continuing.

Breakpoint 5, main (argc=1, argv=0x7fffffffc8d8) at /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c:239
239	      asm ("nop"); /* fourth breakpoint here  */
(gdb) PASS: gdb.arch/i386-avx512.exp: continue to breakpoint: continue to fourth breakpoint in main
print zmm_data[0]
$48 = {f = {0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[0] after writing ZMM regs
print zmm_data[1]
$49 = {f = {1, 1.125, 1.25, 1.375, 1.5, 1.625, 1.75, 1.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[1] after writing ZMM regs
print zmm_data[2]
$50 = {f = {2, 2.125, 2.25, 2.375, 2.5, 2.625, 2.75, 2.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[2] after writing ZMM regs
print zmm_data[3]
$51 = {f = {3, 3.125, 3.25, 3.375, 3.5, 3.625, 3.75, 3.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[3] after writing ZMM regs
print zmm_data[4]
$52 = {f = {4, 4.125, 4.25, 4.375, 4.5, 4.625, 4.75, 4.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[4] after writing ZMM regs
print zmm_data[5]
$53 = {f = {5, 5.125, 5.25, 5.375, 5.5, 5.625, 5.75, 5.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[5] after writing ZMM regs
print zmm_data[6]
$54 = {f = {6, 6.125, 6.25, 6.375, 6.5, 6.625, 6.75, 6.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[6] after writing ZMM regs
print zmm_data[7]
$55 = {f = {7, 7.125, 7.25, 7.375, 7.5, 7.625, 7.75, 7.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[7] after writing ZMM regs
print zmm_data[8]
$56 = {f = {8, 8.125, 8.25, 8.375, 8.5, 8.625, 8.75, 8.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[8] after writing ZMM regs
print zmm_data[9]
$57 = {f = {9, 9.125, 9.25, 9.375, 9.5, 9.625, 9.75, 9.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[9] after writing ZMM regs
print zmm_data[10]
$58 = {f = {10, 10.125, 10.25, 10.375, 10.5, 10.625, 10.75, 10.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[10] after writing ZMM regs
print zmm_data[11]
$59 = {f = {11, 11.125, 11.25, 11.375, 11.5, 11.625, 11.75, 11.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[11] after writing ZMM regs
print zmm_data[12]
$60 = {f = {12, 12.125, 12.25, 12.375, 12.5, 12.625, 12.75, 12.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[12] after writing ZMM regs
print zmm_data[13]
$61 = {f = {13, 13.125, 13.25, 13.375, 13.5, 13.625, 13.75, 13.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[13] after writing ZMM regs
print zmm_data[14]
$62 = {f = {14, 14.125, 14.25, 14.375, 14.5, 14.625, 14.75, 14.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[14] after writing ZMM regs
print zmm_data[15]
$63 = {f = {15, 15.125, 15.25, 15.375, 15.5, 15.625, 15.75, 15.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[15] after writing ZMM regs
print zmm_data[16]
$64 = {f = {16, 16.125, 16.25, 16.375, 16.5, 16.625, 16.75, 16.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[16] after writing ZMM regs
print zmm_data[17]
$65 = {f = {17, 17.125, 17.25, 17.375, 17.5, 17.625, 17.75, 17.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[17] after writing ZMM regs
print zmm_data[18]
$66 = {f = {18, 18.125, 18.25, 18.375, 18.5, 18.625, 18.75, 18.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[18] after writing ZMM regs
print zmm_data[19]
$67 = {f = {19, 19.125, 19.25, 19.375, 19.5, 19.625, 19.75, 19.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[19] after writing ZMM regs
print zmm_data[20]
$68 = {f = {20, 20.125, 20.25, 20.375, 20.5, 20.625, 20.75, 20.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[20] after writing ZMM regs
print zmm_data[21]
$69 = {f = {21, 21.125, 21.25, 21.375, 21.5, 21.625, 21.75, 21.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[21] after writing ZMM regs
print zmm_data[22]
$70 = {f = {22, 22.125, 22.25, 22.375, 22.5, 22.625, 22.75, 22.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[22] after writing ZMM regs
print zmm_data[23]
$71 = {f = {23, 23.125, 23.25, 23.375, 23.5, 23.625, 23.75, 23.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[23] after writing ZMM regs
print zmm_data[24]
$72 = {f = {24, 24.125, 24.25, 24.375, 24.5, 24.625, 24.75, 24.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[24] after writing ZMM regs
print zmm_data[25]
$73 = {f = {25, 25.125, 25.25, 25.375, 25.5, 25.625, 25.75, 25.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[25] after writing ZMM regs
print zmm_data[26]
$74 = {f = {26, 26.125, 26.25, 26.375, 26.5, 26.625, 26.75, 26.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[26] after writing ZMM regs
print zmm_data[27]
$75 = {f = {27, 27.125, 27.25, 27.375, 27.5, 27.625, 27.75, 27.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[27] after writing ZMM regs
print zmm_data[28]
$76 = {f = {28, 28.125, 28.25, 28.375, 28.5, 28.625, 28.75, 28.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[28] after writing ZMM regs
print zmm_data[29]
$77 = {f = {29, 29.125, 29.25, 29.375, 29.5, 29.625, 29.75, 29.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[29] after writing ZMM regs
print zmm_data[30]
$78 = {f = {30, 30.125, 30.25, 30.375, 30.5, 30.625, 30.75, 30.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[30] after writing ZMM regs
print zmm_data[31]
$79 = {f = {31, 31.125, 31.25, 31.375, 31.5, 31.625, 31.75, 31.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[31] after writing ZMM regs
set var $ymm0.v4_double[0] = 0 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm0.v4_double[0]
set var $ymm0.v4_double[1] = 0 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm0.v4_double[1]
set var $ymm0.v4_double[2] = 0 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm0.v4_double[2]
set var $ymm0.v4_double[3] = 0 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm0.v4_double[3]
set var $ymm1.v4_double[0] = 1 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm1.v4_double[0]
set var $ymm1.v4_double[1] = 1 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm1.v4_double[1]
set var $ymm1.v4_double[2] = 1 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm1.v4_double[2]
set var $ymm1.v4_double[3] = 1 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm1.v4_double[3]
set var $ymm2.v4_double[0] = 2 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm2.v4_double[0]
set var $ymm2.v4_double[1] = 2 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm2.v4_double[1]
set var $ymm2.v4_double[2] = 2 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm2.v4_double[2]
set var $ymm2.v4_double[3] = 2 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm2.v4_double[3]
set var $ymm3.v4_double[0] = 3 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm3.v4_double[0]
set var $ymm3.v4_double[1] = 3 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm3.v4_double[1]
set var $ymm3.v4_double[2] = 3 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm3.v4_double[2]
set var $ymm3.v4_double[3] = 3 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm3.v4_double[3]
set var $ymm4.v4_double[0] = 4 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm4.v4_double[0]
set var $ymm4.v4_double[1] = 4 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm4.v4_double[1]
set var $ymm4.v4_double[2] = 4 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm4.v4_double[2]
set var $ymm4.v4_double[3] = 4 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm4.v4_double[3]
set var $ymm5.v4_double[0] = 5 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm5.v4_double[0]
set var $ymm5.v4_double[1] = 5 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm5.v4_double[1]
set var $ymm5.v4_double[2] = 5 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm5.v4_double[2]
set var $ymm5.v4_double[3] = 5 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm5.v4_double[3]
set var $ymm6.v4_double[0] = 6 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm6.v4_double[0]
set var $ymm6.v4_double[1] = 6 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm6.v4_double[1]
set var $ymm6.v4_double[2] = 6 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm6.v4_double[2]
set var $ymm6.v4_double[3] = 6 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm6.v4_double[3]
set var $ymm7.v4_double[0] = 7 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm7.v4_double[0]
set var $ymm7.v4_double[1] = 7 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm7.v4_double[1]
set var $ymm7.v4_double[2] = 7 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm7.v4_double[2]
set var $ymm7.v4_double[3] = 7 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm7.v4_double[3]
set var $ymm8.v4_double[0] = 8 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm8.v4_double[0]
set var $ymm8.v4_double[1] = 8 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm8.v4_double[1]
set var $ymm8.v4_double[2] = 8 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm8.v4_double[2]
set var $ymm8.v4_double[3] = 8 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm8.v4_double[3]
set var $ymm9.v4_double[0] = 9 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm9.v4_double[0]
set var $ymm9.v4_double[1] = 9 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm9.v4_double[1]
set var $ymm9.v4_double[2] = 9 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm9.v4_double[2]
set var $ymm9.v4_double[3] = 9 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm9.v4_double[3]
set var $ymm10.v4_double[0] = 10 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm10.v4_double[0]
set var $ymm10.v4_double[1] = 10 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm10.v4_double[1]
set var $ymm10.v4_double[2] = 10 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm10.v4_double[2]
set var $ymm10.v4_double[3] = 10 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm10.v4_double[3]
set var $ymm11.v4_double[0] = 11 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm11.v4_double[0]
set var $ymm11.v4_double[1] = 11 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm11.v4_double[1]
set var $ymm11.v4_double[2] = 11 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm11.v4_double[2]
set var $ymm11.v4_double[3] = 11 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm11.v4_double[3]
set var $ymm12.v4_double[0] = 12 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm12.v4_double[0]
set var $ymm12.v4_double[1] = 12 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm12.v4_double[1]
set var $ymm12.v4_double[2] = 12 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm12.v4_double[2]
set var $ymm12.v4_double[3] = 12 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm12.v4_double[3]
set var $ymm13.v4_double[0] = 13 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm13.v4_double[0]
set var $ymm13.v4_double[1] = 13 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm13.v4_double[1]
set var $ymm13.v4_double[2] = 13 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm13.v4_double[2]
set var $ymm13.v4_double[3] = 13 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm13.v4_double[3]
set var $ymm14.v4_double[0] = 14 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm14.v4_double[0]
set var $ymm14.v4_double[1] = 14 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm14.v4_double[1]
set var $ymm14.v4_double[2] = 14 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm14.v4_double[2]
set var $ymm14.v4_double[3] = 14 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm14.v4_double[3]
set var $ymm15.v4_double[0] = 15 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm15.v4_double[0]
set var $ymm15.v4_double[1] = 15 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm15.v4_double[1]
set var $ymm15.v4_double[2] = 15 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm15.v4_double[2]
set var $ymm15.v4_double[3] = 15 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm15.v4_double[3]
set var $ymm16.v4_double[0] = 16 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm16.v4_double[0]
set var $ymm16.v4_double[1] = 16 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm16.v4_double[1]
set var $ymm16.v4_double[2] = 16 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm16.v4_double[2]
set var $ymm16.v4_double[3] = 16 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm16.v4_double[3]
set var $ymm17.v4_double[0] = 17 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm17.v4_double[0]
set var $ymm17.v4_double[1] = 17 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm17.v4_double[1]
set var $ymm17.v4_double[2] = 17 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm17.v4_double[2]
set var $ymm17.v4_double[3] = 17 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm17.v4_double[3]
set var $ymm18.v4_double[0] = 18 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm18.v4_double[0]
set var $ymm18.v4_double[1] = 18 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm18.v4_double[1]
set var $ymm18.v4_double[2] = 18 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm18.v4_double[2]
set var $ymm18.v4_double[3] = 18 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm18.v4_double[3]
set var $ymm19.v4_double[0] = 19 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm19.v4_double[0]
set var $ymm19.v4_double[1] = 19 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm19.v4_double[1]
set var $ymm19.v4_double[2] = 19 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm19.v4_double[2]
set var $ymm19.v4_double[3] = 19 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm19.v4_double[3]
set var $ymm20.v4_double[0] = 20 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm20.v4_double[0]
set var $ymm20.v4_double[1] = 20 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm20.v4_double[1]
set var $ymm20.v4_double[2] = 20 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm20.v4_double[2]
set var $ymm20.v4_double[3] = 20 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm20.v4_double[3]
set var $ymm21.v4_double[0] = 21 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm21.v4_double[0]
set var $ymm21.v4_double[1] = 21 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm21.v4_double[1]
set var $ymm21.v4_double[2] = 21 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm21.v4_double[2]
set var $ymm21.v4_double[3] = 21 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm21.v4_double[3]
set var $ymm22.v4_double[0] = 22 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm22.v4_double[0]
set var $ymm22.v4_double[1] = 22 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm22.v4_double[1]
set var $ymm22.v4_double[2] = 22 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm22.v4_double[2]
set var $ymm22.v4_double[3] = 22 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm22.v4_double[3]
set var $ymm23.v4_double[0] = 23 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm23.v4_double[0]
set var $ymm23.v4_double[1] = 23 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm23.v4_double[1]
set var $ymm23.v4_double[2] = 23 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm23.v4_double[2]
set var $ymm23.v4_double[3] = 23 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm23.v4_double[3]
set var $ymm24.v4_double[0] = 24 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm24.v4_double[0]
set var $ymm24.v4_double[1] = 24 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm24.v4_double[1]
set var $ymm24.v4_double[2] = 24 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm24.v4_double[2]
set var $ymm24.v4_double[3] = 24 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm24.v4_double[3]
set var $ymm25.v4_double[0] = 25 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm25.v4_double[0]
set var $ymm25.v4_double[1] = 25 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm25.v4_double[1]
set var $ymm25.v4_double[2] = 25 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm25.v4_double[2]
set var $ymm25.v4_double[3] = 25 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm25.v4_double[3]
set var $ymm26.v4_double[0] = 26 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm26.v4_double[0]
set var $ymm26.v4_double[1] = 26 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm26.v4_double[1]
set var $ymm26.v4_double[2] = 26 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm26.v4_double[2]
set var $ymm26.v4_double[3] = 26 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm26.v4_double[3]
set var $ymm27.v4_double[0] = 27 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm27.v4_double[0]
set var $ymm27.v4_double[1] = 27 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm27.v4_double[1]
set var $ymm27.v4_double[2] = 27 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm27.v4_double[2]
set var $ymm27.v4_double[3] = 27 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm27.v4_double[3]
set var $ymm28.v4_double[0] = 28 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm28.v4_double[0]
set var $ymm28.v4_double[1] = 28 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm28.v4_double[1]
set var $ymm28.v4_double[2] = 28 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm28.v4_double[2]
set var $ymm28.v4_double[3] = 28 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm28.v4_double[3]
set var $ymm29.v4_double[0] = 29 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm29.v4_double[0]
set var $ymm29.v4_double[1] = 29 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm29.v4_double[1]
set var $ymm29.v4_double[2] = 29 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm29.v4_double[2]
set var $ymm29.v4_double[3] = 29 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm29.v4_double[3]
set var $ymm30.v4_double[0] = 30 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm30.v4_double[0]
set var $ymm30.v4_double[1] = 30 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm30.v4_double[1]
set var $ymm30.v4_double[2] = 30 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm30.v4_double[2]
set var $ymm30.v4_double[3] = 30 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm30.v4_double[3]
set var $ymm31.v4_double[0] = 31 + 20
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm31.v4_double[0]
set var $ymm31.v4_double[1] = 31 + 20.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm31.v4_double[1]
set var $ymm31.v4_double[2] = 31 + 20.25
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm31.v4_double[2]
set var $ymm31.v4_double[3] = 31 + 20.375
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %ymm31.v4_double[3]
break 245
Breakpoint 6 at 0x4007e0: file /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c, line 245.
(gdb) PASS: gdb.arch/i386-avx512.exp: set fifth breakpoint in main
continue
Continuing.

Breakpoint 6, main (argc=1, argv=0x7fffffffc8d8) at /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c:245
245	      asm ("nop"); /* fifth breakpoint here  */
(gdb) PASS: gdb.arch/i386-avx512.exp: continue to breakpoint: continue to fifth breakpoint in main
print zmm_data[0]
$80 = {f = {0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[0] after writing YMM regs
print zmm_data[1]
$81 = {f = {1, 1.125, 1.25, 1.375, 1.5, 1.625, 1.75, 1.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[1] after writing YMM regs
print zmm_data[2]
$82 = {f = {2, 2.125, 2.25, 2.375, 2.5, 2.625, 2.75, 2.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[2] after writing YMM regs
print zmm_data[3]
$83 = {f = {3, 3.125, 3.25, 3.375, 3.5, 3.625, 3.75, 3.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[3] after writing YMM regs
print zmm_data[4]
$84 = {f = {4, 4.125, 4.25, 4.375, 4.5, 4.625, 4.75, 4.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[4] after writing YMM regs
print zmm_data[5]
$85 = {f = {5, 5.125, 5.25, 5.375, 5.5, 5.625, 5.75, 5.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[5] after writing YMM regs
print zmm_data[6]
$86 = {f = {6, 6.125, 6.25, 6.375, 6.5, 6.625, 6.75, 6.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[6] after writing YMM regs
print zmm_data[7]
$87 = {f = {7, 7.125, 7.25, 7.375, 7.5, 7.625, 7.75, 7.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[7] after writing YMM regs
print zmm_data[8]
$88 = {f = {8, 8.125, 8.25, 8.375, 8.5, 8.625, 8.75, 8.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[8] after writing YMM regs
print zmm_data[9]
$89 = {f = {9, 9.125, 9.25, 9.375, 9.5, 9.625, 9.75, 9.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[9] after writing YMM regs
print zmm_data[10]
$90 = {f = {10, 10.125, 10.25, 10.375, 10.5, 10.625, 10.75, 10.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[10] after writing YMM regs
print zmm_data[11]
$91 = {f = {11, 11.125, 11.25, 11.375, 11.5, 11.625, 11.75, 11.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[11] after writing YMM regs
print zmm_data[12]
$92 = {f = {12, 12.125, 12.25, 12.375, 12.5, 12.625, 12.75, 12.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[12] after writing YMM regs
print zmm_data[13]
$93 = {f = {13, 13.125, 13.25, 13.375, 13.5, 13.625, 13.75, 13.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[13] after writing YMM regs
print zmm_data[14]
$94 = {f = {14, 14.125, 14.25, 14.375, 14.5, 14.625, 14.75, 14.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[14] after writing YMM regs
print zmm_data[15]
$95 = {f = {15, 15.125, 15.25, 15.375, 15.5, 15.625, 15.75, 15.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[15] after writing YMM regs
print zmm_data[16]
$96 = {f = {16, 16.125, 16.25, 16.375, 16.5, 16.625, 16.75, 16.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[16] after writing YMM regs
print zmm_data[17]
$97 = {f = {17, 17.125, 17.25, 17.375, 17.5, 17.625, 17.75, 17.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[17] after writing YMM regs
print zmm_data[18]
$98 = {f = {18, 18.125, 18.25, 18.375, 18.5, 18.625, 18.75, 18.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[18] after writing YMM regs
print zmm_data[19]
$99 = {f = {19, 19.125, 19.25, 19.375, 19.5, 19.625, 19.75, 19.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[19] after writing YMM regs
print zmm_data[20]
$100 = {f = {20, 20.125, 20.25, 20.375, 20.5, 20.625, 20.75, 20.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[20] after writing YMM regs
print zmm_data[21]
$101 = {f = {21, 21.125, 21.25, 21.375, 21.5, 21.625, 21.75, 21.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[21] after writing YMM regs
print zmm_data[22]
$102 = {f = {22, 22.125, 22.25, 22.375, 22.5, 22.625, 22.75, 22.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[22] after writing YMM regs
print zmm_data[23]
$103 = {f = {23, 23.125, 23.25, 23.375, 23.5, 23.625, 23.75, 23.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[23] after writing YMM regs
print zmm_data[24]
$104 = {f = {24, 24.125, 24.25, 24.375, 24.5, 24.625, 24.75, 24.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[24] after writing YMM regs
print zmm_data[25]
$105 = {f = {25, 25.125, 25.25, 25.375, 25.5, 25.625, 25.75, 25.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[25] after writing YMM regs
print zmm_data[26]
$106 = {f = {26, 26.125, 26.25, 26.375, 26.5, 26.625, 26.75, 26.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[26] after writing YMM regs
print zmm_data[27]
$107 = {f = {27, 27.125, 27.25, 27.375, 27.5, 27.625, 27.75, 27.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[27] after writing YMM regs
print zmm_data[28]
$108 = {f = {28, 28.125, 28.25, 28.375, 28.5, 28.625, 28.75, 28.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[28] after writing YMM regs
print zmm_data[29]
$109 = {f = {29, 29.125, 29.25, 29.375, 29.5, 29.625, 29.75, 29.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[29] after writing YMM regs
print zmm_data[30]
$110 = {f = {30, 30.125, 30.25, 30.375, 30.5, 30.625, 30.75, 30.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[30] after writing YMM regs
print zmm_data[31]
$111 = {f = {31, 31.125, 31.25, 31.375, 31.5, 31.625, 31.75, 31.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[31] after writing YMM regs
set var $xmm0.v2_double[0] = 0 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm0.v2_double[0]
set var $xmm0.v2_double[1] = 0 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm0.v2_double[1]
set var $xmm1.v2_double[0] = 1 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm1.v2_double[0]
set var $xmm1.v2_double[1] = 1 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm1.v2_double[1]
set var $xmm2.v2_double[0] = 2 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm2.v2_double[0]
set var $xmm2.v2_double[1] = 2 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm2.v2_double[1]
set var $xmm3.v2_double[0] = 3 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm3.v2_double[0]
set var $xmm3.v2_double[1] = 3 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm3.v2_double[1]
set var $xmm4.v2_double[0] = 4 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm4.v2_double[0]
set var $xmm4.v2_double[1] = 4 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm4.v2_double[1]
set var $xmm5.v2_double[0] = 5 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm5.v2_double[0]
set var $xmm5.v2_double[1] = 5 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm5.v2_double[1]
set var $xmm6.v2_double[0] = 6 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm6.v2_double[0]
set var $xmm6.v2_double[1] = 6 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm6.v2_double[1]
set var $xmm7.v2_double[0] = 7 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm7.v2_double[0]
set var $xmm7.v2_double[1] = 7 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm7.v2_double[1]
set var $xmm8.v2_double[0] = 8 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm8.v2_double[0]
set var $xmm8.v2_double[1] = 8 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm8.v2_double[1]
set var $xmm9.v2_double[0] = 9 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm9.v2_double[0]
set var $xmm9.v2_double[1] = 9 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm9.v2_double[1]
set var $xmm10.v2_double[0] = 10 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm10.v2_double[0]
set var $xmm10.v2_double[1] = 10 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm10.v2_double[1]
set var $xmm11.v2_double[0] = 11 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm11.v2_double[0]
set var $xmm11.v2_double[1] = 11 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm11.v2_double[1]
set var $xmm12.v2_double[0] = 12 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm12.v2_double[0]
set var $xmm12.v2_double[1] = 12 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm12.v2_double[1]
set var $xmm13.v2_double[0] = 13 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm13.v2_double[0]
set var $xmm13.v2_double[1] = 13 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm13.v2_double[1]
set var $xmm14.v2_double[0] = 14 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm14.v2_double[0]
set var $xmm14.v2_double[1] = 14 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm14.v2_double[1]
set var $xmm15.v2_double[0] = 15 + 30
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm15.v2_double[0]
set var $xmm15.v2_double[1] = 15 + 30.125
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm15.v2_double[1]
set var $xmm16.v2_double[0] = 16 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm16.v2_double[0]
set var $xmm16.v2_double[1] = 16 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm16.v2_double[1]
set var $xmm17.v2_double[0] = 17 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm17.v2_double[0]
set var $xmm17.v2_double[1] = 17 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm17.v2_double[1]
set var $xmm18.v2_double[0] = 18 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm18.v2_double[0]
set var $xmm18.v2_double[1] = 18 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm18.v2_double[1]
set var $xmm19.v2_double[0] = 19 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm19.v2_double[0]
set var $xmm19.v2_double[1] = 19 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm19.v2_double[1]
set var $xmm20.v2_double[0] = 20 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm20.v2_double[0]
set var $xmm20.v2_double[1] = 20 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm20.v2_double[1]
set var $xmm21.v2_double[0] = 21 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm21.v2_double[0]
set var $xmm21.v2_double[1] = 21 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm21.v2_double[1]
set var $xmm22.v2_double[0] = 22 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm22.v2_double[0]
set var $xmm22.v2_double[1] = 22 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm22.v2_double[1]
set var $xmm23.v2_double[0] = 23 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm23.v2_double[0]
set var $xmm23.v2_double[1] = 23 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm23.v2_double[1]
set var $xmm24.v2_double[0] = 24 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm24.v2_double[0]
set var $xmm24.v2_double[1] = 24 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm24.v2_double[1]
set var $xmm25.v2_double[0] = 25 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm25.v2_double[0]
set var $xmm25.v2_double[1] = 25 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm25.v2_double[1]
set var $xmm26.v2_double[0] = 26 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm26.v2_double[0]
set var $xmm26.v2_double[1] = 26 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm26.v2_double[1]
set var $xmm27.v2_double[0] = 27 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm27.v2_double[0]
set var $xmm27.v2_double[1] = 27 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm27.v2_double[1]
set var $xmm28.v2_double[0] = 28 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm28.v2_double[0]
set var $xmm28.v2_double[1] = 28 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm28.v2_double[1]
set var $xmm29.v2_double[0] = 29 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm29.v2_double[0]
set var $xmm29.v2_double[1] = 29 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm29.v2_double[1]
set var $xmm30.v2_double[0] = 30 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm30.v2_double[0]
set var $xmm30.v2_double[1] = 30 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm30.v2_double[1]
set var $xmm31.v2_double[0] = 31 + 30
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm31.v2_double[0]
set var $xmm31.v2_double[1] = 31 + 30.125
Attempt to extract a component of a value that is not a structure.
(gdb) PASS: gdb.arch/i386-avx512.exp: set %xmm31.v2_double[1]
break 251
Breakpoint 7 at 0x4007e6: file /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c, line 251.
(gdb) PASS: gdb.arch/i386-avx512.exp: set sixth breakpoint in main
continue
Continuing.

Breakpoint 7, main (argc=1, argv=0x7fffffffc8d8) at /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c:251
251	      asm ("nop"); /* sixth breakpoint here  */
(gdb) PASS: gdb.arch/i386-avx512.exp: continue to breakpoint: continue to sixth breakpoint in main
print zmm_data[0]
$112 = {f = {30, 30.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[0] after writing XMM regs
print zmm_data[1]
$113 = {f = {31, 31.125, 1.25, 1.375, 1.5, 1.625, 1.75, 1.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[1] after writing XMM regs
print zmm_data[2]
$114 = {f = {32, 32.125, 2.25, 2.375, 2.5, 2.625, 2.75, 2.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[2] after writing XMM regs
print zmm_data[3]
$115 = {f = {33, 33.125, 3.25, 3.375, 3.5, 3.625, 3.75, 3.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[3] after writing XMM regs
print zmm_data[4]
$116 = {f = {34, 34.125, 4.25, 4.375, 4.5, 4.625, 4.75, 4.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[4] after writing XMM regs
print zmm_data[5]
$117 = {f = {35, 35.125, 5.25, 5.375, 5.5, 5.625, 5.75, 5.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[5] after writing XMM regs
print zmm_data[6]
$118 = {f = {36, 36.125, 6.25, 6.375, 6.5, 6.625, 6.75, 6.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[6] after writing XMM regs
print zmm_data[7]
$119 = {f = {37, 37.125, 7.25, 7.375, 7.5, 7.625, 7.75, 7.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[7] after writing XMM regs
print zmm_data[8]
$120 = {f = {38, 38.125, 8.25, 8.375, 8.5, 8.625, 8.75, 8.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[8] after writing XMM regs
print zmm_data[9]
$121 = {f = {39, 39.125, 9.25, 9.375, 9.5, 9.625, 9.75, 9.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[9] after writing XMM regs
print zmm_data[10]
$122 = {f = {40, 40.125, 10.25, 10.375, 10.5, 10.625, 10.75, 10.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[10] after writing XMM regs
print zmm_data[11]
$123 = {f = {41, 41.125, 11.25, 11.375, 11.5, 11.625, 11.75, 11.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[11] after writing XMM regs
print zmm_data[12]
$124 = {f = {42, 42.125, 12.25, 12.375, 12.5, 12.625, 12.75, 12.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[12] after writing XMM regs
print zmm_data[13]
$125 = {f = {43, 43.125, 13.25, 13.375, 13.5, 13.625, 13.75, 13.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[13] after writing XMM regs
print zmm_data[14]
$126 = {f = {44, 44.125, 14.25, 14.375, 14.5, 14.625, 14.75, 14.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[14] after writing XMM regs
print zmm_data[15]
$127 = {f = {45, 45.125, 15.25, 15.375, 15.5, 15.625, 15.75, 15.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[15] after writing XMM regs
print zmm_data[16]
$128 = {f = {16, 16.125, 16.25, 16.375, 16.5, 16.625, 16.75, 16.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[16] after writing XMM regs
print zmm_data[17]
$129 = {f = {17, 17.125, 17.25, 17.375, 17.5, 17.625, 17.75, 17.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[17] after writing XMM regs
print zmm_data[18]
$130 = {f = {18, 18.125, 18.25, 18.375, 18.5, 18.625, 18.75, 18.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[18] after writing XMM regs
print zmm_data[19]
$131 = {f = {19, 19.125, 19.25, 19.375, 19.5, 19.625, 19.75, 19.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[19] after writing XMM regs
print zmm_data[20]
$132 = {f = {20, 20.125, 20.25, 20.375, 20.5, 20.625, 20.75, 20.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[20] after writing XMM regs
print zmm_data[21]
$133 = {f = {21, 21.125, 21.25, 21.375, 21.5, 21.625, 21.75, 21.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[21] after writing XMM regs
print zmm_data[22]
$134 = {f = {22, 22.125, 22.25, 22.375, 22.5, 22.625, 22.75, 22.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[22] after writing XMM regs
print zmm_data[23]
$135 = {f = {23, 23.125, 23.25, 23.375, 23.5, 23.625, 23.75, 23.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[23] after writing XMM regs
print zmm_data[24]
$136 = {f = {24, 24.125, 24.25, 24.375, 24.5, 24.625, 24.75, 24.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[24] after writing XMM regs
print zmm_data[25]
$137 = {f = {25, 25.125, 25.25, 25.375, 25.5, 25.625, 25.75, 25.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[25] after writing XMM regs
print zmm_data[26]
$138 = {f = {26, 26.125, 26.25, 26.375, 26.5, 26.625, 26.75, 26.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[26] after writing XMM regs
print zmm_data[27]
$139 = {f = {27, 27.125, 27.25, 27.375, 27.5, 27.625, 27.75, 27.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[27] after writing XMM regs
print zmm_data[28]
$140 = {f = {28, 28.125, 28.25, 28.375, 28.5, 28.625, 28.75, 28.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[28] after writing XMM regs
print zmm_data[29]
$141 = {f = {29, 29.125, 29.25, 29.375, 29.5, 29.625, 29.75, 29.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[29] after writing XMM regs
print zmm_data[30]
$142 = {f = {30, 30.125, 30.25, 30.375, 30.5, 30.625, 30.75, 30.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[30] after writing XMM regs
print zmm_data[31]
$143 = {f = {31, 31.125, 31.25, 31.375, 31.5, 31.625, 31.75, 31.875}}
(gdb) FAIL: gdb.arch/i386-avx512.exp: check contents of zmm_data[31] after writing XMM regs
break 258
Breakpoint 8 at 0x4007f8: file /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c, line 258.
(gdb) PASS: gdb.arch/i386-avx512.exp: set seventh breakpoint in main
continue
Continuing.

Breakpoint 8, main (argc=1, argv=0x7fffffffc8d8) at /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.c:258
258	      asm ("nop"); /* seventh breakpoint here  */
(gdb) PASS: gdb.arch/i386-avx512.exp: continue to breakpoint: continue to seventh breakpoint in main
print $zmm0.v16_int32
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: print $zmm0.v16_int32
print $zmm16.v16_int32
Attempt to extract a component of a value that is not a structure.
(gdb) FAIL: gdb.arch/i386-avx512.exp: print $zmm16.v16_int32
Remote debugging from host ::1, port 43802
monitor exit
(gdb) Killing process(es): 3632
testcase /home/jbeulich/cpp/gdb/master-git/2018-10-10/gdb/testsuite/gdb.arch/i386-avx512.exp completed in 1 seconds

		=== gdb Summary ===

# of expected passes		502
# of unexpected failures	272
Executing on host: /build/gdb/master-git/2018-10-10/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /build/gdb/master-git/2018-10-10/gdb/testsuite/../data-directory --version    (timeout = 300)
spawn -ignore SIGHUP /build/gdb/master-git/2018-10-10/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /build/gdb/master-git/2018-10-10/gdb/testsuite/../data-directory --version
GNU gdb (GDB) 8.2.50.20181010-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
/build/gdb/master-git/2018-10-10/gdb/gdb version  8.2.50.20181010-git -nw -nx -data-directory /build/gdb/master-git/2018-10-10/gdb/testsuite/../data-directory  -ex "set auto-connect-native-target off"

runtest completed at Thu Nov  8 12:06:38 2018

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: Ping: [PATCH v2] x86-64: fix ZMM register state tracking
  2018-11-08 11:16               ` Jan Beulich
@ 2018-11-08 16:24                 ` Simon Marchi
  0 siblings, 0 replies; 24+ messages in thread
From: Simon Marchi @ 2018-11-08 16:24 UTC (permalink / raw)
  To: Jan Beulich; +Cc: Markus T Metzger, Simon Marchi, Pedro Alves, GDB

On 2018-11-08 6:15 a.m., Jan Beulich wrote:
> I'm afraid there's more broken here than just this one test.
> Log file attached. I hope you can make sense of it.
> 
>> $ make check TESTS="gdb.arch/i386-avx512.exp" RUNTESTFLAGS="--target_board=native-extended-gdbserver"
> 
> This produces effectively the same (bad) results.

Thanks I opened:

https://sourceware.org/bugzilla/show_bug.cgi?id=23873

Simon

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2018-11-08 16:24 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-05 13:23 [PATCH] x86-64: fix ZMM register state tracking Jan Beulich
2018-09-07 23:13 ` Simon Marchi
2018-09-10  6:25   ` Jan Beulich
2018-09-10 13:01     ` Simon Marchi
2018-09-18 13:38       ` Jan Beulich
2018-09-25  3:29         ` Simon Marchi
2018-09-25 15:04           ` Jan Beulich
2018-10-02 19:20             ` Simon Marchi
2018-10-03 14:30               ` Jan Beulich
2018-10-03 14:41                 ` Simon Marchi
2018-09-11 10:34 ` Pedro Alves
2018-09-11 11:34   ` Jan Beulich
2018-09-24 17:19 ` Metzger, Markus T
2018-09-25  7:47   ` Jan Beulich
2018-10-10 15:12 ` [PATCH v2] " Jan Beulich
2018-10-29 10:31 ` Ping: " Jan Beulich
2018-10-31 14:00   ` Simon Marchi
2018-11-07  9:07     ` Metzger, Markus T
2018-11-07  9:12       ` Jan Beulich
2018-11-07 13:18         ` Metzger, Markus T
2018-11-07 13:25           ` Jan Beulich
2018-11-07 14:18             ` Simon Marchi
2018-11-08 11:16               ` Jan Beulich
2018-11-08 16:24                 ` Simon Marchi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).