aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
authorJens Remus <jremus@linux.ibm.com>2024-04-09 17:21:53 +0200
committerJens Remus <jremus@linux.ibm.com>2024-04-09 17:21:53 +0200
commit6f3cf71845e68409724aef1cfef3b5a44beecf53 (patch)
tree3e5a5e54e6d899770b170d92d640ed9bd25c38f6 /opcodes
parent676b98078f9f42cfdaaaec6605f31c5be694dffb (diff)
downloadbinutils-6f3cf71845e68409724aef1cfef3b5a44beecf53.zip
binutils-6f3cf71845e68409724aef1cfef3b5a44beecf53.tar.gz
binutils-6f3cf71845e68409724aef1cfef3b5a44beecf53.tar.bz2
aarch64: Treat operand "SME list of ZA tiles" as immediate (PR 31561)
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> Acked-by: Nick Clifton <nickc@redhat.com>
Diffstat (limited to 'opcodes')
-rw-r--r--opcodes/aarch64-opc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c
index e88c616..4a7a6ae 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: