aarch64: Treat operand "SME list of ZA tiles" as immediate (PR 31561)

Message ID 20240327164755.2330092-1-jremus@linux.ibm.com
State Committed
Headers
Series aarch64: Treat operand "SME list of ZA tiles" as immediate (PR 31561) |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-arm success Testing passed
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_binutils_check--master-arm success Testing passed

Commit Message

Jens Remus March 27, 2024, 4:47 p.m. UTC
  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.

This resolves the assembler test case "SME extension (ZERO)" to
erroneously fail on s390. 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.

opcodes/
	PR binutils/31561
	* aarch64-opc.c: Treat operand "SME list of ZA tiles" as
	immediate.

Bug: https://sourceware.org/PR31561
Signed-off-by: Jens Remus <jremus@linux.ibm.com>
---
 opcodes/aarch64-opc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Nick Clifton April 9, 2024, 10:33 a.m. UTC | #1
Hi Jens,

> opcodes/
> 	PR binutils/31561
> 	* aarch64-opc.c: Treat operand "SME list of ZA tiles" as
> 	immediate.

Approved - please apply.

Cheers
   Nick
  
Jens Remus April 9, 2024, 3:23 p.m. UTC | #2
Am 09.04.2024 um 12:33 schrieb Nick Clifton:
> Hi Jens,
> 
>> opcodes/
>>     PR binutils/31561
>>     * aarch64-opc.c: Treat operand "SME list of ZA tiles" as
>>     immediate.
> 
> Approved - please apply.
> 
> Cheers
>    Nick
> 

Thank you! Done.

Regards,
Jens
  

Patch

diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c
index e88c616f4a9f..4a7a6ae784b4 100644
--- a/opcodes/aarch64-opc.c
+++ b/opcodes/aarch64-opc.c
@@ -4236,7 +4236,7 @@  aarch64_print_operand (char *buf, size_t size, bfd_vma pc,
       break;
 
     case AARCH64_OPND_SME_list_of_64bit_tiles:
-      print_sme_za_list (buf, size, opnd->reg.regno, styler);
+      print_sme_za_list (buf, size, opnd->imm.value, styler);
       break;
 
     case AARCH64_OPND_SME_ZA_array_off1x4: