From 68a642838267d9971f77f9eb487d32044a499c82 Mon Sep 17 00:00:00 2001 From: Yufeng Zhang Date: Tue, 5 Nov 2013 20:50:18 +0000 Subject: gas/ * config/tc-aarch64.c (parse_operands): Handle AARCH64_OPND_COND1. gas/testsuite/ * gas/aarch64/alias.s: Add tests. * gas/aarch64/alias.d: Update. * gas/aarch64/no-aliases.d: Update. * gas/aarch64/diagnostic.s: Add tests. * gas/aarch64/diagnostic.l: Update. * gas/aarch64/illegal.s: Add tests. * gas/aarch64/illegal.l: Update. include/opcode/ * aarch64.h (enum aarch64_operand_class): Add AARCH64_OPND_CLASS_COND. (enum aarch64_opnd): Add AARCH64_OPND_COND1. opcodes/ * aarch64-dis.c (convert_ubfm_to_lsl): Check for cond != '111x'. (convert_from_csel): Likewise. * aarch64-opc.c (operand_general_constraint_met_p): Handle AARCH64_OPND_CLASS_COND and AARCH64_OPND_COND1. (aarch64_print_operand): Handle AARCH64_OPND_COND1. * aarch64-tbl.h (aarch64_opcode_table): Use COND1 instead of COND for cinc, cset, cinv, csetm and cneg. (AARCH64_OPERANDS): Add entry for AARCH64_OPND_COND1. * aarch64-asm-2.c: Re-generated. * aarch64-dis-2.c: Ditto. * aarch64-opc-2.c: Ditto. --- opcodes/aarch64-opc.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'opcodes/aarch64-opc.c') diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c index 0d16bd6..4a6895c 100644 --- a/opcodes/aarch64-opc.c +++ b/opcodes/aarch64-opc.c @@ -1286,6 +1286,15 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, } break; + case AARCH64_OPND_CLASS_COND: + if (type == AARCH64_OPND_COND1 + && (opnds[idx].cond->value & 0xe) == 0xe) + { + /* Not allow AL or NV. */ + set_syntax_error (mismatch_detail, idx, NULL); + } + break; + case AARCH64_OPND_CLASS_ADDRESS: /* Check writeback. */ switch (opcode->iclass) @@ -2524,6 +2533,7 @@ aarch64_print_operand (char *buf, size_t size, bfd_vma pc, break; case AARCH64_OPND_COND: + case AARCH64_OPND_COND1: snprintf (buf, size, "%s", opnd->cond->names[0]); break; -- cgit v1.1