diff options
Diffstat (limited to 'opcodes/aarch64-dis-2.c')
-rw-r--r-- | opcodes/aarch64-dis-2.c | 2010 |
1 files changed, 1211 insertions, 799 deletions
diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c index d327422..d16a43b 100644 --- a/opcodes/aarch64-dis-2.c +++ b/opcodes/aarch64-dis-2.c @@ -1149,21 +1149,43 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 4) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) + if (((word >> 29) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x00000101xxxxxxxxxxxxxxxx0xxxx - sumopa. */ - return 2424; + if (((word >> 3) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx000000101xxxxxxxxxxxxxxxx00xxx + fmopa. */ + return 3462; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx000000101xxxxxxxxxxxxxxxx01xxx + fmopa. */ + return 3461; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x00000101xxxxxxxxxxxxxxxx0xxxx - st1w. */ - return 2453; + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000101xxxxxxxxxxxxxxxx0xxxx + sumopa. */ + return 2424; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1100000101xxxxxxxxxxxxxxxx0xxxx + st1w. */ + return 2453; + } } } else @@ -1427,13 +1449,13 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 29) & 0x1) == 0) { - if (((word >> 3) & 0x1) == 0) + if (((word >> 4) & 0x1) == 0) { - if (((word >> 4) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 2) & 0x1) == 0) { - if (((word >> 2) & 0x1) == 0) + if (((word >> 3) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 @@ -1445,54 +1467,109 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx0000010000xxxxxxxxxxxxxxx001xx - usmlall. */ - return 2932; + xx0000010000xxxxxxxxxxxxxxx010xx + smlsll. */ + return 2743; } } else { - if (((word >> 5) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000010000xxxxxxxxxxxxxxx0x1xx + usmlall. */ + return 2932; + } + } + else + { + if (((word >> 5) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) { - if (((word >> 15) & 0x1) == 0) + if (((word >> 3) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx0xxxxxxxxx000xxx - smlall. */ - return 2728; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000010001xxxx0xx0xxxxxx000xxx + smlall. */ + return 2728; + } + else + { + if (((word >> 6) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000010001xxxx1xx0xxxxx0000xxx + smlall. */ + return 2729; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000010001xxxx1xx0xxxxx1000xxx + fmlall. */ + return 3455; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx1xxxxxxxxx000xxx - smlall. */ - return 2729; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000010001xxxx0xx0xxxxxx001xxx + smlsll. */ + return 2744; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000010001xxxx1xx0xxxxxx001xxx + smlsll. */ + return 2745; + } } } else { - if (((word >> 15) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx0xxxxxxxxx100xxx - usmlall. */ - return 2933; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx1xxxxxxxxx100xxx - usmlall. */ - return 2934; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000010001xxxxxxx1xxxxxx00xxxx + fdot. */ + return 3440; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000010001xxxx0xxxxxxxxx10xxxx + usmlall. */ + return 2933; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000010001xxxx1xxxxxxxxx10xxxx + usmlall. */ + return 2934; } } } - else + } + else + { + if (((word >> 3) & 0x1) == 0) { if (((word >> 20) & 0x1) == 0) { @@ -1555,39 +1632,6 @@ aarch64_opcode_lookup_1 (uint32_t word) } } } - } - else - { - if (((word >> 4) & 0x1) == 0) - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010000xxxxxxxxxxxxxxx01xxx - smlsll. */ - return 2743; - } - else - { - if (((word >> 15) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx0xxxxxxxxxx01xxx - smlsll. */ - return 2744; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx1xxxxxxxxxx01xxx - smlsll. */ - return 2745; - } - } - } else { if (((word >> 20) & 0x1) == 0) @@ -1818,23 +1862,23 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 3) & 0x1) == 0) + if (((word >> 4) & 0x1) == 0) { - if (((word >> 4) & 0x1) == 0) + if (((word >> 29) & 0x1) == 0) { - if (((word >> 29) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0000001100xxxxxxxxxxxxxxxx00xxx - bfmopa. */ - return 2411; - } - else + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000001100xxxxxxxxxxxxxxxx0xxxx + bfmopa. */ + return 2411; + } + else + { + if (((word >> 12) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 3) & 0x1) == 0) { if (((word >> 20) & 0x1) == 0) { @@ -1846,21 +1890,32 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 15) & 0x1) == 0) + if (((word >> 5) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000011001xxxx0xx0xxxxxxx00xxx - smlall. */ - return 2965; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011001xxxx0xx0xxxxxx000xxx + smlall. */ + return 2965; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011001xxxx1xx0xxxxxx000xxx + smlall. */ + return 2966; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10000011001xxxx1xx0xxxxxxx00xxx - smlall. */ - return 2966; + x10000011001xxxxxxx0xxxxxx100xxx + fmlall. */ + return 3454; } } } @@ -1870,9 +1925,9 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10000011000xxxxxxx1xxxxxxx00xxx - fmlal. */ - return 2568; + x10000011000xxxxxxx0xxxxxxx01xxx + smlsll. */ + return 2967; } else { @@ -1880,23 +1935,100 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10000011001xxxx0xx1xxxxxxx00xxx - fmlal. */ - return 2569; + x10000011001xxxx0xx0xxxxxxx01xxx + smlsll. */ + return 2968; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10000011001xxxx1xx1xxxxxxx00xxx - fmlal. */ - return 2570; + x10000011001xxxx1xx0xxxxxxx01xxx + smlsll. */ + return 2969; + } + } + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 3) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011000xxxxxxx1xxxxxxx00xxx + fmlal. */ + return 2568; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011000xxxxxxx1xxxxxxx01xxx + fmlsl. */ + return 2582; + } + } + else + { + if (((word >> 5) & 0x1) == 0) + { + if (((word >> 3) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011001xxxx0xx1xxxxxx000xxx + fmlal. */ + return 2569; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011001xxxx1xx1xxxxxx000xxx + fmlal. */ + return 2570; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011001xxxx0xx1xxxxxx001xxx + fmlsl. */ + return 2583; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011001xxxx1xx1xxxxxx001xxx + fmlsl. */ + return 2584; + } } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011001xxxxxxx1xxxxxx10xxxx + fmlal. */ + return 3447; + } } } } - else + } + else + { + if (((word >> 3) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 @@ -1904,22 +2036,33 @@ aarch64_opcode_lookup_1 (uint32_t word) usmopa. */ return 2432; } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx100001100xxxxxxxxxxxxxxxx01xxx + umopa. */ + return 2914; + } } - else + } + else + { + if (((word >> 29) & 0x1) == 0) { - if (((word >> 29) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0000001100xxxxxxxxxxxxxxxx10xxx - bfmops. */ - return 2412; - } - else + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000001100xxxxxxxxxxxxxxxx1xxxx + bfmops. */ + return 2412; + } + else + { + if (((word >> 12) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 3) & 0x1) == 0) { if (((word >> 20) & 0x1) == 0) { @@ -1955,9 +2098,9 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10000011000xxxxxxx1xxxxxxx10xxx - bfmlal. */ - return 2510; + x10000011000xxxxxxx0xxxxxxx11xxx + umlsll. */ + return 2976; } else { @@ -1965,121 +2108,157 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10000011001xxxx0xx1xxxxxxx10xxx - bfmlal. */ - return 2511; + x10000011001xxxx0xx0xxxxxxx11xxx + umlsll. */ + return 2977; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10000011001xxxx1xx1xxxxxxx10xxx - bfmlal. */ - return 2512; + x10000011001xxxx1xx0xxxxxxx11xxx + umlsll. */ + return 2978; } } } } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx100001100xxxxxxxxxxxxxxxx10xxx - usmops. */ - return 2434; - } - } - } - else - { - if (((word >> 4) & 0x1) == 0) - { - if (((word >> 29) & 0x1) == 0) - { - if (((word >> 12) & 0x1) == 0) + else { if (((word >> 20) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000011000xxxxxxx0xxxxxxx01xxx - smlsll. */ - return 2967; - } - else - { - if (((word >> 15) & 0x1) == 0) + if (((word >> 3) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx0000011001xxxx0xx0xxxxxxx01xxx - smlsll. */ - return 2968; + x10000011000xxxxxxx1xxxxxxx10xxx + bfmlal. */ + return 2510; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx0000011001xxxx1xx0xxxxxxx01xxx - smlsll. */ - return 2969; + x10000011000xxxxxxx1xxxxxxx11xxx + bfmlsl. */ + return 2518; } } - } - else - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000011000xxxxxxx1xxxxxxx01xxx - fmlsl. */ - return 2582; - } else { - if (((word >> 15) & 0x1) == 0) + if (((word >> 5) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000011001xxxx0xx1xxxxxxx01xxx - fmlsl. */ - return 2583; + if (((word >> 3) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011001xxxx0xx1xxxxxx010xxx + bfmlal. */ + return 2511; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011001xxxx1xx1xxxxxx010xxx + bfmlal. */ + return 2512; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011001xxxx0xx1xxxxxx011xxx + bfmlsl. */ + return 2519; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011001xxxx1xx1xxxxxx011xxx + bfmlsl. */ + return 2520; + } + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx0000011001xxxx1xx1xxxxxxx01xxx - fmlsl. */ - return 2584; + x10000011001xxxxxxx1xxxxxx11xxxx + fmlal. */ + return 3446; } } } } + } + else + { + if (((word >> 3) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx100001100xxxxxxxxxxxxxxxx10xxx + usmops. */ + return 2434; + } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx100001100xxxxxxxxxxxxxxxx01xxx - umopa. */ - return 2914; + xx100001100xxxxxxxxxxxxxxxx11xxx + umops. */ + return 2915; } } - else + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 3) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) { if (((word >> 29) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000010100xxxxxxxxxxxxxxxx0xxx + fmlall. */ + return 3453; + } + else + { + if (((word >> 13) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000011000xxxxxxx0xxxxxxx11xxx - umlsll. */ - return 2976; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000010100xxxx000xxxxxxxxx0xxx + ld1b. */ + return 2603; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000010100xxxx100xxxxxxxxx0xxx + ld1b. */ + return 2604; + } } else { @@ -2087,29 +2266,40 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx0000011001xxxx0xx0xxxxxxx11xxx - umlsll. */ - return 2977; + xx1000010100xxxx010xxxxxxxxx0xxx + ld1w. */ + return 2627; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx0000011001xxxx1xx0xxxxxxx11xxx - umlsll. */ - return 2978; + xx1000010100xxxx110xxxxxxxxx0xxx + ld1w. */ + return 2628; } } } else { - if (((word >> 20) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000011000xxxxxxx1xxxxxxx11xxx - bfmlsl. */ - return 2518; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000010100xxxx001xxxxxxxxx0xxx + ld1h. */ + return 2619; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000010100xxxx101xxxxxxxxx0xxx + ld1h. */ + return 2620; + } } else { @@ -2117,89 +2307,31 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx0000011001xxxx0xx1xxxxxxx11xxx - bfmlsl. */ - return 2519; + xx1000010100xxxx011xxxxxxxxx0xxx + ld1d. */ + return 2611; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx0000011001xxxx1xx1xxxxxxx11xxx - bfmlsl. */ - return 2520; + xx1000010100xxxx111xxxxxxxxx0xxx + ld1d. */ + return 2612; } } } } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx100001100xxxxxxxxxxxxxxxx11xxx - umops. */ - return 2915; - } } - } - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - if (((word >> 3) & 0x1) == 0) - { - if (((word >> 15) & 0x1) == 0) + else { - if (((word >> 20) & 0x1) == 0) - { - if (((word >> 13) & 0x1) == 0) - { - if (((word >> 14) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx000010100xxxx000xxxxxxxxx0xxx - ld1b. */ - return 2603; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx000010100xxxx010xxxxxxxxx0xxx - ld1w. */ - return 2627; - } - } - else - { - if (((word >> 14) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx000010100xxxx001xxxxxxxxx0xxx - ld1h. */ - return 2619; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx000010100xxxx011xxxxxxxxx0xxx - ld1d. */ - return 2611; - } - } - } - else + if (((word >> 4) & 0x1) == 0) { - if (((word >> 4) & 0x1) == 0) + if (((word >> 5) & 0x1) == 0) { - if (((word >> 5) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 @@ -2211,190 +2343,146 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000010101xxxx0xx1xxxxxx000xxx - sdot. */ - return 2697; + xxx000010101xxxx1xx0xxxxxx000xxx + fmla. */ + return 2563; } } else { - if (((word >> 12) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000010101xxxx0xx0xxxxxx100xxx - svdot. */ - return 2856; + xxx000010101xxxx0xx1xxxxxx000xxx + sdot. */ + return 2697; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000010101xxxx0xx1xxxxxx100xxx + xxx000010101xxxx1xx1xxxxxx000xxx sdot. */ - return 2703; + return 2698; } } } else { - if (((word >> 5) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000010101xxxx0xx0xxxxxx010xxx - fmls. */ - return 2576; + xxx000010101xxxx0xx0xxxxxx100xxx + svdot. */ + return 2856; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000010101xxxx0xx1xxxxxx010xxx - udot. */ - return 2862; + xxx000010101xxxx1xx0xxxxxx100xxx + svdot. */ + return 2857; } } else { - if (((word >> 12) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000010101xxxx0xx0xxxxxx110xxx - uvdot. */ - return 2943; + xxx000010101xxxx0xx1xxxxxx100xxx + sdot. */ + return 2703; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000010101xxxx0xx1xxxxxx110xxx - udot. */ - return 2868; + xxx000010101xxxx1xx1xxxxxx100xxx + sdot. */ + return 2704; } } } } - } - else - { - if (((word >> 20) & 0x1) == 0) - { - if (((word >> 13) & 0x1) == 0) - { - if (((word >> 14) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx000010100xxxx100xxxxxxxxx0xxx - ld1b. */ - return 2604; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx000010100xxxx110xxxxxxxxx0xxx - ld1w. */ - return 2628; - } - } - else - { - if (((word >> 14) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx000010100xxxx101xxxxxxxxx0xxx - ld1h. */ - return 2620; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx000010100xxxx111xxxxxxxxx0xxx - ld1d. */ - return 2612; - } - } - } else { - if (((word >> 4) & 0x1) == 0) + if (((word >> 5) & 0x1) == 0) { - if (((word >> 5) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000010101xxxx1xx0xxxxxx000xxx - fmla. */ - return 2563; + xxx000010101xxxx0xx0xxxxxx010xxx + fmls. */ + return 2576; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000010101xxxx1xx1xxxxxx000xxx - sdot. */ - return 2698; + xxx000010101xxxx1xx0xxxxxx010xxx + fmls. */ + return 2577; } } else { - if (((word >> 12) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000010101xxxx1xx0xxxxxx100xxx - svdot. */ - return 2857; + xxx000010101xxxx0xx1xxxxxx010xxx + udot. */ + return 2862; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000010101xxxx1xx1xxxxxx100xxx - sdot. */ - return 2704; + xxx000010101xxxx1xx1xxxxxx010xxx + udot. */ + return 2863; } } } else { - if (((word >> 5) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000010101xxxx1xx0xxxxxx010xxx - fmls. */ - return 2577; + xxx000010101xxxx0xx0xxxxxx110xxx + uvdot. */ + return 2943; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000010101xxxx1xx1xxxxxx010xxx - udot. */ - return 2863; + xxx000010101xxxx1xx0xxxxxx110xxx + uvdot. */ + return 2944; } } else { - if (((word >> 12) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000010101xxxx1xx0xxxxxx110xxx - uvdot. */ - return 2944; + xxx000010101xxxx0xx1xxxxxx110xxx + udot. */ + return 2868; } else { @@ -2509,11 +2597,22 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx000010101xxxx0xxxxxxxxx111xxx - sudot. */ - return 2844; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx000010101xxxx0xx0xxxxxx111xxx + fdot. */ + return 3433; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx000010101xxxx0xx1xxxxxx111xxx + sudot. */ + return 2844; + } } } } @@ -2567,11 +2666,22 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 5) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx000010101xxxx1xxxxxxxxx001xxx - fdot. */ - return 2541; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx000010101xxxx1xx0xxxxxx001xxx + fdot. */ + return 3434; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx000010101xxxx1xx1xxxxxx001xxx + fdot. */ + return 2541; + } } else { @@ -2633,93 +2743,104 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 29) & 0x1) == 0) { - if (((word >> 3) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 15) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx000001110xxxxx0xx0xxxxxxx00xxx - fmla. */ - return 2980; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx000001110xxxxx1xx0xxxxxxx00xxx - fmla. */ - return 2981; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011100xxxxxxx0xxxxxxx0xxxx + fmlal. */ + return 3445; } else { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000011100xxxxxxx1xxxxxxx00xxx - smlal. */ - return 2719; - } - else + if (((word >> 5) & 0x1) == 0) { - if (((word >> 15) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000011101xxxx0xx1xxxxxxx00xxx - smlal. */ - return 2720; + if (((word >> 3) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011101xxxx0xx00xxxxx000xxx + fmla. */ + return 2980; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011101xxxx1xx00xxxxx000xxx + fmla. */ + return 2981; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011101xxxx0xx00xxxxx001xxx + sdot. */ + return 2962; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011101xxxx1xx00xxxxx001xxx + sdot. */ + return 2963; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000011101xxxx1xx1xxxxxxx00xxx - smlal. */ - return 2721; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011101xxxx0xx01xxxxx00xxxx + fvdotb. */ + return 3464; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011101xxxx1xx01xxxxx00xxxx + svdot. */ + return 2970; + } } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011101xxxxxxx0xxxxxx10xxxx + fdot. */ + return 3439; + } } } else { - if (((word >> 12) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) - { - if (((word >> 15) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx000001110xxxxx0xx00xxxxxx01xxx - sdot. */ - return 2962; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx000001110xxxxx1xx00xxxxxx01xxx - sdot. */ - return 2963; - } - } - else + if (((word >> 3) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx000001110xxxxxxxx01xxxxxx01xxx - svdot. */ - return 2970; + xx0000011100xxxxxxx1xxxxxxx00xxx + smlal. */ + return 2719; } - } - else - { - if (((word >> 20) & 0x1) == 0) + else { /* 33222222222211111111110000000000 10987654321098765432109876543210 @@ -2727,25 +2848,58 @@ aarch64_opcode_lookup_1 (uint32_t word) smlsl. */ return 2735; } - else + } + else + { + if (((word >> 5) & 0x1) == 0) { - if (((word >> 15) & 0x1) == 0) + if (((word >> 3) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000011101xxxx0xx1xxxxxxx01xxx - smlsl. */ - return 2736; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011101xxxx0xx1xxxxxx000xxx + smlal. */ + return 2720; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011101xxxx1xx1xxxxxx000xxx + smlal. */ + return 2721; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000011101xxxx1xx1xxxxxxx01xxx - smlsl. */ - return 2737; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011101xxxx0xx1xxxxxx001xxx + smlsl. */ + return 2736; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011101xxxx1xx1xxxxxx001xxx + smlsl. */ + return 2737; + } } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011101xxxxxxx1xxxxxx10xxxx + fvdot. */ + return 3463; + } } } } @@ -2771,30 +2925,74 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 3) & 0x1) == 0) + if (((word >> 29) & 0x1) == 0) { - if (((word >> 29) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 3) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx000001110xxxxx0xx00xxxxxx10xxx + fmls. */ + return 2982; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx000001110xxxxx1xx00xxxxxx10xxx + fmls. */ + return 2983; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx000001110xxxxx0xx00xxxxxx11xxx + udot. */ + return 2971; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx000001110xxxxx1xx00xxxxxx11xxx + udot. */ + return 2972; + } + } + } + else { if (((word >> 15) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx000001110xxxxx0xx0xxxxxxx10xxx - fmls. */ - return 2982; + xx000001110xxxxx0xx01xxxxxx1xxxx + fvdott. */ + return 3465; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx000001110xxxxx1xx0xxxxxxx10xxx - fmls. */ - return 2983; + xx000001110xxxxx1xx01xxxxxx1xxxx + uvdot. */ + return 2979; } } - else + } + else + { + if (((word >> 3) & 0x1) == 0) { if (((word >> 20) & 0x1) == 0) { @@ -2824,79 +3022,46 @@ aarch64_opcode_lookup_1 (uint32_t word) } } } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx100001110xxxxxxxxxxxxxxxx10xxx - usmops. */ - return 2435; - } - } - else - { - if (((word >> 12) & 0x1) == 0) - { - if (((word >> 11) & 0x1) == 0) - { - if (((word >> 15) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx00001110xxxxx0xx00xxxxxx11xxx - udot. */ - return 2971; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx00001110xxxxx1xx00xxxxxx11xxx - udot. */ - return 2972; - } - } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx00001110xxxxxxxx01xxxxxx11xxx - uvdot. */ - return 2979; - } - } - else - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx000011100xxxxxxx1xxxxxxx11xxx - umlsl. */ - return 2898; - } - else - { - if (((word >> 15) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx000011101xxxx0xx1xxxxxxx11xxx + xx0000011100xxxxxxx1xxxxxxx11xxx umlsl. */ - return 2899; + return 2898; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx000011101xxxx1xx1xxxxxxx11xxx - umlsl. */ - return 2900; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011101xxxx0xx1xxxxxxx11xxx + umlsl. */ + return 2899; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000011101xxxx1xx1xxxxxxx11xxx + umlsl. */ + return 2900; + } } } } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx100001110xxxxxxxxxxxxxxxx1xxxx + usmops. */ + return 2435; + } } } } @@ -2938,86 +3103,130 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 12) & 0x1) == 0) { - if (((word >> 2) & 0x1) == 0) + if (((word >> 1) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 2) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000010x10xxxx0xx000xxxxx000xx - smlall. */ - return 2731; + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010x10xxxx0xx000xxxxx0000x + smlall. */ + return 2731; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010x11xxxx0xx000xxxxx0000x + smlall. */ + return 2732; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000010x11xxxx0xx000xxxxx000xx - smlall. */ - return 2732; + if (((word >> 5) & 0x1) == 0) + { + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011x1xxxx00xx000xxxx00000x + smlall. */ + return 2733; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011x1xxxx10xx000xxxx00000x + smlall. */ + return 2734; + } + } + else + { + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011x1xxxx00xx000xxxx10000x + fmlall. */ + return 3459; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011x1xxxx10xx000xxxx10000x + fmlall. */ + return 3460; + } + } } } else { - if (((word >> 16) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000011x1xxxx00xx000xxxxx000xx - smlall. */ - return 2733; + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010x10xxxx0xx000xxxxx0010x + usmlall. */ + return 2936; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010x11xxxx0xx000xxxxx0010x + usmlall. */ + return 2937; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000011x1xxxx10xx000xxxxx000xx - smlall. */ - return 2734; + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011x1xxxx00xx000xxxxx0010x + usmlall. */ + return 2938; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011x1xxxx10xx000xxxxx0010x + usmlall. */ + return 2939; + } } } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000010x10xxxx0xx000xxxxx001xx - usmlall. */ - return 2936; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000010x11xxxx0xx000xxxxx001xx - usmlall. */ - return 2937; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001xx10xxxx0xx000xxxxx00x1x + fmlall. */ + return 3457; } else { - if (((word >> 16) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000011x1xxxx00xx000xxxxx001xx - usmlall. */ - return 2938; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000011x1xxxx10xx000xxxxx001xx - usmlall. */ - return 2939; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001xx11xxxx0xx000xxxxx00x1x + fmlall. */ + return 3458; } } } @@ -3044,48 +3253,23 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 16) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000011x1xxxx00xx100xxxxx00xxx - fdot. */ - return 2544; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000011x1xxxx10xx100xxxxx00xxx - fdot. */ - return 2545; - } - } - } - } - else - { - if (((word >> 12) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) + if (((word >> 5) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 16) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10000010010xxxx0xx010xxxxx00xxx - fmlal. */ - return 2572; + x10000011x1xxxx00xx100xxxx000xxx + fdot. */ + return 2544; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10000010011xxxx0xx010xxxxx00xxx - fmlal. */ - return 2573; + x10000011x1xxxx10xx100xxxx000xxx + fdot. */ + return 2545; } } else @@ -3094,61 +3278,152 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1000001101xxxx00xx010xxxxx00xxx - fmlal. */ - return 2574; + x10000011x1xxxx00xx100xxxx100xxx + fdot. */ + return 3443; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1000001101xxxx10xx010xxxxx00xxx - fmlal. */ - return 2575; + x10000011x1xxxx10xx100xxxx100xxx + fdot. */ + return 3444; } } } - else + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 2) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000010110xxxx0xx010xxxxx00xxx - smlal. */ - return 2723; + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010010xxxx0xx010xxxxx000xx + fmlal. */ + return 2572; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010011xxxx0xx010xxxxx000xx + fmlal. */ + return 2573; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000010111xxxx0xx010xxxxx00xxx - smlal. */ - return 2724; + if (((word >> 5) & 0x1) == 0) + { + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001101xxxx00xx010xxxx0000xx + fmlal. */ + return 2574; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001101xxxx10xx010xxxx0000xx + fmlal. */ + return 2575; + } + } + else + { + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001101xxxx00xx010xxxx1000xx + fmlal. */ + return 3451; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001101xxxx10xx010xxxx1000xx + fmlal. */ + return 3452; + } + } } } else { - if (((word >> 16) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1000001111xxxx00xx010xxxxx00xxx - smlal. */ - return 2725; + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010110xxxx0xx010xxxxx000xx + smlal. */ + return 2723; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010111xxxx0xx010xxxxx000xx + smlal. */ + return 2724; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1000001111xxxx10xx010xxxxx00xxx - smlal. */ - return 2726; + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001111xxxx00xx010xxxxx000xx + smlal. */ + return 2725; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001111xxxx10xx010xxxxx000xx + smlal. */ + return 2726; + } } } } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001xx10xxxx0xx010xxxxx001xx + fmlal. */ + return 3449; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001xx11xxxx0xx010xxxxx001xx + fmlal. */ + return 3450; + } + } } else { @@ -3201,11 +3476,22 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 2) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1000001xx1xxxxx0xx001xxxxx000xx - smlall. */ - return 2730; + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001xx10xxxx0xx001xxxxx000xx + smlall. */ + return 2730; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001xx11xxxx0xx001xxxxx000xx + fmlall. */ + return 3456; + } } else { @@ -3262,40 +3548,73 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 12) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1000001x01xxxxx0xx011xxxxx00xxx - fmlal. */ - return 2571; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001x010xxxx0xx011xxxxx00xxx + fmlal. */ + return 2571; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001x110xxxx0xx011xxxxx00xxx + smlal. */ + return 2722; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1000001x11xxxxx0xx011xxxxx00xxx - smlal. */ - return 2722; + x1000001xx11xxxx0xx011xxxxx00xxx + fmlal. */ + return 3448; } } else { if (((word >> 16) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1000001xx1xxxx00xx111xxxxx00xxx - fadd. */ - return 2530; + if (((word >> 18) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001xx1xx0x00xx111xxxxx00xxx + fadd. */ + return 2530; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001xx1xx1x00xx111xxxxx00xxx + fadd. */ + return 3397; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1000001xx1xxxx10xx111xxxxx00xxx - fadd. */ - return 2531; + if (((word >> 18) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001xx1xx0x10xx111xxxxx00xxx + fadd. */ + return 2531; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001xx1xx1x10xx111xxxxx00xxx + fadd. */ + return 3398; + } } } } @@ -3393,21 +3712,43 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 16) & 0x1) == 0) + if (((word >> 5) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000011x1xxxx00xx100xxxxx10xxx - bfdot. */ - return 2508; + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011x1xxxx00xx100xxxx010xxx + bfdot. */ + return 2508; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011x1xxxx10xx100xxxx010xxx + bfdot. */ + return 2509; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000011x1xxxx10xx100xxxxx10xxx - bfdot. */ - return 2509; + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011x1xxxx00xx100xxxx110xxx + fdot. */ + return 3437; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011x1xxxx10xx100xxxx110xxx + fdot. */ + return 3438; + } } } } @@ -3648,42 +3989,64 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 11) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000010x10xxxx0xxx00xxxxx01xxx - smlsll. */ - return 2747; + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010x10xxxx0xx000xxxxx01xxx + smlsll. */ + return 2747; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010x11xxxx0xx000xxxxx01xxx + smlsll. */ + return 2748; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000010x11xxxx0xxx00xxxxx01xxx - smlsll. */ - return 2748; + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011x1xxxx00xx000xxxxx01xxx + smlsll. */ + return 2749; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011x1xxxx10xx000xxxxx01xxx + smlsll. */ + return 2750; + } } } else { - if (((word >> 16) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10000011x1xxxx00xxx00xxxxx01xxx - smlsll. */ - return 2749; + x1000001xx10xxxx0xx100xxxxx01xxx + fdot. */ + return 3441; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10000011x1xxxx10xxx00xxxxx01xxx - smlsll. */ - return 2750; + x1000001xx11xxxx0xx100xxxxx01xxx + fdot. */ + return 3442; } } } @@ -3940,19 +4303,41 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 16) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1000001xx1xxxx00xx111xxxxx01xxx - fsub. */ - return 2598; + if (((word >> 18) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001xx1xx0x00xx111xxxxx01xxx + fsub. */ + return 2598; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001xx1xx1x00xx111xxxxx01xxx + fsub. */ + return 3399; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1000001xx1xxxx10xx111xxxxx01xxx - fsub. */ - return 2599; + if (((word >> 18) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001xx1xx0x10xx111xxxxx01xxx + fsub. */ + return 2599; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000001xx1xx1x10xx111xxxxx01xxx + fsub. */ + return 3400; + } } } } @@ -3964,42 +4349,64 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 11) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000010x10xxxx0xxx00xxxxx11xxx - umlsll. */ - return 2910; + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010x10xxxx0xx000xxxxx11xxx + umlsll. */ + return 2910; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010x11xxxx0xx000xxxxx11xxx + umlsll. */ + return 2911; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10000010x11xxxx0xxx00xxxxx11xxx - umlsll. */ - return 2911; + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011x1xxxx00xx000xxxxx11xxx + umlsll. */ + return 2912; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000011x1xxxx10xx000xxxxx11xxx + umlsll. */ + return 2913; + } } } else { - if (((word >> 16) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10000011x1xxxx00xxx00xxxxx11xxx - umlsll. */ - return 2912; + x1000001xx10xxxx0xx100xxxxx11xxx + fdot. */ + return 3435; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10000011x1xxxx10xxx00xxxxx11xxx - umlsll. */ - return 2913; + x1000001xx11xxxx0xx100xxxxx11xxx + fdot. */ + return 3436; } } } @@ -17301,7 +17708,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0001xxxxx0100x1xxxxxxxxxx fdot. */ - return 3416; + return 3420; } } else @@ -17310,7 +17717,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0001xxxxx0101xxxxxxxxxxxx fmlalb. */ - return 3418; + return 3422; } } else @@ -17351,7 +17758,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0101xxxxx0101xxxxxxxxxxxx fmlalt. */ - return 3428; + return 3432; } } else @@ -17384,7 +17791,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0011xxxxx010xx1xxxxxxxxxx fdot. */ - return 3414; + return 3418; } } else @@ -17455,7 +17862,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0001xxxxx100010xxxxxxxxxx fmlallbb. */ - return 3419; + return 3423; } } else @@ -17464,7 +17871,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0001xxxxx1000x1xxxxxxxxxx fdot. */ - return 3415; + return 3419; } } else @@ -17473,7 +17880,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0001xxxxx1100xxxxxxxxxxxx fmlallbb. */ - return 3420; + return 3424; } } else @@ -17482,7 +17889,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0001xxxxx1x01xxxxxxxxxxxx fmlallbt. */ - return 3421; + return 3425; } } else @@ -17509,7 +17916,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0101xxxxx100010xxxxxxxxxx fmlalb. */ - return 3417; + return 3421; } } else @@ -17527,7 +17934,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0101xxxxx1100xxxxxxxxxxxx fmlalltb. */ - return 3424; + return 3428; } } else @@ -17536,7 +17943,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0101xxxxx1x01xxxxxxxxxxxx fmlalt. */ - return 3427; + return 3431; } } else @@ -17569,7 +17976,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0011xxxxx100xx1xxxxxxxxxx fdot. */ - return 3413; + return 3417; } } else @@ -17578,7 +17985,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0011xxxxx110xxxxxxxxxxxxx fmlallbt. */ - return 3422; + return 3426; } } else @@ -17610,7 +18017,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0111xxxxx110xxxxxxxxxxxxx fmlalltt. */ - return 3426; + return 3430; } } else @@ -17924,7 +18331,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0001xxxxx1010xxxxxxxxxxxx fmlalltb. */ - return 3423; + return 3427; } else { @@ -17932,7 +18339,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0001xxxxx1011xxxxxxxxxxxx fmlalltt. */ - return 3425; + return 3429; } } else @@ -26192,7 +26599,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 00001110x00xxxxxx10001xxxxxxxxxx fmlallbb. */ - return 3405; + return 3409; } else { @@ -26200,7 +26607,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 01001110x00xxxxxx10001xxxxxxxxxx fmlalltb. */ - return 3407; + return 3411; } } else @@ -26211,7 +26618,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 00001110x10xxxxxx10001xxxxxxxxxx fmlallbt. */ - return 3406; + return 3410; } else { @@ -26219,7 +26626,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 01001110x10xxxxxx10001xxxxxxxxxx fmlalltt. */ - return 3408; + return 3412; } } } @@ -26467,7 +26874,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 0x001110x00xxxxxx11111xxxxxxxxxx fdot. */ - return 3397; + return 3401; } else { @@ -26477,7 +26884,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 0x001110010xxxxxx11111xxxxxxxxxx fdot. */ - return 3399; + return 3403; } else { @@ -26487,7 +26894,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 00001110110xxxxxx11111xxxxxxxxxx fmlalb. */ - return 3401; + return 3405; } else { @@ -26495,7 +26902,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 01001110110xxxxxx11111xxxxxxxxxx fmlalt. */ - return 3402; + return 3406; } } } @@ -31944,7 +32351,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx00111100xxxxxx0000x0xxxxxxxxxx fdot. */ - return 3398; + return 3402; } else { @@ -31974,7 +32381,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx00111101xxxxxx0000x0xxxxxxxxxx fdot. */ - return 3400; + return 3404; } else { @@ -31984,7 +32391,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x000111111xxxxxx0000x0xxxxxxxxxx fmlalb. */ - return 3403; + return 3407; } else { @@ -31992,7 +32399,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x100111111xxxxxx0000x0xxxxxxxxxx fmlalt. */ - return 3404; + return 3408; } } } @@ -32534,7 +32941,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x010111100xxxxxx1000x0xxxxxxxxxx fmlallbb. */ - return 3409; + return 3413; } else { @@ -32542,7 +32949,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x110111100xxxxxx1000x0xxxxxxxxxx fmlalltb. */ - return 3411; + return 3415; } } else @@ -32573,7 +32980,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x0101111x1xxxxxx1000x0xxxxxxxxxx fmlallbt. */ - return 3410; + return 3414; } else { @@ -32581,7 +32988,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1101111x1xxxxxx1000x0xxxxxxxxxx fmlalltt. */ - return 3412; + return 3416; } } } @@ -34064,16 +34471,17 @@ aarch64_extract_operand (const aarch64_operand *self, case 248: case 256: case 257: - case 264: + case 258: case 265: case 266: case 267: + case 268: return aarch64_ext_regno (self, info, code, inst, errors); case 6: case 119: case 120: - case 299: - case 302: + case 304: + case 307: return aarch64_ext_none (self, info, code, inst, errors); case 11: return aarch64_ext_regrt_sysins (self, info, code, inst, errors); @@ -34093,7 +34501,7 @@ aarch64_extract_operand (const aarch64_operand *self, case 37: case 38: case 39: - case 304: + case 309: return aarch64_ext_reglane (self, info, code, inst, errors); case 40: case 41: @@ -34101,9 +34509,8 @@ aarch64_extract_operand (const aarch64_operand *self, case 228: case 229: case 232: - case 268: case 269: - case 284: + case 270: case 285: case 286: case 287: @@ -34116,6 +34523,11 @@ aarch64_extract_operand (const aarch64_operand *self, case 294: case 295: case 296: + case 297: + case 298: + case 299: + case 300: + case 301: return aarch64_ext_simple_index (self, info, code, inst, errors); case 43: return aarch64_ext_reglist (self, info, code, inst, errors); @@ -34165,14 +34577,14 @@ aarch64_extract_operand (const aarch64_operand *self, case 208: case 209: case 210: - case 270: - case 297: - case 298: - case 300: - case 301: + case 271: + case 302: case 303: + case 305: + case 306: case 308: - case 309: + case 313: + case 314: return aarch64_ext_imm (self, info, code, inst, errors); case 52: case 53: @@ -34322,7 +34734,7 @@ aarch64_extract_operand (const aarch64_operand *self, case 200: case 201: case 202: - case 283: + case 284: return aarch64_ext_sve_shrimm (self, info, code, inst, errors); case 215: case 216: @@ -34349,7 +34761,7 @@ aarch64_extract_operand (const aarch64_operand *self, return aarch64_ext_sve_index (self, info, code, inst, errors); case 242: case 244: - case 263: + case 264: return aarch64_ext_sve_reglist (self, info, code, inst, errors); case 245: case 246: @@ -34358,49 +34770,49 @@ aarch64_extract_operand (const aarch64_operand *self, case 251: case 252: case 253: - case 262: + case 263: return aarch64_ext_sve_aligned_reglist (self, info, code, inst, errors); case 247: case 254: case 255: return aarch64_ext_sve_strided_reglist (self, info, code, inst, errors); - case 258: - case 260: - case 271: - return aarch64_ext_sme_za_hv_tiles (self, info, code, inst, errors); case 259: case 261: - return aarch64_ext_sme_za_hv_tiles_range (self, info, code, inst, errors); case 272: + return aarch64_ext_sme_za_hv_tiles (self, info, code, inst, errors); + case 260: + case 262: + return aarch64_ext_sme_za_hv_tiles_range (self, info, code, inst, errors); case 273: case 274: case 275: case 276: case 277: case 278: - return aarch64_ext_sme_za_array (self, info, code, inst, errors); case 279: - return aarch64_ext_sme_addr_ri_u4xvl (self, info, code, inst, errors); + return aarch64_ext_sme_za_array (self, info, code, inst, errors); case 280: - return aarch64_ext_sme_sm_za (self, info, code, inst, errors); + return aarch64_ext_sme_addr_ri_u4xvl (self, info, code, inst, errors); case 281: - return aarch64_ext_sme_pred_reg_with_index (self, info, code, inst, errors); + return aarch64_ext_sme_sm_za (self, info, code, inst, errors); case 282: + return aarch64_ext_sme_pred_reg_with_index (self, info, code, inst, errors); + case 283: return aarch64_ext_plain_shrimm (self, info, code, inst, errors); - case 305: - case 306: - case 307: - return aarch64_ext_x0_to_x30 (self, info, code, inst, errors); case 310: case 311: case 312: - return aarch64_ext_sve_reglist_zt (self, info, code, inst, errors); - case 313: - case 314: + return aarch64_ext_x0_to_x30 (self, info, code, inst, errors); case 315: case 316: - return aarch64_ext_rcpc3_addr_opt_offset (self, info, code, inst, errors); case 317: + return aarch64_ext_sve_reglist_zt (self, info, code, inst, errors); + case 318: + case 319: + case 320: + case 321: + return aarch64_ext_rcpc3_addr_opt_offset (self, info, code, inst, errors); + case 322: return aarch64_ext_rcpc3_addr_offset (self, info, code, inst, errors); default: assert (0); abort (); } |