bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug binutils/31561] New: AArch64 gas test case "SME extension (ZERO)" f


From: jremus at linux dot ibm.com
Subject: [Bug binutils/31561] New: AArch64 gas test case "SME extension (ZERO)" fails on s390x
Date: Tue, 26 Mar 2024 16:39:17 +0000

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

            Bug ID: 31561
           Summary: AArch64 gas test case "SME extension (ZERO)" fails on
                    s390x
           Product: binutils
           Version: 2.43 (HEAD)
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: binutils
          Assignee: unassigned at sourceware dot org
          Reporter: jremus at linux dot ibm.com
  Target Milestone: ---

The AArch64 GNU Assembler test case "SME extension (ZERO)" fails in a GNU
Binutils build for target "aarch64-linux-gnu" on s390x as follows:


Target is aarch64-unknown-linux-gnu
Host   is s390x-ibm-linux-gnu
...
../as-new  -march=armv8-a+sme  -o tmpdir/sme-4.o
/home/jremus/binutils/gas/testsuite/gas/aarch64/sme-4.s
Executing on host: sh -c {../as-new  -march=armv8-a+sme  -o tmpdir/sme-4.o
/home/jremus/binutils/gas/testsuite/gas/aarch64/sme-4.s 2>&1}  /dev/null
dump.tmp (timeout = 300)
spawn [open ...]
/home/jremus/binutils/build-gcc-aarch64/gas/testsuite/../../binutils/objdump 
-dr tmpdir/sme-4.o > tmpdir/dump.out
Executing on host: sh -c
{/home/jremus/binutils/build-gcc-aarch64/gas/testsuite/../../binutils/objdump 
-dr tmpdir/sme-4.o > tmpdir/dump.out 2>dump.tmp}  /dev/null  (timeout = 300)
spawn [open ...]
regexp_diff match failure
regexp "^   4:  c00800ff        zero    {za}$"
line   "   4:   c00800ff        zero    {}"
regexp_diff match failure
regexp "^   8:  c00800ff        zero    {za}$"
line   "   8:   c00800ff        zero    {}"
regexp_diff match failure
regexp "^   c:  c00800ff        zero    {za}$"
line   "   c:   c00800ff        zero    {}"
regexp_diff match failure
regexp "^  10:  c00800ff        zero    {za}$"
line   "  10:   c00800ff        zero    {}"
regexp_diff match failure
regexp "^  14:  c00800ff        zero    {za}$"
line   "  14:   c00800ff        zero    {}"
regexp_diff match failure
regexp "^  18:  c0080001        zero    {za0\.d}$"
line   "  18:   c0080001        zero    {}"
regexp_diff match failure
regexp "^  1c:  c0080002        zero    {za1\.d}$"
line   "  1c:   c0080002        zero    {}"
regexp_diff match failure
regexp "^  20:  c0080004        zero    {za2\.d}$"
line   "  20:   c0080004        zero    {}"
regexp_diff match failure
regexp "^  24:  c0080008        zero    {za3\.d}$"
line   "  24:   c0080008        zero    {}"
regexp_diff match failure
regexp "^  28:  c0080010        zero    {za4\.d}$"
line   "  28:   c0080010        zero    {}"
regexp_diff match failure
regexp "^  2c:  c0080020        zero    {za5\.d}$"
line   "  2c:   c0080020        zero    {}"
regexp_diff match failure
regexp "^  30:  c0080040        zero    {za6\.d}$"
line   "  30:   c0080040        zero    {}"
regexp_diff match failure
regexp "^  34:  c0080080        zero    {za7\.d}$"
line   "  34:   c0080080        zero    {}"
regexp_diff match failure
regexp "^  38:  c0080001        zero    {za0\.d}$"
line   "  38:   c0080001        zero    {}"
regexp_diff match failure
regexp "^  3c:  c0080003        zero    {za0\.d, za1\.d}$"
line   "  3c:   c0080003        zero    {}"
regexp_diff match failure
regexp "^  40:  c0080007        zero    {za0\.d, za1\.d, za2\.d}$"
line   "  40:   c0080007        zero    {}"
regexp_diff match failure
regexp "^  44:  c008000f        zero    {za0\.d, za1\.d, za2\.d, za3\.d}$"
line   "  44:   c008000f        zero    {}"
regexp_diff match failure
regexp "^  48:  c008001f        zero    {za0\.s, za1\.d, za2\.d, za3\.d}$"
line   "  48:   c008001f        zero    {}"
regexp_diff match failure
regexp "^  4c:  c008003f        zero    {za0\.s, za1\.s, za2\.d, za3\.d}$"
line   "  4c:   c008003f        zero    {}"
regexp_diff match failure
regexp "^  50:  c008007f        zero    {za0\.h, za1\.s, za3\.d}$"
line   "  50:   c008007f        zero    {}"
regexp_diff match failure
regexp "^  54:  c00800ff        zero    {za}$"
line   "  54:   c00800ff        zero    {}"
regexp_diff match failure
regexp "^  58:  c0080080        zero    {za7\.d}$"
line   "  58:   c0080080        zero    {}"
regexp_diff match failure
regexp "^  5c:  c00800c0        zero    {za6\.d, za7\.d}$"
line   "  5c:   c00800c0        zero    {}"
regexp_diff match failure
regexp "^  60:  c00800e0        zero    {za5\.d, za6\.d, za7\.d}$"
line   "  60:   c00800e0        zero    {}"
regexp_diff match failure
regexp "^  64:  c00800f0        zero    {za4\.d, za5\.d, za6\.d, za7\.d}$"
line   "  64:   c00800f0        zero    {}"
regexp_diff match failure
regexp "^  68:  c00800f8        zero    {za3\.s, za4\.d, za5\.d, za6\.d}$"
line   "  68:   c00800f8        zero    {}"
regexp_diff match failure
regexp "^  6c:  c00800fc        zero    {za2\.s, za3\.s, za4\.d, za5\.d}$"
line   "  6c:   c00800fc        zero    {}"
regexp_diff match failure
regexp "^  70:  c00800fe        zero    {za1\.h, za2\.s, za4\.d}$"
line   "  70:   c00800fe        zero    {}"
regexp_diff match failure
regexp "^  74:  c00800ff        zero    {za}$"
line   "  74:   c00800ff        zero    {}"
regexp_diff match failure
regexp "^  78:  c00800fe        zero    {za1\.h, za2\.s, za4\.d}$"
line   "  78:   c00800fe        zero    {}"
regexp_diff match failure
regexp "^  7c:  c00800fd        zero    {za0\.h, za3\.s, za5\.d}$"
line   "  7c:   c00800fd        zero    {}"
regexp_diff match failure
regexp "^  80:  c00800fb        zero    {za1\.h, za0\.s, za6\.d}$"
line   "  80:   c00800fb        zero    {}"
regexp_diff match failure
regexp "^  84:  c00800f7        zero    {za0\.h, za1\.s, za7\.d}$"
line   "  84:   c00800f7        zero    {}"
regexp_diff match failure
regexp "^  88:  c00800ef        zero    {za1\.h, za2\.s, za0\.d}$"
line   "  88:   c00800ef        zero    {}"
regexp_diff match failure
regexp "^  8c:  c00800df        zero    {za0\.h, za3\.s, za1\.d}$"
line   "  8c:   c00800df        zero    {}"
regexp_diff match failure
regexp "^  90:  c00800bf        zero    {za1\.h, za0\.s, za2\.d}$"
line   "  90:   c00800bf        zero    {}"
regexp_diff match failure
regexp "^  94:  c008007f        zero    {za0\.h, za1\.s, za3\.d}$"
line   "  94:   c008007f        zero    {}"
regexp_diff match failure
regexp "^  98:  c0080055        zero    {za0\.h}$"
line   "  98:   c0080055        zero    {}"
regexp_diff match failure
regexp "^  9c:  c00800aa        zero    {za1\.h}$"
line   "  9c:   c00800aa        zero    {}"
regexp_diff match failure
regexp "^  a0:  c0080011        zero    {za0\.s}$"
line   "  a0:   c0080011        zero    {}"
regexp_diff match failure
regexp "^  a4:  c0080022        zero    {za1\.s}$"
line   "  a4:   c0080022        zero    {}"
regexp_diff match failure
regexp "^  a8:  c0080044        zero    {za2\.s}$"
line   "  a8:   c0080044        zero    {}"
regexp_diff match failure
regexp "^  ac:  c0080088        zero    {za3\.s}$"
line   "  ac:   c0080088        zero    {}"
regexp_diff match failure
regexp "^  b0:  c0080055        zero    {za0\.h}$"
line   "  b0:   c0080055        zero    {}"
regexp_diff match failure
regexp "^  b4:  c0080055        zero    {za0\.h}$"
line   "  b4:   c0080055        zero    {}"
regexp_diff match failure
regexp "^  b8:  c0080055        zero    {za0\.h}$"
line   "  b8:   c0080055        zero    {}"
regexp_diff match failure
regexp "^  bc:  c00800aa        zero    {za1\.h}$"
line   "  bc:   c00800aa        zero    {}"
regexp_diff match failure
regexp "^  c0:  c00800aa        zero    {za1\.h}$"
line   "  c0:   c00800aa        zero    {}"
regexp_diff match failure
regexp "^  c4:  c00800aa        zero    {za1\.h}$"
line   "  c4:   c00800aa        zero    {}"
regexp_diff match failure
regexp "^  c8:  c0080011        zero    {za0\.s}$"
line   "  c8:   c0080011        zero    {}"
regexp_diff match failure
regexp "^  cc:  c0080022        zero    {za1\.s}$"
line   "  cc:   c0080022        zero    {}"
regexp_diff match failure
regexp "^  d0:  c0080044        zero    {za2\.s}$"
line   "  d0:   c0080044        zero    {}"
regexp_diff match failure
regexp "^  d4:  c0080088        zero    {za3\.s}$"
line   "  d4:   c0080088        zero    {}"
regexp_diff match failure
regexp "^  d8:  c00800d5        zero    {za0.h, za7.d}$"
line   "  d8:   c00800d5        zero    {}"
regexp_diff match failure
regexp "^  dc:  c00800ab        zero    {za1.h, za0.d}$"
line   "  dc:   c00800ab        zero    {}"
regexp_diff match failure
regexp "^  e0:  c0080015        zero    {za0.s, za2.d}$"
line   "  e0:   c0080015        zero    {}"
regexp_diff match failure
regexp "^  e4:  c008002a        zero    {za1.s, za3.d}$"
line   "  e4:   c008002a        zero    {}"
regexp_diff match failure
regexp "^  e8:  c0080054        zero    {za2.s, za4.d}$"
line   "  e8:   c0080054        zero    {}"
regexp_diff match failure
regexp "^  ec:  c00800a8        zero    {za3.s, za5.d}$"
line   "  ec:   c00800a8        zero    {}"
regexp_diff match failure
regexp "^  f0:  c00800d5        zero    {za0.h, za7.d}$"
line   "  f0:   c00800d5        zero    {}"
regexp_diff match failure
regexp "^  f4:  c0080015        zero    {za0.s, za2.d}$"
line   "  f4:   c0080015        zero    {}"
FAIL: SME extension (ZERO)


The AArch64 instruction table (aarch64-tbl.h) defines the operand "SME list of
ZA tiles" (SME_list_of_64bit_tiles) as immediate.
During assembly it is correctly encoded as immediate value (imm.value) in
parse_operands.
During disassembly it is first correctly decoded as immediate value (imm.value)
in aarch64_ext_imm called by aarch64_extract_operand, but then erroneously
treated as register number (reg.regno) in aarch64_print_operand.

On AArch64 - being little-endian - the struct aarch64_opnd_info union fields
reg.regno and imm.value share their least-significant bits. On s390 - being
big-endian - they do not.

I will send a patch.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]