diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2021-12-02 15:00:57 +0000 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2021-12-02 15:00:57 +0000 |
commit | 6327658ee73502ffb55dfb6b28a20d1dde15a4dc (patch) | |
tree | 13b1c36b6ded6afcde85d45b69971548bb22c37d /opcodes/aarch64-dis-2.c | |
parent | a5e9beead8580777ea4886b06c493a6f79570f93 (diff) | |
download | gdb-6327658ee73502ffb55dfb6b28a20d1dde15a4dc.zip gdb-6327658ee73502ffb55dfb6b28a20d1dde15a4dc.tar.gz gdb-6327658ee73502ffb55dfb6b28a20d1dde15a4dc.tar.bz2 |
aarch64: Add support for +mops
This patch adds support for FEAT_MOPS, an Armv8.8-A extension
that provides memcpy and memset acceleration instructions.
I took the perhaps controversial decision to generate the individual
instruction forms using macros rather than list them out individually.
This becomes useful with a follow-on patch to check that code follows
the correct P/M/E sequence.
[https://developer.arm.com/documentation/ddi0596/2021-09/Base-Instructions?lang=en]
include/
* opcode/aarch64.h (AARCH64_FEATURE_MOPS): New macro.
(AARCH64_ARCH_V8_8): Make armv8.8-a imply AARCH64_FEATURE_MOPS.
(AARCH64_OPND_MOPS_ADDR_Rd): New aarch64_opnd.
(AARCH64_OPND_MOPS_ADDR_Rs): Likewise.
(AARCH64_OPND_MOPS_WB_Rn): Likewise.
opcodes/
* aarch64-asm.h (ins_x0_to_x30): New inserter.
* aarch64-asm.c (aarch64_ins_x0_to_x30): New function.
* aarch64-dis.h (ext_x0_to_x30): New extractor.
* aarch64-dis.c (aarch64_ext_x0_to_x30): New function.
* aarch64-tbl.h (aarch64_feature_mops): New feature set.
(aarch64_feature_mops_memtag): Likewise.
(MOPS, MOPS_MEMTAG, MOPS_INSN, MOPS_MEMTAG_INSN)
(MOPS_CPY_OP1_OP2_PME_INSN, MOPS_CPY_OP1_OP2_INSN, MOPS_CPY_OP1_INSN)
(MOPS_CPY_INSN, MOPS_SET_OP1_OP2_PME_INSN, MOPS_SET_OP1_OP2_INSN)
(MOPS_SET_INSN): New macros.
(aarch64_opcode_table): Add MOPS instructions.
(aarch64_opcode_table): Add entries for AARCH64_OPND_MOPS_ADDR_Rd,
AARCH64_OPND_MOPS_ADDR_Rs and AARCH64_OPND_MOPS_WB_Rn.
* aarch64-opc.c (aarch64_print_operand): Handle
AARCH64_OPND_MOPS_ADDR_Rd, AARCH64_OPND_MOPS_ADDR_Rs and
AARCH64_OPND_MOPS_WB_Rn.
(verify_three_different_regs): New function.
* aarch64-asm-2.c: Regenerate.
* aarch64-dis-2.c: Likewise.
* aarch64-opc-2.c: Likewise.
gas/
* doc/c-aarch64.texi: Document +mops.
* config/tc-aarch64.c (parse_x0_to_x30): New function.
(parse_operands): Handle AARCH64_OPND_MOPS_ADDR_Rd,
AARCH64_OPND_MOPS_ADDR_Rs and AARCH64_OPND_MOPS_WB_Rn.
(aarch64_features): Add "mops".
* testsuite/gas/aarch64/mops.s, testsuite/gas/aarch64/mops.d: New test.
* testsuite/gas/aarch64/mops_invalid.s,
* testsuite/gas/aarch64/mops_invalid.d,
* testsuite/gas/aarch64/mops_invalid.l: Likewise.
Diffstat (limited to 'opcodes/aarch64-dis-2.c')
-rw-r--r-- | opcodes/aarch64-dis-2.c | 1386 |
1 files changed, 1355 insertions, 31 deletions
diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c index f9999ad..70cbf90 100644 --- a/opcodes/aarch64-dis-2.c +++ b/opcodes/aarch64-dis-2.c @@ -2947,11 +2947,187 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx01100100xxxxxxxxxxx1xxxxxxxxxx - stg. */ - return 885; + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0000x1xxxxxxxxxx + cpyfp. */ + return 2511; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1000x1xxxxxxxxxx + cpyfprn. */ + return 2517; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0100x1xxxxxxxxxx + cpyfpwn. */ + return 2514; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1100x1xxxxxxxxxx + cpyfpn. */ + return 2520; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0010x1xxxxxxxxxx + cpyfprt. */ + return 2535; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1010x1xxxxxxxxxx + cpyfprtrn. */ + return 2541; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0110x1xxxxxxxxxx + cpyfprtwn. */ + return 2538; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1110x1xxxxxxxxxx + cpyfprtn. */ + return 2544; + } + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0001x1xxxxxxxxxx + cpyfpwt. */ + return 2523; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1001x1xxxxxxxxxx + cpyfpwtrn. */ + return 2529; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0101x1xxxxxxxxxx + cpyfpwtwn. */ + return 2526; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1101x1xxxxxxxxxx + cpyfpwtn. */ + return 2532; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0011x1xxxxxxxxxx + cpyfpt. */ + return 2547; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1011x1xxxxxxxxxx + cpyfptrn. */ + return 2553; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0111x1xxxxxxxxxx + cpyfptwn. */ + return 2550; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1111x1xxxxxxxxxx + cpyfptn. */ + return 2556; + } + } + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001001xxxxxxxxxx1xxxxxxxxxx + stg. */ + return 885; + } } } else @@ -3054,11 +3230,187 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx01100101xxxxxxxxxxx1xxxxxxxxxx - stzg. */ - return 886; + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0000x1xxxxxxxxxx + cpyfm. */ + return 2512; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1000x1xxxxxxxxxx + cpyfmrn. */ + return 2518; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0100x1xxxxxxxxxx + cpyfmwn. */ + return 2515; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1100x1xxxxxxxxxx + cpyfmn. */ + return 2521; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0010x1xxxxxxxxxx + cpyfmrt. */ + return 2536; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1010x1xxxxxxxxxx + cpyfmrtrn. */ + return 2542; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0110x1xxxxxxxxxx + cpyfmrtwn. */ + return 2539; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1110x1xxxxxxxxxx + cpyfmrtn. */ + return 2545; + } + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0001x1xxxxxxxxxx + cpyfmwt. */ + return 2524; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1001x1xxxxxxxxxx + cpyfmwtrn. */ + return 2530; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0101x1xxxxxxxxxx + cpyfmwtwn. */ + return 2527; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1101x1xxxxxxxxxx + cpyfmwtn. */ + return 2533; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0011x1xxxxxxxxxx + cpyfmt. */ + return 2548; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1011x1xxxxxxxxxx + cpyfmtrn. */ + return 2554; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0111x1xxxxxxxxxx + cpyfmtwn. */ + return 2551; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1111x1xxxxxxxxxx + cpyfmtn. */ + return 2557; + } + } + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001011xxxxxxxxxx1xxxxxxxxxx + stzg. */ + return 886; + } } } else @@ -3195,21 +3547,329 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx01100110xxxxxxxxxxx1xxxxxxxxxx - st2g. */ - return 887; + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx0000x1xxxxxxxxxx + cpyfe. */ + return 2513; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0000x1xxxxxxxxxx + setp. */ + return 2607; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx1000x1xxxxxxxxxx + cpyfern. */ + return 2519; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx1000x1xxxxxxxxxx + sete. */ + return 2609; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx0100x1xxxxxxxxxx + cpyfewn. */ + return 2516; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0100x1xxxxxxxxxx + setm. */ + return 2608; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0110011x0xxxxx1100x1xxxxxxxxxx + cpyfen. */ + return 2522; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx0010x1xxxxxxxxxx + cpyfert. */ + return 2537; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0010x1xxxxxxxxxx + setpn. */ + return 2613; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx1010x1xxxxxxxxxx + cpyfertrn. */ + return 2543; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx1010x1xxxxxxxxxx + seten. */ + return 2615; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx0110x1xxxxxxxxxx + cpyfertwn. */ + return 2540; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0110x1xxxxxxxxxx + setmn. */ + return 2614; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0110011x0xxxxx1110x1xxxxxxxxxx + cpyfertn. */ + return 2546; + } + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx0001x1xxxxxxxxxx + cpyfewt. */ + return 2525; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0001x1xxxxxxxxxx + setpt. */ + return 2610; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx1001x1xxxxxxxxxx + cpyfewtrn. */ + return 2531; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx1001x1xxxxxxxxxx + setet. */ + return 2612; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx0101x1xxxxxxxxxx + cpyfewtwn. */ + return 2528; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0101x1xxxxxxxxxx + setmt. */ + return 2611; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0110011x0xxxxx1101x1xxxxxxxxxx + cpyfewtn. */ + return 2534; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx0011x1xxxxxxxxxx + cpyfet. */ + return 2549; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0011x1xxxxxxxxxx + setptn. */ + return 2616; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx1011x1xxxxxxxxxx + cpyfetrn. */ + return 2555; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx1011x1xxxxxxxxxx + setetn. */ + return 2618; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx0111x1xxxxxxxxxx + cpyfetwn. */ + return 2552; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0111x1xxxxxxxxxx + setmtn. */ + return 2617; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0110011x0xxxxx1111x1xxxxxxxxxx + cpyfetn. */ + return 2558; + } + } + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx01100111xxxxxxxxxxx1xxxxxxxxxx - stz2g. */ - return 888; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001101xxxxxxxxxx1xxxxxxxxxx + st2g. */ + return 887; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001111xxxxxxxxxx1xxxxxxxxxx + stz2g. */ + return 888; + } } } } @@ -16812,19 +17472,679 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 22) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11101x0xxxxxxxxxxxxxxxxxxxxxx - str. */ - return 892; + if (((word >> 29) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0000xxxxxxxxxxxx + cpyp. */ + return 2559; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0000xxxxxxxxxxxx + cpye. */ + return 2561; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1000xxxxxxxxxxxx + cpyprn. */ + return 2565; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1000xxxxxxxxxxxx + cpyern. */ + return 2567; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0100xxxxxxxxxxxx + cpypwn. */ + return 2562; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0100xxxxxxxxxxxx + cpyewn. */ + return 2564; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1100xxxxxxxxxxxx + cpypn. */ + return 2568; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1100xxxxxxxxxxxx + cpyen. */ + return 2570; + } + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0010xxxxxxxxxxxx + cpyprt. */ + return 2583; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0010xxxxxxxxxxxx + cpyert. */ + return 2585; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1010xxxxxxxxxxxx + cpyprtrn. */ + return 2589; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1010xxxxxxxxxxxx + cpyertrn. */ + return 2591; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0110xxxxxxxxxxxx + cpyprtwn. */ + return 2586; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0110xxxxxxxxxxxx + cpyertwn. */ + return 2588; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1110xxxxxxxxxxxx + cpyprtn. */ + return 2592; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1110xxxxxxxxxxxx + cpyertn. */ + return 2594; + } + } + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0001xxxxxxxxxxxx + cpypwt. */ + return 2571; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0001xxxxxxxxxxxx + cpyewt. */ + return 2573; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1001xxxxxxxxxxxx + cpypwtrn. */ + return 2577; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1001xxxxxxxxxxxx + cpyewtrn. */ + return 2579; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0101xxxxxxxxxxxx + cpypwtwn. */ + return 2574; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0101xxxxxxxxxxxx + cpyewtwn. */ + return 2576; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1101xxxxxxxxxxxx + cpypwtn. */ + return 2580; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1101xxxxxxxxxxxx + cpyewtn. */ + return 2582; + } + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0011xxxxxxxxxxxx + cpypt. */ + return 2595; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0011xxxxxxxxxxxx + cpyet. */ + return 2597; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1011xxxxxxxxxxxx + cpyptrn. */ + return 2601; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1011xxxxxxxxxxxx + cpyetrn. */ + return 2603; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0111xxxxxxxxxxxx + cpyptwn. */ + return 2598; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0111xxxxxxxxxxxx + cpyetwn. */ + return 2600; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1111xxxxxxxxxxxx + cpyptn. */ + return 2604; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1111xxxxxxxxxxxx + cpyetn. */ + return 2606; + } + } + } + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx111101x0xxxxxxxxxxxxxxxxxxxxxx + str. */ + return 892; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11101x1xxxxxxxxxxxxxxxxxxxxxx - ldr. */ - return 893; + if (((word >> 29) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0000xxxxxxxxxxxx + cpym. */ + return 2560; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0000xxxxxxxxxxxx + setgp. */ + return 2619; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx1000xxxxxxxxxxxx + cpymrn. */ + return 2566; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx1000xxxxxxxxxxxx + setge. */ + return 2621; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0100xxxxxxxxxxxx + cpymwn. */ + return 2563; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0100xxxxxxxxxxxx + setgm. */ + return 2620; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011101x1xxxxxx1100xxxxxxxxxxxx + cpymn. */ + return 2569; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0010xxxxxxxxxxxx + cpymrt. */ + return 2584; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0010xxxxxxxxxxxx + setgpn. */ + return 2625; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx1010xxxxxxxxxxxx + cpymrtrn. */ + return 2590; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx1010xxxxxxxxxxxx + setgen. */ + return 2627; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0110xxxxxxxxxxxx + cpymrtwn. */ + return 2587; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0110xxxxxxxxxxxx + setgmn. */ + return 2626; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011101x1xxxxxx1110xxxxxxxxxxxx + cpymrtn. */ + return 2593; + } + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0001xxxxxxxxxxxx + cpymwt. */ + return 2572; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0001xxxxxxxxxxxx + setgpt. */ + return 2622; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx1001xxxxxxxxxxxx + cpymwtrn. */ + return 2578; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx1001xxxxxxxxxxxx + setget. */ + return 2624; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0101xxxxxxxxxxxx + cpymwtwn. */ + return 2575; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0101xxxxxxxxxxxx + setgmt. */ + return 2623; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011101x1xxxxxx1101xxxxxxxxxxxx + cpymwtn. */ + return 2581; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0011xxxxxxxxxxxx + cpymt. */ + return 2596; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0011xxxxxxxxxxxx + setgptn. */ + return 2628; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx1011xxxxxxxxxxxx + cpymtrn. */ + return 2602; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx1011xxxxxxxxxxxx + setgetn. */ + return 2630; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0111xxxxxxxxxxxx + cpymtwn. */ + return 2599; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0111xxxxxxxxxxxx + setgmtn. */ + return 2629; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011101x1xxxxxx1111xxxxxxxxxxxx + cpymtn. */ + return 2605; + } + } + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx111101x1xxxxxxxxxxxxxxxxxxxxxx + ldr. */ + return 893; + } } } } @@ -24638,6 +25958,10 @@ aarch64_extract_operand (const aarch64_operand *self, return aarch64_ext_sme_sm_za (self, info, code, inst, errors); case 220: return aarch64_ext_sme_pred_reg_with_index (self, info, code, inst, errors); + case 223: + case 224: + case 225: + return aarch64_ext_x0_to_x30 (self, info, code, inst, errors); default: assert (0); abort (); } } |