From 42e6288f9f9d7dfe560d2bed1fb5e7f27ac3256f Mon Sep 17 00:00:00 2001 From: Matthew Malcomson Date: Thu, 9 May 2019 10:29:28 +0100 Subject: [PATCH] [binutils][aarch64] Add SVE2 instructions. This patch adds all the SVE2 instructions and their associated qualifier sets. Ok for trunk? opcodes/ChangeLog: 2019-05-09 Matthew Malcomson * aarch64-dis-2.c: Regenerate. * aarch64-tbl.h (OP_SVE_BBU): New variant set. (OP_SVE_BBB): New variant set. (OP_SVE_DDDD): New variant set. (OP_SVE_HHH): New variant set. (OP_SVE_HHHU): New variant set. (OP_SVE_SSS): New variant set. (OP_SVE_SSSU): New variant set. (OP_SVE_SHH): New variant set. (OP_SVE_SBBU): New variant set. (OP_SVE_DSS): New variant set. (OP_SVE_DHHU): New variant set. (OP_SVE_VMV_HSD_BHS): New variant set. (OP_SVE_VVU_HSD_BHS): New variant set. (OP_SVE_VVVU_SD_BH): New variant set. (OP_SVE_VVVU_BHSD): New variant set. (OP_SVE_VVV_QHD_DBS): New variant set. (OP_SVE_VVV_HSD_BHS): New variant set. (OP_SVE_VVV_HSD_BHS2): New variant set. (OP_SVE_VVV_BHS_HSD): New variant set. (OP_SVE_VV_BHS_HSD): New variant set. (OP_SVE_VVV_SD): New variant set. (OP_SVE_VVU_BHS_HSD): New variant set. (OP_SVE_VZVV_SD): New variant set. (OP_SVE_VZVV_BH): New variant set. (OP_SVE_VZV_SD): New variant set. (aarch64_opcode_table): Add sve2 instructions. --- opcodes/ChangeLog | 30 + opcodes/aarch64-dis-2.c | 10173 +++++++++++++++++++++++++------------- opcodes/aarch64-tbl.h | 419 ++ 3 files changed, 7125 insertions(+), 3497 deletions(-) diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 86b3f42fd5d..331932cb397 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,33 @@ +2019-05-09 Matthew Malcomson + + * aarch64-dis-2.c: Regenerate. + * aarch64-tbl.h (OP_SVE_BBU): New variant set. + (OP_SVE_BBB): New variant set. + (OP_SVE_DDDD): New variant set. + (OP_SVE_HHH): New variant set. + (OP_SVE_HHHU): New variant set. + (OP_SVE_SSS): New variant set. + (OP_SVE_SSSU): New variant set. + (OP_SVE_SHH): New variant set. + (OP_SVE_SBBU): New variant set. + (OP_SVE_DSS): New variant set. + (OP_SVE_DHHU): New variant set. + (OP_SVE_VMV_HSD_BHS): New variant set. + (OP_SVE_VVU_HSD_BHS): New variant set. + (OP_SVE_VVVU_SD_BH): New variant set. + (OP_SVE_VVVU_BHSD): New variant set. + (OP_SVE_VVV_QHD_DBS): New variant set. + (OP_SVE_VVV_HSD_BHS): New variant set. + (OP_SVE_VVV_HSD_BHS2): New variant set. + (OP_SVE_VVV_BHS_HSD): New variant set. + (OP_SVE_VV_BHS_HSD): New variant set. + (OP_SVE_VVV_SD): New variant set. + (OP_SVE_VVU_BHS_HSD): New variant set. + (OP_SVE_VZVV_SD): New variant set. + (OP_SVE_VZVV_BH): New variant set. + (OP_SVE_VZV_SD): New variant set. + (aarch64_opcode_table): Add sve2 instructions. + 2019-05-09 Matthew Malcomson * aarch64-asm-2.c: Regenerated. diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c index 3dccd6d31c1..f86077dd000 100644 --- a/opcodes/aarch64-dis-2.c +++ b/opcodes/aarch64-dis-2.c @@ -2368,7 +2368,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 00011001000xxxxxxxxx00xxxxxxxxxx stlurb. */ - return 2086; + return 2375; } else { @@ -2376,7 +2376,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 10011001000xxxxxxxxx00xxxxxxxxxx stlur. */ - return 2094; + return 2383; } } else @@ -2387,7 +2387,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 01011001000xxxxxxxxx00xxxxxxxxxx stlurh. */ - return 2090; + return 2379; } else { @@ -2395,7 +2395,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 11011001000xxxxxxxxx00xxxxxxxxxx stlur. */ - return 2097; + return 2386; } } } @@ -2475,7 +2475,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 00011001010xxxxxxxxx00xxxxxxxxxx ldapurb. */ - return 2087; + return 2376; } else { @@ -2483,7 +2483,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 10011001010xxxxxxxxx00xxxxxxxxxx ldapur. */ - return 2095; + return 2384; } } else @@ -2494,7 +2494,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 01011001010xxxxxxxxx00xxxxxxxxxx ldapurh. */ - return 2091; + return 2380; } else { @@ -2502,7 +2502,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 11011001010xxxxxxxxx00xxxxxxxxxx ldapur. */ - return 2098; + return 2387; } } } @@ -2585,7 +2585,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 00011001100xxxxxxxxx00xxxxxxxxxx ldapursb. */ - return 2089; + return 2378; } else { @@ -2593,7 +2593,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 10011001100xxxxxxxxx00xxxxxxxxxx ldapursw. */ - return 2096; + return 2385; } } else @@ -2602,7 +2602,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1011001100xxxxxxxxx00xxxxxxxxxx ldapursh. */ - return 2093; + return 2382; } } else @@ -2613,7 +2613,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x0011001110xxxxxxxxx00xxxxxxxxxx ldapursb. */ - return 2088; + return 2377; } else { @@ -2621,7 +2621,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1011001110xxxxxxxxx00xxxxxxxxxx ldapursh. */ - return 2092; + return 2381; } } } @@ -3107,7 +3107,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxx11010x00xxxxxx0xx10xxxxxxxxxx setf8. */ - return 2084; + return 2373; } else { @@ -3115,7 +3115,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxx11010x00xxxxxx1xx10xxxxxxxxxx setf16. */ - return 2085; + return 2374; } } else @@ -3261,7 +3261,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxx11010000xxxxxxxxx01xxxxxxxxxx rmif. */ - return 2083; + return 2372; } else { @@ -4022,35 +4022,68 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x00x0xxxxx000xxxxxxxxxxxxx - ld1sb. */ - return 1561; - } - else + if (((word >> 31) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { if (((word >> 10) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x01x0xxxxx000xx0xxxxxxxxxx - sdot. */ - return 1816; + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx000000xxxxxxxxxx + sdot. */ + return 1816; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx000010xxxxxxxxxx + sqdmlalbt. */ + return 2164; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x01x0xxxxx000xx1xxxxxxxxxx - udot. */ - return 1968; + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx000001xxxxxxxxxx + udot. */ + return 1968; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx000011xxxxxxxxxx + sqdmlslbt. */ + return 2171; + } } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx0001xxxxxxxxxxxx + cdot. */ + return 2055; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x00x0xxxxx000xxxxxxxxxxxxx + ld1sb. */ + return 1561; + } else { /* 33222222222211111111110000000000 @@ -4152,53 +4185,45 @@ aarch64_opcode_lookup_1 (uint32_t word) else { if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x00x1xxxxx000xxxxxxxxxxxxx - prfb. */ - return 1764; - } - else { if (((word >> 31) & 0x1) == 0) { if (((word >> 10) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 010001x0101xxxxx000xx0xxxxxxxxxx - sdot. */ - return 1817; + 010001x00x1xxxxx000x00xxxxxxxxxx + sqrdmlah. */ + return 2189; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 010001x0111xxxxx000xx0xxxxxxxxxx - sdot. */ - return 1818; + 010001x00x1xxxxx000x10xxxxxxxxxx + mla. */ + return 2098; } } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 010001x0101xxxxx000xx1xxxxxxxxxx - udot. */ - return 1969; + 010001x00x1xxxxx000x01xxxxxxxxxx + sqrdmlsh. */ + return 2193; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 010001x0111xxxxx000xx1xxxxxxxxxx - udot. */ - return 1970; + 010001x00x1xxxxx000x11xxxxxxxxxx + mls. */ + return 2101; } } } @@ -4206,585 +4231,747 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 110001x01x1xxxxx000xxxxxxxxxxxxx - ld1sh. */ - return 1573; + 110001x00x1xxxxx000xxxxxxxxxxxxx + prfb. */ + return 1764; } } - } - } - } - else - { - if (((word >> 30) & 0x1) == 0) - { - if (((word >> 31) & 0x1) == 0) - { - if (((word >> 21) & 0x1) == 0) + else { - if (((word >> 16) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx000000xxxxxxxxxx + sdot. */ + return 1817; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx000000xxxxxxxxxx + sdot. */ + return 1818; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx000100xxxxxxxxxx + sqrdmlah. */ + return 2190; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx000100xxxxxxxxxx + sqrdmlah. */ + return 2191; + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0000x0100xxxxxxxxxxxxx - asr. */ - return 1291; + 010001x0101xxxxx000x10xxxxxxxxxx + mla. */ + return 2099; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0100x0100xxxxxxxxxxxxx - asr. */ - return 1289; + 010001x0111xxxxx000x10xxxxxxxxxx + mla. */ + return 2100; } } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0x10x0100xxxxxxxxxxxxx - asr. */ - return 1290; - } } else { - if (((word >> 20) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx00x1x0100xxxxxxxxxxxxx - asrd. */ - return 1292; + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx000001xxxxxxxxxx + udot. */ + return 1969; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx000001xxxxxxxxxx + udot. */ + return 1970; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx000101xxxxxxxxxx + sqrdmlsh. */ + return 2194; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx000101xxxxxxxxxx + sqrdmlsh. */ + return 2195; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx01x1x0100xxxxxxxxxxxxx - asrr. */ - return 1293; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx000x11xxxxxxxxxx + mls. */ + return 2102; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx000x11xxxxxxxxxx + mls. */ + return 2103; + } } } } else { - if (((word >> 17) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x01x1xxxxx000xxxxxxxxxxxxx + ld1sh. */ + return 1573; + } + } + } + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + if (((word >> 19) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0x0001x0xx000000100xxxxxxxxxxxxx + asr. */ + return 1291; + } + else + { + if (((word >> 30) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx000001100xxxxxxxxxxxxx - lsr. */ - return 1735; + 000001x0xx010000100xxxxxxxxxxxxx + asr. */ + return 1289; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx010001100xxxxxxxxxxxxx - lsr. */ - return 1733; + 010001x0xx010000100xxxxxxxxxxxxx + shadd. */ + return 2130; } } - else + } + else + { + if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0x1001100xxxxxxxxxxxxx - lsr. */ - return 1734; + 0x0001x0xx001000100xxxxxxxxxxxxx + sqshl. */ + return 2208; + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx011000100xxxxxxxxxxxxx + asr. */ + return 1290; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx011000100xxxxxxxxxxxxx + sqadd. */ + return 2159; + } } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0xx101100xxxxxxxxxxxxx - lsrr. */ - return 1736; } } else { - if (((word >> 18) & 0x1) == 0) + if (((word >> 19) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0x0001x0xx000100100xxxxxxxxxxxxx + asrd. */ + return 1292; + } + else + { + if (((word >> 30) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx000011100xxxxxxxxxxxxx - lsl. */ - return 1729; + 000001x0xx010100100xxxxxxxxxxxxx + asrr. */ + return 1293; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx010011100xxxxxxxxxxxxx - lsl. */ - return 1727; + 010001x0xx010100100xxxxxxxxxxxxx + srhadd. */ + return 2221; } } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0x1011100xxxxxxxxxxxxx - lsl. */ - return 1728; - } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0xx111100xxxxxxxxxxxxx - lslr. */ - return 1730; + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx001100100xxxxxxxxxxxxx + srshr. */ + return 2225; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx001100100xxxxxxxxxxxxx + sqshlr. */ + return 2209; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0x0001x0xx011100100xxxxxxxxxxxxx + suqadd. */ + return 2245; + } } } } - } - else - { - if (((word >> 10) & 0x1) == 0) + else { - if (((word >> 12) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx1xxxxx1000x0xxxxxxxxxx - asr. */ - return 1287; + if (((word >> 19) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0x0001x0xx000010100xxxxxxxxxxxxx + srshl. */ + return 2223; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0x0001x0xx010010100xxxxxxxxxxxxx + shsub. */ + return 2133; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0x0001x0xx001010100xxxxxxxxxxxxx + sqrshl. */ + return 2201; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0x0001x0xx011010100xxxxxxxxxxxxx + sqsub. */ + return 2215; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx1xxxxx1001x0xxxxxxxxxx - asr. */ - return 1288; + if (((word >> 19) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx000110100xxxxxxxxxxxxx + sqshl. */ + return 2207; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx000110100xxxxxxxxxxxxx + srshlr. */ + return 2224; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0x0001x0xx010110100xxxxxxxxxxxxx + shsubr. */ + return 2134; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0x0001x0xx001110100xxxxxxxxxxxxx + sqrshlr. */ + return 2202; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0x0001x0xx011110100xxxxxxxxxxxxx + sqsubr. */ + return 2216; + } + } } } - else + } + else + { + if (((word >> 17) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 19) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx1xxxxx100001xxxxxxxxxx - lsr. */ - return 1731; + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0x0001x0xx000001100xxxxxxxxxxxxx + lsr. */ + return 1735; + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx010001100xxxxxxxxxxxxx + lsr. */ + return 1733; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx010001100xxxxxxxxxxxxx + uhadd. */ + return 2258; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx1xxxxx100101xxxxxxxxxx - lsr. */ - return 1732; + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0x0001x0xx001001100xxxxxxxxxxxxx + uqshl. */ + return 2288; + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx011001100xxxxxxxxxxxxx + lsr. */ + return 1734; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx011001100xxxxxxxxxxxxx + uqadd. */ + return 2282; + } + } } } else { - if (((word >> 12) & 0x1) == 0) + if (((word >> 19) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx1xxxxx100011xxxxxxxxxx - lsl. */ - return 1725; + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x0101100xxxxxxxxxxxxx + lsrr. */ + return 1736; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0x0101100xxxxxxxxxxxxx + urhadd. */ + return 2297; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx1xxxxx100111xxxxxxxxxx - lsl. */ - return 1726; + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx001101100xxxxxxxxxxxxx + urshr. */ + return 2300; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx001101100xxxxxxxxxxxxx + uqshlr. */ + return 2289; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0x0001x0xx011101100xxxxxxxxxxxxx + usqadd. */ + return 2305; + } } } } - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x000xxxxxx100xxxxxxxxxxxxx - ld1sb. */ - return 1563; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x010xxxxxx100xxxxxxxxxxxxx - ld1sh. */ - return 1576; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x001xxxxxx100xxxxxxxxxxxxx - ld1rb. */ - return 1533; - } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x011xxxxxx100xxxxxxxxxxxxx - ld1rsw. */ - return 1554; - } - } - } - } - else - { - if (((word >> 21) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x00x0xxxxx100xxxxxxxxxxxxx - ld1sb. */ - return 1562; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x01x0xxxxx100xxxxxxxxxxxxx - ld1sh. */ - return 1574; - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x0001xxxxx100xxxxxxxxxxxxx - ld1sb. */ - return 1567; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x0101xxxxx100xxxxxxxxxxxxx - ld1sh. */ - return 1579; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x0011xxxxx100xxxxxxxxxxxxx - prfb. */ - return 1765; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x0111xxxxx100xxxxxxxxxxxxx - ld1sh. */ - return 1575; - } - } - } - } - } - } - else - { - if (((word >> 15) & 0x1) == 0) - { - if (((word >> 21) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) - { - if (((word >> 31) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0xxxxx010xxxxxxxxxxxxx - mla. */ - return 1738; - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x00x0xxxxx010xxxxxxxxxxxxx - ld1b. */ - return 1499; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x01x0xxxxx010xxxxxxxxxxxxx - ld1h. */ - return 1519; - } - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x00x0xxxxx010xxxxxxxxxxxxx - ld1b. */ - return 1504; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x01x0xxxxx010xxxxxxxxxxxxx - ld1h. */ - return 1524; - } - } - } - else - { - if (((word >> 30) & 0x1) == 0) - { - if (((word >> 31) & 0x1) == 0) - { - if (((word >> 11) & 0x1) == 0) - { - if (((word >> 12) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { - if (((word >> 10) & 0x1) == 0) + if (((word >> 19) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx1xxxxx010000xxxxxxxxxx - index. */ - return 1490; + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx000011100xxxxxxxxxxxxx + lsl. */ + return 1729; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx000011100xxxxxxxxxxxxx + urshl. */ + return 2298; + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx010011100xxxxxxxxxxxxx + lsl. */ + return 1727; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx010011100xxxxxxxxxxxxx + uhsub. */ + return 2259; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx1xxxxx010001xxxxxxxxxx - index. */ - return 1491; + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0x0001x0xx001011100xxxxxxxxxxxxx + uqrshl. */ + return 2283; + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx011011100xxxxxxxxxxxxx + lsl. */ + return 1728; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx011011100xxxxxxxxxxxxx + uqsub. */ + return 2292; + } + } } } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 19) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0001xxxxx01010xxxxxxxxxxx - addvl. */ - return 1277; + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx000111100xxxxxxxxxxxxx + uqshl. */ + return 2287; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx000111100xxxxxxxxxxxxx + urshlr. */ + return 2299; + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx010111100xxxxxxxxxxxxx + lslr. */ + return 1730; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx010111100xxxxxxxxxxxxx + uhsubr. */ + return 2260; + } + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx001111100xxxxxxxxxxxxx + sqshlu. */ + return 2210; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx001111100xxxxxxxxxxxxx + uqrshlr. */ + return 2284; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0101xxxxx01010xxxxxxxxxxx - rdvl. */ - return 1799; + 0x0001x0xx011111100xxxxxxxxxxxxx + uqsubr. */ + return 2293; } } + } + } + } + } + else + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx1000x0xxxxxxxxxx + asr. */ + return 1287; + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0x01xxxxx1000x0xxxxxxxxxx + smlalb. */ + return 2138; + } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0x11xxxxx01010xxxxxxxxxxx - addpl. */ - return 1276; + 010001x0x11xxxxx1000x0xxxxxxxxxx + smlalb. */ + return 2139; } } } else { - if (((word >> 10) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx1xxxxx010x10xxxxxxxxxx - index. */ - return 1492; + 000001x0xx1xxxxx1001x0xxxxxxxxxx + asr. */ + return 1288; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx1xxxxx010x11xxxxxxxxxx - index. */ - return 1489; - } - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x00x1xxxxx010xxxxxxxxxxxxx - prfw. */ - return 1783; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x01x1xxxxx010xxxxxxxxxxxxx - ld1h. */ - return 1520; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0x01xxxxx1001x0xxxxxxxxxx + umlalb. */ + return 2263; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0x11xxxxx1001x0xxxxxxxxxx + umlalb. */ + return 2264; + } + } } } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x00x1xxxxx010xxxxxxxxxxxxx - prfw. */ - return 1785; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x01x1xxxxx010xxxxxxxxxxxxx - ld1h. */ - return 1525; - } - } - } - } - else - { - if (((word >> 30) & 0x1) == 0) - { - if (((word >> 31) & 0x1) == 0) - { - if (((word >> 21) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0xxxxx110xxxxxxxxxxxxx - mad. */ - return 1737; - } else { - if (((word >> 10) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0x010xxxx110x00xxxxxxxxxx - sqincw. */ - return 1857; - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00110xxxx110x00xxxxxxxxxx - sqinch. */ - return 1851; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01110xxxx110x00xxxxxxxxxx - sqincd. */ - return 1848; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx100001xxxxxxxxxx + lsr. */ + return 1731; } else { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0x011xxxx110x00xxxxxxxxxx - incw. */ - return 1487; - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00111xxxx110x00xxxxxxxxxx - inch. */ - return 1483; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01111xxxx110x00xxxxxxxxxx - incd. */ - return 1481; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx100011xxxxxxxxxx + lsl. */ + return 1725; } } else @@ -4793,94 +4980,39 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0x01xxxxx110x10xxxxxxxxxx - sqdecw. */ - return 1843; + 010001x0x01xxxxx1000x1xxxxxxxxxx + smlalt. */ + return 2141; } else { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0011xxxxx110x10xxxxxxxxxx - sqdech. */ - return 1837; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0111xxxxx110x10xxxxxxxxxx - sqdecd. */ - return 1834; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0x11xxxxx1000x1xxxxxxxxxx + smlalt. */ + return 2142; } } } else { - if (((word >> 11) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0x010xxxx110x01xxxxxxxxxx - uqincw. */ - return 2005; - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00110xxxx110x01xxxxxxxxxx - uqinch. */ - return 1999; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01110xxxx110x01xxxxxxxxxx - uqincd. */ - return 1996; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx100101xxxxxxxxxx + lsr. */ + return 1732; } else { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0x011xxxx110x01xxxxxxxxxx - decw. */ - return 1362; - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00111xxxx110x01xxxxxxxxxx - dech. */ - return 1358; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01111xxxx110x01xxxxxxxxxx - decd. */ - return 1356; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx100111xxxxxxxxxx + lsl. */ + return 1726; } } else @@ -4889,277 +5021,274 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0x01xxxxx110x11xxxxxxxxxx - uqdecw. */ - return 1991; + 010001x0x01xxxxx1001x1xxxxxxxxxx + umlalt. */ + return 2266; } else { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0011xxxxx110x11xxxxxxxxxx - uqdech. */ - return 1985; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0111xxxxx110x11xxxxxxxxxx - uqdecd. */ - return 1982; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0x11xxxxx1001x1xxxxxxxxxx + umlalt. */ + return 2267; } } } } } - else + } + else + { + if (((word >> 22) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { - if (((word >> 21) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x0000xxxxx110xxxxxxxxxxxxx - prfb. */ - return 1762; - } - else + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 1x0001x0000xxxxx100xxxxxxxxxxxxx + ldnt1sb. */ + return 2092; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 1x0001x0100xxxxx100xxxxxxxxxxxxx + ldnt1sh. */ + return 2093; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x0100xxxxx110xxxxxxxxxxxxx - prfh. */ - return 1777; + 100001x0001xxxxx100xxxxxxxxxxxxx + ld1sb. */ + return 1563; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0001xxxxx100xxxxxxxxxxxxx + ld1sb. */ + return 1567; } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x0001xxxxx110xxxxxxxxxxxxx - ld1b. */ - return 1506; + 100001x0101xxxxx100xxxxxxxxxxxxx + ld1sh. */ + return 1576; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x0101xxxxx110xxxxxxxxxxxxx - ld1h. */ - return 1528; + 110001x0101xxxxx100xxxxxxxxxxxxx + ld1sh. */ + return 1579; } } } - else + } + else + { + if (((word >> 23) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x001xxxxxx110xxxxxxxxxxxxx + 100001x001xxxxxx100xxxxxxxxxxxxx ld1rb. */ - return 1535; + return 1533; } else + { + if (((word >> 21) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0010xxxxx100xxxxxxxxxxxxx + ld1sb. */ + return 1562; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0011xxxxx100xxxxxxxxxxxxx + prfb. */ + return 1765; + } + } + } + else + { + if (((word >> 30) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x011xxxxxx110xxxxxxxxxxxxx - ld1rh. */ - return 1539; + 100001x011xxxxxx100xxxxxxxxxxxxx + ld1rsw. */ + return 1554; + } + else + { + if (((word >> 21) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0110xxxxx100xxxxxxxxxxxxx + ld1sh. */ + return 1574; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0111xxxxx100xxxxxxxxxxxxx + ld1sh. */ + return 1575; + } } } } } - else + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) { - if (((word >> 21) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x00x0xxxxx110xxxxxxxxxxxxx - ld1b. */ - return 1505; + 000001x0xx0xxxxx010xxxxxxxxxxxxx + mla. */ + return 1738; } else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x01x0xxxxx110xxxxxxxxxxxxx - ld1h. */ - return 1526; - } - } - else - { - if (((word >> 22) & 0x1) == 0) { if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x0001xxxxx110xxxxxxxxxxxxx + 100001x00x0xxxxx010xxxxxxxxxxxxx ld1b. */ - return 1511; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x0101xxxxx110xxxxxxxxxxxxx - ld1h. */ - return 1532; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x0011xxxxx110xxxxxxxxxxxxx - prfw. */ - return 1786; + return 1499; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x0111xxxxx110xxxxxxxxxxxxx + 100001x01x0xxxxx010xxxxxxxxxxxxx ld1h. */ - return 1527; + return 1519; } } } - } - } - } - } - else - { - if (((word >> 14) & 0x1) == 0) - { - if (((word >> 15) & 0x1) == 0) - { - if (((word >> 21) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) + else { if (((word >> 31) & 0x1) == 0) { - if (((word >> 17) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 16) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx000x00001xxxxxxxxxxxxx - saddv. */ - return 1806; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx000x01001xxxxxxxxxxxxx - uaddv. */ - return 1958; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx010000xxxxxxxxxx + smlalb. */ + return 2140; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx010x0x001xxxxxxxxxxxxx - movprfx. */ - return 1741; + 010001x0xx0xxxxx010100xxxxxxxxxx + smlslb. */ + return 2146; } } else { - if (((word >> 16) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx001x00001xxxxxxxxxxxxx - smaxv. */ - return 1824; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx011x00001xxxxxxxxxxxxx - orv. */ - return 1758; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx010010xxxxxxxxxx + umlalb. */ + return 2265; } else { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx001x01001xxxxxxxxxxxxx - umaxv. */ - return 1973; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx011x01001xxxxxxxxxxxxx - eorv. */ - return 1373; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx010110xxxxxxxxxx + umlslb. */ + return 2271; } } } else { - if (((word >> 16) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx00xx10001xxxxxxxxxxxxx - sminv. */ - return 1827; + 010001x0xx0xxxxx010001xxxxxxxxxx + smlalt. */ + return 2143; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx01xx10001xxxxxxxxxxxxx - andv. */ - return 1286; + 010001x0xx0xxxxx010101xxxxxxxxxx + smlslt. */ + return 2149; } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0xxx11001xxxxxxxxxxxxx - uminv. */ - return 1976; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx010011xxxxxxxxxx + umlalt. */ + return 2268; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx010111xxxxxxxxxx + umlslt. */ + return 2274; + } } } } @@ -5169,86 +5298,130 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x00x0xxxxx001xxxxxxxxxxxxx - ldff1sb. */ - return 1657; + 110001x00x0xxxxx010xxxxxxxxxxxxx + ld1b. */ + return 1504; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x01x0xxxxx001xxxxxxxxxxxxx - ldff1sh. */ - return 1668; + 110001x01x0xxxxx010xxxxxxxxxxxxx + ld1h. */ + return 1524; } } } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x00x0xxxxx001xxxxxxxxxxxxx - ldff1sb. */ - return 1664; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x01x0xxxxx001xxxxxxxxxxxxx - ldff1sh. */ - return 1674; - } - } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx010000xxxxxxxxxx + index. */ + return 1490; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx010001xxxxxxxxxx + index. */ + return 1491; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0001xxxxx01010xxxxxxxxxxx + addvl. */ + return 1277; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0101xxxxx01010xxxxxxxxxxx + rdvl. */ + return 1799; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0x11xxxxx01010xxxxxxxxxxx + addpl. */ + return 1276; + } + } + } + else + { + if (((word >> 10) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0001xxxxx001xxxxxxxxxxxxx - and. */ - return 1281; + 000001x0xx1xxxxx010x10xxxxxxxxxx + index. */ + return 1492; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0011xxxxx001xxxxxxxxxxxxx - orr. */ - return 1753; + 000001x0xx1xxxxx010x11xxxxxxxxxx + index. */ + return 1489; } } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x00x1xxxxx010xxxxxxxxxxxxx + prfw. */ + return 1783; + } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x00x1xxxxx001xxxxxxxxxxxxx - prfh. */ - return 1776; + 100001x01x1xxxxx010xxxxxxxxxxxxx + ld1h. */ + return 1520; } } - else + } + else + { + if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x00x1xxxxx001xxxxxxxxxxxxx - prfh. */ - return 1778; + x10001x00x1xxxxx010xxxxxxxxxxxxx + prfw. */ + return 1785; } - } - else - { - if (((word >> 30) & 0x1) == 0) + else { if (((word >> 31) & 0x1) == 0) { @@ -5256,36 +5429,28 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0101xxxxx001xxxxxxxxxxxxx - eor. */ - return 1368; + 010001x0101xxxxx010xxxxxxxxxxxxx + cdot. */ + return 2057; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0111xxxxx001xxxxxxxxxxxxx - bic. */ - return 1294; + 010001x0111xxxxx010xxxxxxxxxxxxx + cdot. */ + return 2056; } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x01x1xxxxx001xxxxxxxxxxxxx - ldff1sh. */ - return 1669; + 110001x01x1xxxxx010xxxxxxxxxxxxx + ld1h. */ + return 1525; } } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x01x1xxxxx001xxxxxxxxxxxxx - ldff1sh. */ - return 1675; - } } } } @@ -5297,268 +5462,268 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 21) & 0x1) == 0) { - if (((word >> 16) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0xxxxx110xxxxxxxxxxxxx + mad. */ + return 1737; + } + else + { + if (((word >> 10) & 0x1) == 0) { - if (((word >> 17) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0x0000101xxxxxxxxxxxxx - sxtb. */ - return 1949; + 000001x0x010xxxx110x00xxxxxxxxxx + sqincw. */ + return 1857; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0x1000101xxxxxxxxxxxxx - cls. */ - return 1314; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00110xxxx110x00xxxxxxxxxx + sqinch. */ + return 1851; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01110xxxx110x00xxxxxxxxxx + sqincd. */ + return 1848; + } } } else { - if (((word >> 19) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0x0100101xxxxxxxxxxxxx - sxtw. */ - return 1951; + 000001x0x011xxxx110x00xxxxxxxxxx + incw. */ + return 1487; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0x1100101xxxxxxxxxxxxx - fabs. */ - return 1376; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00111xxxx110x00xxxxxxxxxx + inch. */ + return 1483; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01111xxxx110x00xxxxxxxxxx + incd. */ + return 1481; + } } } } else { - if (((word >> 18) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0x0010101xxxxxxxxxxxxx - sxth. */ - return 1950; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0x1010101xxxxxxxxxxxxx - cnt. */ - return 1343; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0x01xxxxx110x10xxxxxxxxxx + sqdecw. */ + return 1843; } else { - if (((word >> 19) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0x0110101xxxxxxxxxxxxx - abs. */ - return 1272; + 000001x0011xxxxx110x10xxxxxxxxxx + sqdech. */ + return 1837; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0x1110101xxxxxxxxxxxxx - not. */ - return 1750; + 000001x0111xxxxx110x10xxxxxxxxxx + sqdecd. */ + return 1834; } } } } else { - if (((word >> 17) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0x0001101xxxxxxxxxxxxx - uxtb. */ - return 2012; + 000001x0x010xxxx110x01xxxxxxxxxx + uqincw. */ + return 2005; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0x1001101xxxxxxxxxxxxx - clz. */ - return 1315; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00110xxxx110x01xxxxxxxxxx + uqinch. */ + return 1999; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01110xxxx110x01xxxxxxxxxx + uqincd. */ + return 1996; + } } } else { - if (((word >> 19) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0x0101101xxxxxxxxxxxxx - uxtw. */ - return 2014; - } - else + 000001x0x011xxxx110x01xxxxxxxxxx + decw. */ + return 1362; + } + else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0x1101101xxxxxxxxxxxxx - fneg. */ - return 1453; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00111xxxx110x01xxxxxxxxxx + dech. */ + return 1358; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01111xxxx110x01xxxxxxxxxx + decd. */ + return 1356; + } } } } else { - if (((word >> 18) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0x01xxxxx110x11xxxxxxxxxx + uqdecw. */ + return 1991; + } + else + { + if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0x0011101xxxxxxxxxxxxx - uxth. */ - return 2013; + 000001x0011xxxxx110x11xxxxxxxxxx + uqdech. */ + return 1985; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0x1011101xxxxxxxxxxxxx - cnot. */ - return 1342; + 000001x0111xxxxx110x11xxxxxxxxxx + uqdecd. */ + return 1982; } } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0xx111101xxxxxxxxxxxxx - neg. */ - return 1747; - } } } } - else + } + else + { + if (((word >> 22) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { if (((word >> 23) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0001xxxxx1010xxxxxxxxxxxx - adr. */ - return 1278; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0011xxxxx1010xxxxxxxxxxxx - adr. */ - return 1279; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x0000xxxxx110xxxxxxxxxxxxx + prfb. */ + return 1762; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x01x1xxxxx1010xxxxxxxxxxxx - adr. */ - return 1280; + 100001x0100xxxxx110xxxxxxxxxxxxx + prfh. */ + return 1777; } } else { - if (((word >> 10) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx1xxxxx101100xxxxxxxxxx - ftssel. */ - return 1479; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx1xxxxx101110xxxxxxxxxx - fexpa. */ - return 1423; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x0001xxxxx110xxxxxxxxxxxxx + ld1b. */ + return 1506; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx1xxxxx1011x1xxxxxxxxxx - movprfx. */ - return 1740; + 100001x0101xxxxx110xxxxxxxxxxxxx + ld1h. */ + return 1528; } } } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x000xxxxxx101xxxxxxxxxxxxx - ldff1sb. */ - return 1666; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x010xxxxxx101xxxxxxxxxxxxx - ldff1sh. */ - return 1678; - } - } else { if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x001xxxxxx101xxxxxxxxxxxxx + 100001x001xxxxxx110xxxxxxxxxxxxx ld1rb. */ - return 1534; + return 1535; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x011xxxxxx101xxxxxxxxxxxxx + 100001x011xxxxxx110xxxxxxxxxxxxx ld1rh. */ - return 1538; + return 1539; } } } @@ -5566,25 +5731,6 @@ aarch64_opcode_lookup_1 (uint32_t word) else { if (((word >> 21) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x00x0xxxxx101xxxxxxxxxxxxx - ldff1sb. */ - return 1665; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x01x0xxxxx101xxxxxxxxxxxxx - ldff1sh. */ - return 1676; - } - } - else { if (((word >> 22) & 0x1) == 0) { @@ -5592,17 +5738,17 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x0001xxxxx101xxxxxxxxxxxxx - ldff1sb. */ - return 1667; + x10001x0000xxxxx110xxxxxxxxxxxxx + ldnt1b. */ + return 2088; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x0101xxxxx101xxxxxxxxxxxxx - ldff1sh. */ - return 1679; + x10001x0100xxxxx110xxxxxxxxxxxxx + ldnt1h. */ + return 2091; } } else @@ -5611,657 +5757,451 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x0011xxxxx101xxxxxxxxxxxxx - prfh. */ - return 1779; + x10001x0010xxxxx110xxxxxxxxxxxxx + ld1b. */ + return 1505; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x0111xxxxx101xxxxxxxxxxxxx - ldff1sh. */ - return 1677; + x10001x0110xxxxx110xxxxxxxxxxxxx + ld1h. */ + return 1526; } } } - } - } - } - else - { - if (((word >> 15) & 0x1) == 0) - { - if (((word >> 21) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) + else { - if (((word >> 31) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0xxxxx011xxxxxxxxxxxxx - mls. */ - return 1739; - } - else + if (((word >> 22) & 0x1) == 0) { if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x00x0xxxxx011xxxxxxxxxxxxx - ldff1b. */ - return 1623; + x10001x0001xxxxx110xxxxxxxxxxxxx + ld1b. */ + return 1511; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x01x0xxxxx011xxxxxxxxxxxxx - ldff1h. */ - return 1643; + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx1100x0xxxxxxxxxx + smullb. */ + return 2151; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx1101x0xxxxxxxxxx + umullb. */ + return 2276; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx1100x1xxxxxxxxxx + smullt. */ + return 2154; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx1101x1xxxxxxxxxx + umullt. */ + return 2279; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0101xxxxx110xxxxxxxxxxxxx + ld1h. */ + return 1532; + } } } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x00x0xxxxx011xxxxxxxxxxxxx - ldff1b. */ - return 1632; - } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x01x0xxxxx011xxxxxxxxxxxxx - ldff1h. */ - return 1651; - } - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x00001x00x1xxxxx011xxxxxxxxxxxxx - prfd. */ - return 1769; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x00x1xxxxx011xxxxxxxxxxxxx - prfd. */ - return 1771; - } - } - else - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x00001x01x1xxxxx011xxxxxxxxxxxxx - ldff1h. */ - return 1644; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x01x1xxxxx011xxxxxxxxxxxxx - ldff1h. */ - return 1652; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10001x0011xxxxx110xxxxxxxxxxxxx + prfw. */ + return 1786; + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx1100x0xxxxxxxxxx + smullb. */ + return 2152; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx1101x0xxxxxxxxxx + umullb. */ + return 2277; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx1100x1xxxxxxxxxx + smullt. */ + return 2155; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx1101x1xxxxxxxxxx + umullt. */ + return 2280; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0111xxxxx110xxxxxxxxxxxxx + ld1h. */ + return 1527; + } + } } } } } - else + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - if (((word >> 21) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0xxxxx111xxxxxxxxxxxxx - msb. */ - return 1742; - } - else + if (((word >> 31) & 0x1) == 0) { - if (((word >> 10) & 0x1) == 0) + if (((word >> 17) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) + if (((word >> 19) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 16) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00010xxxx111000xxxxxxxxxx - cntb. */ - return 1344; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01010xxxx111000xxxxxxxxxx - cntw. */ - return 1348; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00110xxxx111000xxxxxxxxxx - cnth. */ - return 1346; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01110xxxx111000xxxxxxxxxx - cntd. */ - return 1345; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx000x00001xxxxxxxxxxxxx + saddv. */ + return 1806; } else { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00011xxxx111000xxxxxxxxxx - incb. */ - return 1480; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01011xxxx111000xxxxxxxxxx - incw. */ - return 1488; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00111xxxx111000xxxxxxxxxx - inch. */ - return 1484; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01111xxxx111000xxxxxxxxxx - incd. */ - return 1482; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx000x01001xxxxxxxxxxxxx + uaddv. */ + return 1958; } } else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx010x0x001xxxxxxxxxxxxx + movprfx. */ + return 1741; + } + } + else + { + if (((word >> 16) & 0x1) == 0) { if (((word >> 20) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00010xxxx111100xxxxxxxxxx - sqincb. */ - return 1847; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01010xxxx111100xxxxxxxxxx - sqincw. */ - return 1859; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00110xxxx111100xxxxxxxxxx - sqinch. */ - return 1853; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01110xxxx111100xxxxxxxxxx - sqincd. */ - return 1850; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx001x00001xxxxxxxxxxxxx + smaxv. */ + return 1824; } else { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00011xxxx111100xxxxxxxxxx - sqincb. */ - return 1846; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01011xxxx111100xxxxxxxxxx - sqincw. */ - return 1858; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00111xxxx111100xxxxxxxxxx - sqinch. */ - return 1852; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01111xxxx111100xxxxxxxxxx - sqincd. */ - return 1849; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx011x00001xxxxxxxxxxxxx + orv. */ + return 1758; } } - } - else - { - if (((word >> 20) & 0x1) == 0) + else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00010xxxx111x10xxxxxxxxxx - sqdecb. */ - return 1833; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01010xxxx111x10xxxxxxxxxx - sqdecw. */ - return 1845; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx001x01001xxxxxxxxxxxxx + umaxv. */ + return 1973; } else { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00110xxxx111x10xxxxxxxxxx - sqdech. */ - return 1839; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01110xxxx111x10xxxxxxxxxx - sqdecd. */ - return 1836; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx011x01001xxxxxxxxxxxxx + eorv. */ + return 1373; } } + } + } + else + { + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx00xx10001xxxxxxxxxxxxx + sminv. */ + return 1827; + } else { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00011xxxx111x10xxxxxxxxxx - sqdecb. */ - return 1832; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01011xxxx111x10xxxxxxxxxx - sqdecw. */ - return 1844; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00111xxxx111x10xxxxxxxxxx - sqdech. */ - return 1838; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01111xxxx111x10xxxxxxxxxx - sqdecd. */ - return 1835; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx01xx10001xxxxxxxxxxxxx + andv. */ + return 1286; } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0xxx11001xxxxxxxxxxxxx + uminv. */ + return 1976; + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x00x0xxxxx001xxxxxxxxxxxxx + ldff1sb. */ + return 1657; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x01x0xxxxx001xxxxxxxxxxxxx + ldff1sh. */ + return 1668; + } + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx0010xxxxxxxxxxxx + cmla. */ + return 2058; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx0011xxxxxxxxxxxx + sqrdcmlah. */ + return 2188; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x00x0xxxxx001xxxxxxxxxxxxx + ldff1sb. */ + return 1664; } else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x01x0xxxxx001xxxxxxxxxxxxx + ldff1sh. */ + return 1674; + } + } + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) { if (((word >> 11) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0001xxxxx111001xxxxxxxxxx - decb. */ - return 1355; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0101xxxxx111001xxxxxxxxxx - decw. */ - return 1363; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0001xxxxx001x00xxxxxxxxxx + and. */ + return 1281; } else { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0011xxxxx111001xxxxxxxxxx - dech. */ - return 1359; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0111xxxxx111001xxxxxxxxxx - decd. */ - return 1357; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0101xxxxx001x00xxxxxxxxxx + eor. */ + return 1368; } } else { - if (((word >> 20) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00010xxxx111101xxxxxxxxxx - uqincb. */ - return 1994; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01010xxxx111101xxxxxxxxxx - uqincw. */ - return 2006; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00110xxxx111101xxxxxxxxxx - uqinch. */ - return 2000; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01110xxxx111101xxxxxxxxxx - uqincd. */ - return 1997; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0011xxxxx001x00xxxxxxxxxx + orr. */ + return 1753; } else { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00011xxxx111101xxxxxxxxxx - uqincb. */ - return 1995; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01011xxxx111101xxxxxxxxxx - uqincw. */ - return 2007; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00111xxxx111101xxxxxxxxxx - uqinch. */ - return 2001; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01111xxxx111101xxxxxxxxxx - uqincd. */ - return 1998; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0111xxxxx001x00xxxxxxxxxx + bic. */ + return 1294; } } } else { - if (((word >> 20) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00010xxxx111x11xxxxxxxxxx - uqdecb. */ - return 1980; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01010xxxx111x11xxxxxxxxxx - uqdecw. */ - return 1992; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00110xxxx111x11xxxxxxxxxx - uqdech. */ - return 1986; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01110xxxx111x11xxxxxxxxxx - uqdecd. */ - return 1983; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0x01xxxxx001x10xxxxxxxxxx + eor3. */ + return 2061; } else { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00011xxxx111x11xxxxxxxxxx - uqdecb. */ - return 1981; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01011xxxx111x11xxxxxxxxxx - uqdecw. */ - return 1993; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x00111xxxx111x11xxxxxxxxxx - uqdech. */ - return 1987; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x01111xxxx111x11xxxxxxxxxx - uqdecd. */ - return 1984; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0x11xxxxx001x10xxxxxxxxxx + bcax. */ + return 2050; } } } - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 21) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x0000xxxxx111xxxxxxxxxxxxx - prfb. */ - return 1766; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x0100xxxxx111xxxxxxxxxxxxx - prfh. */ - return 1780; - } - } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x0001xxxxx111xxxxxxxxxxxxx - ldff1b. */ - return 1634; + 000001x0xx1xxxxx001x01xxxxxxxxxx + xar. */ + return 2321; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x0101xxxxx111xxxxxxxxxxxxx - ldff1h. */ - return 1655; + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0001xxxxx001x11xxxxxxxxxx + bsl. */ + return 2051; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0101xxxxx001x11xxxxxxxxxx + bsl2n. */ + return 2053; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0011xxxxx001x11xxxxxxxxxx + bsl1n. */ + return 2052; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0111xxxxx001x11xxxxxxxxxx + nbsl. */ + return 2108; + } + } } } } @@ -6271,43 +6211,2009 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x001xxxxxx111xxxxxxxxxxxxx - ld1rb. */ - return 1536; + 100001x00x1xxxxx001xxxxxxxxxxxxx + prfh. */ + return 1776; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x011xxxxxx111xxxxxxxxxxxxx - ld1rh. */ - return 1540; + 100001x01x1xxxxx001xxxxxxxxxxxxx + ldff1sh. */ + return 1669; } } } - } - else - { - if (((word >> 21) & 0x1) == 0) + else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x0000xxxxx111xxxxxxxxxxxxx - prfb. */ - return 1768; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x0100xxxxx111xxxxxxxxxxxxx - prfh. */ - return 1782; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10001x00x1xxxxx001xxxxxxxxxxxxx + prfh. */ + return 1778; + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx0010x0xxxxxxxxxx + sqdmlalb. */ + return 2161; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx0010x0xxxxxxxxxx + sqdmlalb. */ + return 2162; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx0011x0xxxxxxxxxx + sqdmlslb. */ + return 2168; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx0011x0xxxxxxxxxx + sqdmlslb. */ + return 2169; + } + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx0010x1xxxxxxxxxx + sqdmlalt. */ + return 2165; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx0010x1xxxxxxxxxx + sqdmlalt. */ + return 2166; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx0011x1xxxxxxxxxx + sqdmlslt. */ + return 2172; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx0011x1xxxxxxxxxx + sqdmlslt. */ + return 2173; + } + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x01x1xxxxx001xxxxxxxxxxxxx + ldff1sh. */ + return 1675; + } + } + } + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x0000101xxxxxxxxxxxxx + sxtb. */ + return 1949; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x1000101xxxxxxxxxxxxx + cls. */ + return 1314; + } + } + else + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x0100101xxxxxxxxxxxxx + sxtw. */ + return 1951; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x1100101xxxxxxxxxxxxx + fabs. */ + return 1376; + } + } + } + else + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x0010101xxxxxxxxxxxxx + sxth. */ + return 1950; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x1010101xxxxxxxxxxxxx + cnt. */ + return 1343; + } + } + else + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x0110101xxxxxxxxxxxxx + abs. */ + return 1272; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x1110101xxxxxxxxxxxxx + not. */ + return 1750; + } + } + } + } + else + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x0001101xxxxxxxxxxxxx + uxtb. */ + return 2012; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x1001101xxxxxxxxxxxxx + clz. */ + return 1315; + } + } + else + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x0101101xxxxxxxxxxxxx + uxtw. */ + return 2014; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x1101101xxxxxxxxxxxxx + fneg. */ + return 1453; + } + } + } + else + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x0011101xxxxxxxxxxxxx + uxth. */ + return 2013; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x1011101xxxxxxxxxxxxx + cnot. */ + return 1342; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0xx111101xxxxxxxxxxxxx + neg. */ + return 1747; + } + } + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0001xxxxx1010xxxxxxxxxxxx + adr. */ + return 1278; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0011xxxxx1010xxxxxxxxxxxx + adr. */ + return 1279; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01x1xxxxx1010xxxxxxxxxxxx + adr. */ + return 1280; + } + } + else + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx101100xxxxxxxxxx + ftssel. */ + return 1479; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx101110xxxxxxxxxx + fexpa. */ + return 1423; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx1011x1xxxxxxxxxx + movprfx. */ + return 1740; + } + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x0000xxxxx101xxxxxxxxxxxxx + ldnt1b. */ + return 2087; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x0100xxxxx101xxxxxxxxxxxxx + ldnt1h. */ + return 2090; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x0001xxxxx101xxxxxxxxxxxxx + ldff1sb. */ + return 1666; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x0101xxxxx101xxxxxxxxxxxxx + ldff1sh. */ + return 1678; + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x001xxxxxx101xxxxxxxxxxxxx + ld1rb. */ + return 1534; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x011xxxxxx101xxxxxxxxxxxxx + ld1rh. */ + return 1538; + } + } + } + } + else + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0x0000101xxxxxxxxxxxxx + urecpe. */ + return 2296; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0x1000101xxxxxxxxxxxxx + sqabs. */ + return 2158; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx00x100101xxxxxxxxxxxxx + sadalp. */ + return 2122; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx01x100101xxxxxxxxxxxxx + smaxp. */ + return 2136; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxx10101xxxxxxxxxxxxx + sminp. */ + return 2137; + } + } + else + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx000001101xxxxxxxxxxxxx + ursqrte. */ + return 2301; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx010001101xxxxxxxxxxxxx + addp. */ + return 2049; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0x1001101xxxxxxxxxxxxx + sqneg. */ + return 2185; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx00x101101xxxxxxxxxxxxx + uadalp. */ + return 2253; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx01x101101xxxxxxxxxxxxx + umaxp. */ + return 2261; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxx11101xxxxxxxxxxxxx + uminp. */ + return 2262; + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x00x0xxxxx101xxxxxxxxxxxxx + ldff1sb. */ + return 1665; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x01x0xxxxx101xxxxxxxxxxxxx + ldff1sh. */ + return 1676; + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10001x0001xxxxx101xxxxxxxxxxxxx + ldff1sb. */ + return 1667; + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx1010x0xxxxxxxxxx + smlslb. */ + return 2144; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx1011x0xxxxxxxxxx + umlslb. */ + return 2269; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx1010x1xxxxxxxxxx + smlslt. */ + return 2147; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx1011x1xxxxxxxxxx + umlslt. */ + return 2272; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0101xxxxx101xxxxxxxxxxxxx + ldff1sh. */ + return 1679; + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10001x0011xxxxx101xxxxxxxxxxxxx + prfh. */ + return 1779; + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx1010x0xxxxxxxxxx + smlslb. */ + return 2145; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx1011x0xxxxxxxxxx + umlslb. */ + return 2270; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx1010x1xxxxxxxxxx + smlslt. */ + return 2148; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx1011x1xxxxxxxxxx + umlslt. */ + return 2273; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0111xxxxx101xxxxxxxxxxxxx + ldff1sh. */ + return 1677; + } + } + } + } + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0xxxxx011xxxxxxxxxxxxx + mls. */ + return 1739; + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x00x0xxxxx011xxxxxxxxxxxxx + ldff1b. */ + return 1623; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x01x0xxxxx011xxxxxxxxxxxxx + ldff1h. */ + return 1643; + } + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx011000xxxxxxxxxx + sqdmlalb. */ + return 2163; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx011100xxxxxxxxxx + sqrdmlah. */ + return 2192; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx011x10xxxxxxxxxx + sqdmlslb. */ + return 2170; + } + } + else + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx011001xxxxxxxxxx + sqdmlalt. */ + return 2167; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx011101xxxxxxxxxx + sqrdmlsh. */ + return 2196; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx011x11xxxxxxxxxx + sqdmlslt. */ + return 2174; + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x00x0xxxxx011xxxxxxxxxxxxx + ldff1b. */ + return 1632; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x01x0xxxxx011xxxxxxxxxxxxx + ldff1h. */ + return 1651; + } + } + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx011000xxxxxxxxxx + mul. */ + return 2107; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx011100xxxxxxxxxx + sqdmulh. */ + return 2178; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx011x10xxxxxxxxxx + smulh. */ + return 2150; + } + } + else + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx011001xxxxxxxxxx + pmul. */ + return 2110; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx011101xxxxxxxxxx + sqrdmulh. */ + return 2200; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx011x11xxxxxxxxxx + umulh. */ + return 2275; + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x00x1xxxxx011xxxxxxxxxxxxx + prfd. */ + return 1769; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x01x1xxxxx011xxxxxxxxxxxxx + ldff1h. */ + return 1644; + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10001x00x1xxxxx011xxxxxxxxxxxxx + prfd. */ + return 1771; + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx0110xxxxxxxxxxxx + cmla. */ + return 2059; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx0110xxxxxxxxxxxx + cmla. */ + return 2060; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx0111xxxxxxxxxxxx + sqrdcmlah. */ + return 2186; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx0111xxxxxxxxxxxx + sqrdcmlah. */ + return 2187; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x01x1xxxxx011xxxxxxxxxxxxx + ldff1h. */ + return 1652; + } + } + } + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0xxxxx111xxxxxxxxxxxxx + msb. */ + return 1742; + } + else + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00010xxxx111000xxxxxxxxxx + cntb. */ + return 1344; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01010xxxx111000xxxxxxxxxx + cntw. */ + return 1348; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00110xxxx111000xxxxxxxxxx + cnth. */ + return 1346; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01110xxxx111000xxxxxxxxxx + cntd. */ + return 1345; + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00011xxxx111000xxxxxxxxxx + incb. */ + return 1480; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01011xxxx111000xxxxxxxxxx + incw. */ + return 1488; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00111xxxx111000xxxxxxxxxx + inch. */ + return 1484; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01111xxxx111000xxxxxxxxxx + incd. */ + return 1482; + } + } + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00010xxxx111100xxxxxxxxxx + sqincb. */ + return 1847; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01010xxxx111100xxxxxxxxxx + sqincw. */ + return 1859; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00110xxxx111100xxxxxxxxxx + sqinch. */ + return 1853; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01110xxxx111100xxxxxxxxxx + sqincd. */ + return 1850; + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00011xxxx111100xxxxxxxxxx + sqincb. */ + return 1846; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01011xxxx111100xxxxxxxxxx + sqincw. */ + return 1858; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00111xxxx111100xxxxxxxxxx + sqinch. */ + return 1852; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01111xxxx111100xxxxxxxxxx + sqincd. */ + return 1849; + } + } + } + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00010xxxx111x10xxxxxxxxxx + sqdecb. */ + return 1833; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01010xxxx111x10xxxxxxxxxx + sqdecw. */ + return 1845; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00110xxxx111x10xxxxxxxxxx + sqdech. */ + return 1839; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01110xxxx111x10xxxxxxxxxx + sqdecd. */ + return 1836; + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00011xxxx111x10xxxxxxxxxx + sqdecb. */ + return 1832; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01011xxxx111x10xxxxxxxxxx + sqdecw. */ + return 1844; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00111xxxx111x10xxxxxxxxxx + sqdech. */ + return 1838; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01111xxxx111x10xxxxxxxxxx + sqdecd. */ + return 1835; + } + } + } + } + } + else + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0001xxxxx111001xxxxxxxxxx + decb. */ + return 1355; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0101xxxxx111001xxxxxxxxxx + decw. */ + return 1363; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0011xxxxx111001xxxxxxxxxx + dech. */ + return 1359; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0111xxxxx111001xxxxxxxxxx + decd. */ + return 1357; + } + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00010xxxx111101xxxxxxxxxx + uqincb. */ + return 1994; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01010xxxx111101xxxxxxxxxx + uqincw. */ + return 2006; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00110xxxx111101xxxxxxxxxx + uqinch. */ + return 2000; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01110xxxx111101xxxxxxxxxx + uqincd. */ + return 1997; + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00011xxxx111101xxxxxxxxxx + uqincb. */ + return 1995; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01011xxxx111101xxxxxxxxxx + uqincw. */ + return 2007; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00111xxxx111101xxxxxxxxxx + uqinch. */ + return 2001; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01111xxxx111101xxxxxxxxxx + uqincd. */ + return 1998; + } + } + } + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00010xxxx111x11xxxxxxxxxx + uqdecb. */ + return 1980; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01010xxxx111x11xxxxxxxxxx + uqdecw. */ + return 1992; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00110xxxx111x11xxxxxxxxxx + uqdech. */ + return 1986; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01110xxxx111x11xxxxxxxxxx + uqdecd. */ + return 1983; + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00011xxxx111x11xxxxxxxxxx + uqdecb. */ + return 1981; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01011xxxx111x11xxxxxxxxxx + uqdecw. */ + return 1993; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x00111xxxx111x11xxxxxxxxxx + uqdech. */ + return 1987; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x01111xxxx111x11xxxxxxxxxx + uqdecd. */ + return 1984; + } + } + } + } + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x0000xxxxx111xxxxxxxxxxxxx + prfb. */ + return 1766; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x0100xxxxx111xxxxxxxxxxxxx + prfh. */ + return 1780; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x0001xxxxx111xxxxxxxxxxxxx + ldff1b. */ + return 1634; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x0101xxxxx111xxxxxxxxxxxxx + ldff1h. */ + return 1655; + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x001xxxxxx111xxxxxxxxxxxxx + ld1rb. */ + return 1536; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x011xxxxxx111xxxxxxxxxxxxx + ld1rh. */ + return 1540; + } + } + } + } + else + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10001x0000xxxxx111xxxxxxxxxxxxx + prfb. */ + return 1768; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10001x0100xxxxx111xxxxxxxxxxxxx + prfh. */ + return 1782; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10001x0010xxxxx111xxxxxxxxxxxxx + ldff1b. */ + return 1633; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10001x0110xxxxx111xxxxxxxxxxxxx + ldff1h. */ + return 1653; + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x00x1xxxxx111x00xxxxxxxxxx + sqdmulh. */ + return 2175; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x00x1xxxxx111x10xxxxxxxxxx + mul. */ + return 2104; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x00x1xxxxx111xx1xxxxxxxxxx + sqrdmulh. */ + return 2197; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0001xxxxx111xxxxxxxxxxxxx + ldff1b. */ + return 1635; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0011xxxxx111xxxxxxxxxxxxx + prfd. */ + return 1772; + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx1110x0xxxxxxxxxx + sqdmullb. */ + return 2179; + } + else + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx111100xxxxxxxxxx + sqdmulh. */ + return 2176; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx111110xxxxxxxxxx + mul. */ + return 2105; + } + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx1110x1xxxxxxxxxx + sqdmullt. */ + return 2182; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx1111x1xxxxxxxxxx + sqrdmulh. */ + return 2198; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0101xxxxx111xxxxxxxxxxxxx + ldff1h. */ + return 1656; + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx1110x0xxxxxxxxxx + sqdmullb. */ + return 2180; + } + else + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx111100xxxxxxxxxx + sqdmulh. */ + return 2177; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx111110xxxxxxxxxx + mul. */ + return 2106; + } + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx1110x1xxxxxxxxxx + sqdmullt. */ + return 2183; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx1111x1xxxxxxxxxx + sqrdmulh. */ + return 2199; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0111xxxxx111xxxxxxxxxxxxx + ldff1h. */ + return 1654; + } + } + } + } + } + } + } + } + } + else + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 4) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx0xxxxx000xxxxxxxx0xxxx + cmphs. */ + return 1328; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx0xxxxx000xxxxxxxx1xxxx + cmphi. */ + return 1325; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x00x0xxxxx000xxxxxxxxxxxxx + ld1rqb. */ + return 1542; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x01x0xxxxx000xxxxxxxxxxxxx + ld1rqh. */ + return 1546; + } + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 4) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx0xxxxx010xxxxxxxx0xxxx + cmpge. */ + return 1319; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx0xxxxx010xxxxxxxx1xxxx + cmpgt. */ + return 1322; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0000xxxxx010xxxxxxxxxxxxx + ld1b. */ + return 1500; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0100xxxxx010xxxxxxxxxxxxx + ld1sw. */ + return 1580; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0010xxxxx010xxxxxxxxxxxxx + ld1b. */ + return 1502; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0110xxxxx010xxxxxxxxxxxxx + ld1h. */ + return 1522; + } + } + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 4) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx0xxxxx001xxxxxxxx0xxxx + cmpeq. */ + return 1316; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx0xxxxx001xxxxxxxx1xxxx + cmpne. */ + return 1339; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x00x0xxxxx001xxxxxxxxxxxxx + ld1rqb. */ + return 1541; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x01x0xxxxx001xxxxxxxxxxxxx + ld1rqh. */ + return 1545; + } + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 4) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx0xxxxx011xxxxxxxx0xxxx + cmplt. */ + return 1337; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx0xxxxx011xxxxxxxx1xxxx + cmple. */ + return 1331; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0000xxxxx011xxxxxxxxxxxxx + ldff1b. */ + return 1624; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0100xxxxx011xxxxxxxxxxxxx + ldff1sw. */ + return 1680; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0010xxxxx011xxxxxxxxxxxxx + ldff1b. */ + return 1628; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0110xxxxx011xxxxxxxxxxxxx + ldff1h. */ + return 1647; + } + } + } + } + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0xxxxx0xxxxxxxxxxxxxxx + fcmla. */ + return 1385; + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0x00xxxxx0x0xxxxxxxxxxxxx + st1b. */ + return 1862; } else { @@ -6315,17 +8221,259 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x0010xxxxx111xxxxxxxxxxxxx - ldff1b. */ - return 1633; + 111001x0010xxxxx0x0xxxxxxxxxxxxx + st1b. */ + return 1866; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0110xxxxx0x0xxxxxxxxxxxxx + st1h. */ + return 1887; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0000xxxxx001xxxxxxxxxxxxx + stnt1b. */ + return 2237; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0100xxxxx001xxxxxxxxxxxxx + stnt1h. */ + return 2240; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0010xxxxx001xxxxxxxxxxxxx + stnt1b. */ + return 2236; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0110xxxxx001xxxxxxxxxxxxx + stnt1h. */ + return 2239; + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0000xxxxx011xxxxxxxxxxxxx + stnt1b. */ + return 1932; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0100xxxxx011xxxxxxxxxxxxx + stnt1h. */ + return 1936; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0010xxxxx011xxxxxxxxxxxxx + st3b. */ + return 1916; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0110xxxxx011xxxxxxxxxxxxx + st3h. */ + return 1920; + } + } + } + } + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 4) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x0xx0xxxxx100xxxxxxxx0xxxx + cmpge. */ + return 1320; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x0xx0xxxxx100xxxxxxxx1xxxx + cmpgt. */ + return 1323; + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 4) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx0xxxxx110xxxxxxxx0xxxx + cmphs. */ + return 1329; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x0110xxxxx111xxxxxxxxxxxxx - ldff1h. */ - return 1653; + 001001x0xx0xxxxx110xxxxxxxx1xxxx + cmphi. */ + return 1326; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0000xxxxx110xxxxxxxxxxxxx + ldnt1b. */ + return 1715; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0100xxxxx110xxxxxxxxxxxxx + ldnt1h. */ + return 1719; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0010xxxxx110xxxxxxxxxxxxx + ld3b. */ + return 1607; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0110xxxxx110xxxxxxxxxxxxx + ld3h. */ + return 1611; + } + } + } + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx00x00x1x0xxxxxxxxxxxxx + fcadd. */ + return 1384; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx01x00x1x0xxxxxxxxxxxxx + faddp. */ + return 2065; + } + } + else + { + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0xx1001x0xxxxxxxxxxxxx + fmaxnmp. */ + return 2073; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0xx1011x0xxxxxxxxxxxxx + fminnmp. */ + return 2075; + } + } + } + else + { + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0xxx101x0xxxxxxxxxxxxx + fmaxp. */ + return 2074; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0xxx111x0xxxxxxxxxxxxx + fminp. */ + return 2076; } } } @@ -6337,17 +8485,204 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x0001xxxxx111xxxxxxxxxxxxx - ldff1b. */ - return 1635; + 111001x0000xxxxx1x0xxxxxxxxxxxxx + st1b. */ + return 1863; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0100xxxxx1x0xxxxxxxxxxxxx + st1h. */ + return 1882; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0010xxxxx1x0xxxxxxxxxxxxx + st1b. */ + return 1867; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0110xxxxx1x0xxxxxxxxxxxxx + st1h. */ + return 1888; + } + } + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 4) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx0xxxxx101xxxxxxxx0xxxx + cmpeq. */ + return 1317; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx0xxxxx101xxxxxxxx1xxxx + cmpne. */ + return 1340; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x00000xxxx101xxxxxxxxxxxxx + ld1b. */ + return 1507; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x01000xxxx101xxxxxxxxxxxxx + ld1sw. */ + return 1585; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x00100xxxx101xxxxxxxxxxxxx + ld1b. */ + return 1509; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x01100xxxx101xxxxxxxxxxxxx + ld1h. */ + return 1530; + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x00001xxxx101xxxxxxxxxxxxx + ldnf1b. */ + return 1699; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x01001xxxx101xxxxxxxxxxxxx + ldnf1sw. */ + return 1712; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x00101xxxx101xxxxxxxxxxxxx + ldnf1b. */ + return 1701; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x01101xxxx101xxxxxxxxxxxxx + ldnf1h. */ + return 1705; + } + } + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0000xxxxx101xxxxxxxxxxxxx + fcvtxnt. */ + return 2071; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0000xxxxx101xxxxxxxxxxxxx + st1b. */ + return 1864; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x0101xxxxx111xxxxxxxxxxxxx - ldff1h. */ - return 1656; + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0100xxxx0101xxxxxxxxxxxxx + fcvtnt. */ + return 2068; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0100xxxx1101xxxxxxxxxxxxx + fcvtlt. */ + return 2066; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0100xxxxx101xxxxxxxxxxxxx + st1h. */ + return 1883; + } } } else @@ -6356,36 +8691,46 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x0011xxxxx111xxxxxxxxxxxxx - prfd. */ - return 1772; + x11001x0010xxxxx101xxxxxxxxxxxxx + st1b. */ + return 1871; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x0111xxxxx111xxxxxxxxxxxxx - ldff1h. */ - return 1654; + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0110xxxx0101xxxxxxxxxxxxx + fcvtnt. */ + return 2069; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0110xxxx1101xxxxxxxxxxxxx + fcvtlt. */ + return 2067; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0110xxxxx101xxxxxxxxxxxxx + st1h. */ + return 1892; + } } } } } - } - } - } - } - else - { - if (((word >> 21) & 0x1) == 0) - { - if (((word >> 15) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) - { - if (((word >> 13) & 0x1) == 0) + else { - if (((word >> 14) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { if (((word >> 31) & 0x1) == 0) { @@ -6393,58 +8738,91 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x0xx0xxxxx000xxxxxxxx0xxxx - cmphs. */ - return 1328; + 001001x0xx0xxxxx111xxxxxxxx0xxxx + cmplo. */ + return 1333; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x0xx0xxxxx000xxxxxxxx1xxxx - cmphi. */ - return 1325; + 001001x0xx0xxxxx111xxxxxxxx1xxxx + cmpls. */ + return 1335; } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x00x0xxxxx000xxxxxxxxxxxxx - ld1rqb. */ - return 1542; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0000xxxxx111xxxxxxxxxxxxx + ldnt1b. */ + return 1716; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0100xxxxx111xxxxxxxxxxxxx + ldnt1h. */ + return 1720; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x01x0xxxxx000xxxxxxxxxxxxx - ld1rqh. */ - return 1546; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0010xxxxx111xxxxxxxxxxxxx + ld3b. */ + return 1608; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0110xxxxx111xxxxxxxxxxxxx + ld3h. */ + return 1612; + } } } } else { - if (((word >> 31) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 4) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x0xx0xxxxx010xxxxxxxx0xxxx - cmpge. */ - return 1319; + x11001x0x000xxxx111xxxxxxxxxxxxx + st1b. */ + return 1869; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x0xx0xxxxx010xxxxxxxx1xxxx - cmpgt. */ - return 1322; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x11001x00100xxxx111xxxxxxxxxxxxx + st1b. */ + return 1872; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x11001x01100xxxx111xxxxxxxxxxxxx + st1h. */ + return 1893; + } } } else @@ -6455,17 +8833,17 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0000xxxxx010xxxxxxxxxxxxx - ld1b. */ - return 1500; + x11001x00001xxxx111xxxxxxxxxxxxx + stnt1b. */ + return 1933; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0100xxxxx010xxxxxxxxxxxxx - ld1sw. */ - return 1580; + x11001x01001xxxx111xxxxxxxxxxxxx + stnt1h. */ + return 1937; } } else @@ -6474,43 +8852,71 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0010xxxxx010xxxxxxxxxxxxx - ld1b. */ - return 1502; + x11001x00101xxxx111xxxxxxxxxxxxx + st3b. */ + return 1917; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0110xxxxx010xxxxxxxxxxxxx - ld1h. */ - return 1522; + x11001x01101xxxx111xxxxxxxxxxxxx + st3h. */ + return 1921; } } } } } + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 4) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx1xxxxxxx0xxxxxxxx0xxxx + cmphs. */ + return 1330; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx1xxxxxxx0xxxxxxxx1xxxx + cmphi. */ + return 1327; + } + } else { - if (((word >> 14) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - if (((word >> 4) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x0xx0xxxxx001xxxxxxxx0xxxx - cmpeq. */ - return 1316; + 101001x0001xxxxx0x0xxxxxxxxxxxxx + ld1b. */ + return 1501; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x0xx0xxxxx001xxxxxxxx1xxxx - cmpne. */ - return 1339; + 101001x0101xxxxx0x0xxxxxxxxxxxxx + ld1h. */ + return 1521; } } else @@ -6519,60 +8925,99 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x00x0xxxxx001xxxxxxxxxxxxx - ld1rqb. */ - return 1541; + 101001x0011xxxxx0x0xxxxxxxxxxxxx + ld1b. */ + return 1503; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0111xxxxx0x0xxxxxxxxxxxxx + ld1h. */ + return 1523; + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0001xxxxx1x0xxxxxxxxxxxxx + ld2b. */ + return 1599; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x01x0xxxxx001xxxxxxxxxxxxx - ld1rqh. */ - return 1545; + 101001x0101xxxxx1x0xxxxxxxxxxxxx + ld2h. */ + return 1603; } } - } - else - { - if (((word >> 31) & 0x1) == 0) + else { - if (((word >> 4) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x0xx0xxxxx011xxxxxxxx0xxxx - cmplt. */ - return 1337; + 101001x0011xxxxx1x0xxxxxxxxxxxxx + ld4b. */ + return 1615; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x0xx0xxxxx011xxxxxxxx1xxxx - cmple. */ - return 1331; + 101001x0111xxxxx1x0xxxxxxxxxxxxx + ld4h. */ + return 1619; } } - else + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0000xxxxx011xxxxxxxxxxxxx - ldff1b. */ - return 1624; + x11001x00x1xxxxx0000x0xxxxxxxxxx + fmla. */ + return 1438; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0100xxxxx011xxxxxxxxxxxxx - ldff1sw. */ - return 1680; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x11001x0101xxxxx0000x0xxxxxxxxxx + fmla. */ + return 1439; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x11001x0111xxxxx0000x0xxxxxxxxxx + fmla. */ + return 1440; + } } } else @@ -6581,62 +9026,48 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0010xxxxx011xxxxxxxxxxxxx - ldff1b. */ - return 1628; + x11001x00x1xxxxx0000x1xxxxxxxxxx + fmls. */ + return 1442; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0110xxxxx011xxxxxxxxxxxxx - ldff1h. */ - return 1647; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x11001x0101xxxxx0000x1xxxxxxxxxx + fmls. */ + return 1443; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x11001x0111xxxxx0000x1xxxxxxxxxx + fmls. */ + return 1444; + } } } } - } - } - } - else - { - if (((word >> 31) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx0xxxxx0xxxxxxxxxxxxxxx - fcmla. */ - return 1385; - } - else - { - if (((word >> 13) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0x00xxxxx0x0xxxxxxxxxxxxx - st1b. */ - return 1862; - } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 111001x0010xxxxx0x0xxxxxxxxxxxxx - st1b. */ - return 1866; + x11001x0x01xxxxx0001xxxxxxxxxxxx + fcmla. */ + return 1386; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 111001x0110xxxxx0x0xxxxxxxxxxxxx - st1h. */ - return 1887; + x11001x0x11xxxxx0001xxxxxxxxxxxx + fcmla. */ + return 1387; } } } @@ -6648,17 +9079,39 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 111001x0000xxxxx0x1xxxxxxxxxxxxx - stnt1b. */ - return 1932; + x11001x0001xxxxx010xxxxxxxxxxxxx + st1b. */ + return 1865; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0100xxxxx0x1xxxxxxxxxxxxx - stnt1h. */ - return 1936; + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0101xxxxx010xx0xxxxxxxxxx + fmlalb. */ + return 2077; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0101xxxxx010xx1xxxxxxxxxx + fmlalt. */ + return 2079; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0101xxxxx010xxxxxxxxxxxxx + st1h. */ + return 1884; + } } } else @@ -6667,67 +9120,130 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 111001x0010xxxxx0x1xxxxxxxxxxxxx - st3b. */ - return 1916; + x11001x0011xxxxx010xxxxxxxxxxxxx + st1b. */ + return 1868; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 111001x0110xxxxx0x1xxxxxxxxxxxxx - st3h. */ - return 1920; + x11001x0111xxxxx010xxxxxxxxxxxxx + st1h. */ + return 1889; } } } } - } - } - else - { - if (((word >> 13) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) + else { - if (((word >> 14) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - if (((word >> 4) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01001x0xx0xxxxx100xxxxxxxx0xxxx - cmpge. */ - return 1320; + if (((word >> 10) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x01xxxxx1x0xx0xxxxxxxxxx + fmlalb. */ + return 2078; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x01xxxxx1x0xx1xxxxxxxxxx + fmlalt. */ + return 2080; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x01001x0xx0xxxxx100xxxxxxxx1xxxx - cmpgt. */ - return 1323; + 111001x0x01xxxxx1x0xxxxxxxxxxxxx + st1h. */ + return 1885; } } else { - if (((word >> 31) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x11001x0x11xxxxx1x0xxxxxxxxxxxxx + st1h. */ + return 1890; + } + } + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 4) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx1xxxxxxx1xxxxxxxx0xxxx + cmplo. */ + return 1334; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x0xx1xxxxxxx1xxxxxxxx1xxxx + cmpls. */ + return 1336; + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) { - if (((word >> 4) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x0xx0xxxxx110xxxxxxxx0xxxx - cmphs. */ - return 1329; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x00010xxxxx01xxxxxxxxxxxxx + ld1b. */ + return 1508; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x01010xxxxx01xxxxxxxxxxxxx + ld1h. */ + return 1529; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x0xx0xxxxx110xxxxxxxx1xxxx - cmphi. */ - return 1326; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x00110xxxxx01xxxxxxxxxxxxx + ld1b. */ + return 1510; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x01110xxxxx01xxxxxxxxxxxxx + ld1h. */ + return 1531; + } } } else @@ -6738,17 +9254,17 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0000xxxxx110xxxxxxxxxxxxx - ldnt1b. */ - return 1715; + 101001x00011xxxxx01xxxxxxxxxxxxx + ldnf1b. */ + return 1700; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0100xxxxx110xxxxxxxxxxxxx - ldnt1h. */ - return 1719; + 101001x01011xxxxx01xxxxxxxxxxxxx + ldnf1h. */ + return 1704; } } else @@ -6757,70 +9273,103 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0010xxxxx110xxxxxxxxxxxxx - ld3b. */ - return 1607; + 101001x00111xxxxx01xxxxxxxxxxxxx + ldnf1b. */ + return 1702; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0110xxxxx110xxxxxxxxxxxxx - ld3h. */ - return 1611; + 101001x01111xxxxx01xxxxxxxxxxxxx + ldnf1h. */ + return 1706; } } } } - } - else - { - if (((word >> 31) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx0xxxxx1x0xxxxxxxxxxxxx - fcadd. */ - return 1384; - } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0000xxxxx1x0xxxxxxxxxxxxx - st1b. */ - return 1863; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0001xxxxx011xxxxxxxxxxxxx + ldff1b. */ + return 1626; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0101xxxxx011xxxxxxxxxxxxx + ldff1h. */ + return 1645; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0100xxxxx1x0xxxxxxxxxxxxx - st1h. */ - return 1882; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0011xxxxx011xxxxxxxxxxxxx + ldff1b. */ + return 1630; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0111xxxxx011xxxxxxxxxxxxx + ldff1h. */ + return 1649; + } } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0010xxxxx1x0xxxxxxxxxxxxx - st1b. */ - return 1867; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0001xxxxx111xxxxxxxxxxxxx + ld2b. */ + return 1600; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0101xxxxx111xxxxxxxxxxxxx + ld2h. */ + return 1604; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0110xxxxx1x0xxxxxxxxxxxxx - st1h. */ - return 1888; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0011xxxxx111xxxxxxxxxxxxx + ld4b. */ + return 1616; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0111xxxxx111xxxxxxxxxxxxx + ld4h. */ + return 1620; + } } } } @@ -6830,110 +9379,33 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 14) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - if (((word >> 4) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x11001x00x1xxxxx001xxxxxxxxxxxxx + fmul. */ + return 1449; + } + else + { + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x0xx0xxxxx101xxxxxxxx0xxxx - cmpeq. */ - return 1317; + x11001x0101xxxxx001xxxxxxxxxxxxx + fmul. */ + return 1450; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x0xx0xxxxx101xxxxxxxx1xxxx - cmpne. */ - return 1340; - } - } - else - { - if (((word >> 20) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x00000xxxx101xxxxxxxxxxxxx - ld1b. */ - return 1507; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x01000xxxx101xxxxxxxxxxxxx - ld1sw. */ - return 1585; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x00100xxxx101xxxxxxxxxxxxx - ld1b. */ - return 1509; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x01100xxxx101xxxxxxxxxxxxx - ld1h. */ - return 1530; - } - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x00001xxxx101xxxxxxxxxxxxx - ldnf1b. */ - return 1699; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x01001xxxx101xxxxxxxxxxxxx - ldnf1sw. */ - return 1712; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x00101xxxx101xxxxxxxxxxxxx - ldnf1b. */ - return 1701; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x01101xxxx101xxxxxxxxxxxxx - ldnf1h. */ - return 1705; - } - } + x11001x0111xxxxx001xxxxxxxxxxxxx + fmul. */ + return 1451; } } } @@ -6941,21 +9413,32 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 22) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0000xxxxx101xxxxxxxxxxxxx - st1b. */ - return 1864; + if (((word >> 10) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x01xxxxx101xx0xxxxxxxxxx + fmlslb. */ + return 2082; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x01xxxxx101xx1xxxxxxxxxx + fmlslt. */ + return 2084; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0100xxxxx101xxxxxxxxxxxxx + 111001x0x01xxxxx101xxxxxxxxxxxxx st1h. */ - return 1883; + return 1886; } } else @@ -6964,115 +9447,126 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0010xxxxx101xxxxxxxxxxxxx + x11001x0011xxxxx101xxxxxxxxxxxxx st1b. */ - return 1871; + return 1873; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0110xxxxx101xxxxxxxxxxxxx + x11001x0111xxxxx101xxxxxxxxxxxxx st1h. */ - return 1892; + return 1894; } } } } else { - if (((word >> 30) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - if (((word >> 4) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x0xx0xxxxx111xxxxxxxx0xxxx - cmplo. */ - return 1333; + x11001x0001xxxxx011xxxxxxxxxxxxx + st2b. */ + return 1908; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x0xx0xxxxx111xxxxxxxx1xxxx - cmpls. */ - return 1335; - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0000xxxxx111xxxxxxxxxxxxx - ldnt1b. */ - return 1716; + if (((word >> 10) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0101xxxxx011xx0xxxxxxxxxx + fmlslb. */ + return 2081; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0101xxxxx011xx1xxxxxxxxxx + fmlslt. */ + return 2083; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0100xxxxx111xxxxxxxxxxxxx - ldnt1h. */ - return 1720; + 111001x0101xxxxx011xxxxxxxxxxxxx + st2h. */ + return 1912; } } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x11001x0011xxxxx011xxxxxxxxxxxxx + st4b. */ + return 1924; + } else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x11001x0111xxxxx011xxxxxxxxxxxxx + st4h. */ + return 1928; + } + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) { if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0010xxxxx111xxxxxxxxxxxxx - ld3b. */ - return 1608; + x11001x00010xxxx111xxxxxxxxxxxxx + st1b. */ + return 1870; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0110xxxxx111xxxxxxxxxxxxx - ld3h. */ - return 1612; + x11001x01010xxxx111xxxxxxxxxxxxx + st1h. */ + return 1891; } } - } - } - else - { - if (((word >> 20) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0x000xxxx111xxxxxxxxxxxxx - st1b. */ - return 1869; - } else { if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x00100xxxx111xxxxxxxxxxxxx + x11001x00110xxxx111xxxxxxxxxxxxx st1b. */ - return 1872; + return 1874; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x01100xxxx111xxxxxxxxxxxxx + x11001x01110xxxx111xxxxxxxxxxxxx st1h. */ - return 1893; + return 1895; } } } @@ -7084,17 +9578,17 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x00001xxxx111xxxxxxxxxxxxx - stnt1b. */ - return 1933; + x11001x00011xxxx111xxxxxxxxxxxxx + st2b. */ + return 1909; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x01001xxxx111xxxxxxxxxxxxx - stnt1h. */ - return 1937; + x11001x01011xxxx111xxxxxxxxxxxxx + st2h. */ + return 1913; } } else @@ -7103,17 +9597,17 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x00101xxxx111xxxxxxxxxxxxx - st3b. */ - return 1917; + x11001x00111xxxx111xxxxxxxxxxxxx + st4b. */ + return 1925; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x01101xxxx111xxxxxxxxxxxxx - st3h. */ - return 1921; + x11001x01111xxxx111xxxxxxxxxxxxx + st4h. */ + return 1929; } } } @@ -7122,509 +9616,779 @@ aarch64_opcode_lookup_1 (uint32_t word) } } } - else + } + } + else + { + if (((word >> 29) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) { - if (((word >> 13) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 4) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x0xx1xxxxxxx0xxxxxxxx0xxxx - cmphs. */ - return 1330; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x10000xxxxxxxxxxxxxxxxxxxx + orr. */ + return 1754; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x11000xxxxxxxxxxxxxxxxxxxx + and. */ + return 1282; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x0xx1xxxxxxx0xxxxxxxx1xxxx - cmphi. */ - return 1327; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x10100xxxxxxxxxxxxxxxxxxxx + eor. */ + return 1369; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x11100xxxxxxxxxxxxxxxxxxxx + dupm. */ + return 1367; + } } } else { if (((word >> 15) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0001xxxxx0x0xxxxxxxxxxxxx - ld1b. */ - return 1501; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0101xxxxx0x0xxxxxxxxxxxxx - ld1h. */ - return 1521; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0011xxxxx0x0xxxxxxxxxxxxx - ld1b. */ - return 1503; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0111xxxxx0x0xxxxxxxxxxxxx - ld1h. */ - return 1523; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx01xxxx0xxxxxxxxxxxxxxx + cpy. */ + return 1352; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx01xxxx1xxxxxxxxxxxxxxx + fcpy. */ + return 1399; } - else + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0001xxxxx1x0xxxxxxxxxxxxx - ld2b. */ - return 1599; + 000001x1x01xxxxx000xxxxxxxxxxxxx + ext. */ + return 1374; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0101xxxxx1x0xxxxxxxxxxxxx - ld2h. */ - return 1603; + 000001x1x11xxxxx000xxxxxxxxxxxxx + ext. */ + return 2064; } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 16) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0011xxxxx1x0xxxxxxxxxxxxx - ld4b. */ - return 1615; + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x0000100xxxxxxxxxxxxx + cpy. */ + return 1350; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x1000100xxxxxxxxxxxxx + clasta. */ + return 1308; + } + } + else + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x0100100xxxxxxxxxxxxx + revb. */ + return 1802; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x1100100xxxxxxxxxxxxx + splice. */ + return 1829; + } + } + } + else + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x0010100xxxxxxxxxxxxx + lasta. */ + return 1496; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x1010100xxxxxxxxxxxxx + clasta. */ + return 1309; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xx110100xxxxxxxxxxxxx + revw. */ + return 1804; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0111xxxxx1x0xxxxxxxxxxxxx - ld4h. */ - return 1619; + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x0001100xxxxxxxxxxxxx + compact. */ + return 1349; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x1001100xxxxxxxxxxxxx + clastb. */ + return 1311; + } + } + else + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x0101100xxxxxxxxxxxxx + revh. */ + return 1803; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x1101100xxxxxxxxxxxxx + splice. */ + return 2157; + } + } + } + else + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x0011100xxxxxxxxxxxxx + lastb. */ + return 1498; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x1011100xxxxxxxxxxxxx + clastb. */ + return 1312; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xx111100xxxxxxxxxxxxx + rbit. */ + return 1795; + } + } } } } - } - } - else - { - if (((word >> 15) & 0x1) == 0) - { - if (((word >> 14) & 0x1) == 0) + else { - if (((word >> 12) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxxxx001000xxxxxxxxxx + dup. */ + return 1365; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxxxx001100xxxxxxxxxx + tbl. */ + return 1952; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxxxx001010xxxxxxxxxx + tbl. */ + return 2246; + } + else + { + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx100000001110xxxxxxxxxx + dup. */ + return 1364; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx110000001110xxxxxxxxxx + sunpklo. */ + return 1948; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x1000001110xxxxxxxxxx + rev. */ + return 1801; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx10x100001110xxxxxxxxxx + insr. */ + return 1493; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx11x100001110xxxxxxxxxx + insr. */ + return 1494; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxx10001110xxxxxxxxxx + uunpklo. */ + return 2011; + } + } + else + { + if (((word >> 17) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxx01001110xxxxxxxxxx + sunpkhi. */ + return 1947; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxx11001110xxxxxxxxxx + uunpkhi. */ + return 2010; + } + } + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxxxx001xx1xxxxxxxxxx + tbx. */ + return 2247; + } + } + else { - if (((word >> 10) & 0x1) == 0) + if (((word >> 16) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x00x1xxxxx0000x0xxxxxxxxxx - fmla. */ - return 1438; - } - else + if (((word >> 19) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0101xxxxx0000x0xxxxxxxxxx - fmla. */ - return 1439; + 000001x1xx100xx0101xxxxxxxxxxxxx + lasta. */ + return 1495; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0111xxxxx0000x0xxxxxxxxxx - fmla. */ - return 1440; + 000001x1xx110xx0101xxxxxxxxxxxxx + clasta. */ + return 1310; } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x1xx0101xxxxxxxxxxxxx + cpy. */ + return 1351; + } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x00x1xxxxx0000x1xxxxxxxxxx - fmls. */ - return 1442; + 000001x1xx10xxx1101xxxxxxxxxxxxx + lastb. */ + return 1497; } else { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0101xxxxx0000x1xxxxxxxxxx - fmls. */ - return 1443; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0111xxxxx0000x1xxxxxxxxxx - fmls. */ - return 1444; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx11xxx1101xxxxxxxxxxxxx + clastb. */ + return 1313; } } } - else - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0x01xxxxx0001xxxxxxxxxxxx - fcmla. */ - return 1386; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0x11xxxxx0001xxxxxxxxxxxx - fcmla. */ - return 1387; - } - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0001xxxxx010xxxxxxxxxxxxx - st1b. */ - return 1865; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0101xxxxx010xxxxxxxxxxxxx - st1h. */ - return 1884; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0011xxxxx010xxxxxxxxxxxxx - st1b. */ - return 1868; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0111xxxxx010xxxxxxxxxxxxx - st1h. */ - return 1889; - } - } - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0x01xxxxx1x0xxxxxxxxxxxxx - st1h. */ - return 1885; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0x11xxxxx1x0xxxxxxxxxxxxx - st1h. */ - return 1890; - } - } - } - } - else - { - if (((word >> 30) & 0x1) == 0) - { - if (((word >> 31) & 0x1) == 0) - { - if (((word >> 4) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x0xx1xxxxxxx1xxxxxxxx0xxxx - cmplo. */ - return 1334; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x0xx1xxxxxxx1xxxxxxxx1xxxx - cmpls. */ - return 1336; } } else { - if (((word >> 14) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x00010xxxxx01xxxxxxxxxxxxx - ld1b. */ - return 1508; + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx10xxxx010000xxxxxxxxxx + zip1. */ + return 2028; + } + else + { + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx11x0x0010000xxxxxxxxxx + punpklo. */ + return 1794; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx11x1x0010000xxxxxxxxxx + rev. */ + return 1800; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx11xxx1010000xxxxxxxxxx + punpkhi. */ + return 1793; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxxxx011000xxxxxxxxxx + zip1. */ + return 2029; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x01010xxxxx01xxxxxxxxxxxxx - ld1h. */ - return 1529; + if (((word >> 13) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxxxx010100xxxxxxxxxx + trn1. */ + return 1953; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxxxx011100xxxxxxxxxx + trn1. */ + return 1954; + } } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x00110xxxxx01xxxxxxxxxxxxx - ld1b. */ - return 1510; + 000001x1xx1xxxxx010x10xxxxxxxxxx + uzp1. */ + return 2015; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x01110xxxxx01xxxxxxxxxxxxx - ld1h. */ - return 1531; + 000001x1xx1xxxxx011x10xxxxxxxxxx + uzp1. */ + return 2016; } } } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x00011xxxxx01xxxxxxxxxxxxx - ldnf1b. */ - return 1700; + if (((word >> 13) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxxxx010001xxxxxxxxxx + zip2. */ + return 2030; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxxxx011001xxxxxxxxxx + zip2. */ + return 2031; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x01011xxxxx01xxxxxxxxxxxxx - ldnf1h. */ - return 1704; + if (((word >> 13) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxxxx010101xxxxxxxxxx + trn2. */ + return 1955; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxxxx011101xxxxxxxxxx + trn2. */ + return 1956; + } } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x00111xxxxx01xxxxxxxxxxxxx - ldnf1b. */ - return 1702; + 000001x1xx1xxxxx010x11xxxxxxxxxx + uzp2. */ + return 2017; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x01111xxxxx01xxxxxxxxxxxxx - ldnf1h. */ - return 1706; + 000001x1xx1xxxxx011x11xxxxxxxxxx + uzp2. */ + return 2018; } } } } else { - if (((word >> 15) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxxxx11xxxxxxxxxxxxxx + sel. */ + return 1819; + } + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x1x0xxxxxx000xxxxxxxxxxxxx + ldr. */ + return 1723; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x1x1xxxxxx000xxxxxxxxxxxxx + prfb. */ + return 1767; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x10xxxxxxx100xxxxxxxxxxxxx + ld1rsh. */ + return 1552; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x11xxxxxxx100xxxxxxxxxxxxx + ld1rsb. */ + return 1549; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0001xxxxx011xxxxxxxxxxxxx - ldff1b. */ - return 1626; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0101xxxxx011xxxxxxxxxxxxx - ldff1h. */ - return 1645; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x10x0xxxxx010xxxxxxxxxxxxx + ld1w. */ + return 1587; } else { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0011xxxxx011xxxxxxxxxxxxx - ldff1b. */ - return 1630; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0111xxxxx011xxxxxxxxxxxxx - ldff1h. */ - return 1649; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x10x1xxxxx010xxxxxxxxxxxxx + ld1w. */ + return 1588; } } else { if (((word >> 22) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0001xxxxx111xxxxxxxxxxxxx - ld2b. */ - return 1600; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0101xxxxx111xxxxxxxxxxxxx - ld2h. */ - return 1604; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x110xxxxxx010xxxxxxxxxxxxx + ldr. */ + return 1724; } else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x111xxxxxx010xxxxxxxxxxxxx + prfw. */ + return 1788; + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) { if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0011xxxxx111xxxxxxxxxxxxx - ld4b. */ - return 1616; + 100001x1000xxxxx110xxxxxxxxxxxxx + prfw. */ + return 1784; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x0111xxxxx111xxxxxxxxxxxxx - ld4h. */ - return 1620; + 100001x1100xxxxx110xxxxxxxxxxxxx + prfd. */ + return 1770; } } - } - } - } - } - else - { - if (((word >> 14) & 0x1) == 0) - { - if (((word >> 15) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x00x1xxxxx001xxxxxxxxxxxxx - fmul. */ - return 1449; + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x1x01xxxxx110xxxxxxxxxxxxx + ld1w. */ + return 1595; + } } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0101xxxxx001xxxxxxxxxxxxx - fmul. */ - return 1450; + 100001x101xxxxxx110xxxxxxxxxxxxx + ld1rw. */ + return 1555; } else { /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0111xxxxx001xxxxxxxxxxxxx - fmul. */ - return 1451; + 10987654321098765432109876543210 + 100001x111xxxxxx110xxxxxxxxxxxxx + ld1rsb. */ + return 1551; } } } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x1xxxxxxxx001xxxxxxxxxxxxx + prfh. */ + return 1781; + } else { if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0x01xxxxx101xxxxxxxxxxxxx - st1h. */ - return 1886; + 100001x1x0xxxxxx101xxxxxxxxxxxxx + ldnt1w. */ + return 2095; } else { @@ -7632,17 +10396,17 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0011xxxxx101xxxxxxxxxxxxx - st1b. */ - return 1873; + 100001x101xxxxxx101xxxxxxxxxxxxx + ld1rsh. */ + return 1553; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0111xxxxx101xxxxxxxxxxxxx - st1h. */ - return 1894; + 100001x111xxxxxx101xxxxxxxxxxxxx + ld1rsb. */ + return 1550; } } } @@ -7651,127 +10415,83 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 15) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0001xxxxx011xxxxxxxxxxxxx - st2b. */ - return 1908; + 100001x10x0xxxxx011xxxxxxxxxxxxx + ldff1w. */ + return 1687; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0101xxxxx011xxxxxxxxxxxxx - st2h. */ - return 1912; + 100001x10x1xxxxx011xxxxxxxxxxxxx + ldff1w. */ + return 1688; } } else { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0011xxxxx011xxxxxxxxxxxxx - st4b. */ - return 1924; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0111xxxxx011xxxxxxxxxxxxx - st4h. */ - return 1928; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x11xxxxxxx011xxxxxxxxxxxxx + prfd. */ + return 1774; } } else { - if (((word >> 20) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x00010xxxx111xxxxxxxxxxxxx - st1b. */ - return 1870; + 100001x1000xxxxx111xxxxxxxxxxxxx + prfw. */ + return 1787; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x01010xxxx111xxxxxxxxxxxxx - st1h. */ - return 1891; + 100001x1100xxxxx111xxxxxxxxxxxxx + prfd. */ + return 1773; } } else { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x00110xxxx111xxxxxxxxxxxxx - st1b. */ - return 1874; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x01110xxxx111xxxxxxxxxxxxx - st1h. */ - return 1895; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x1x01xxxxx111xxxxxxxxxxxxx + ldff1w. */ + return 1697; } } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x00011xxxx111xxxxxxxxxxxxx - st2b. */ - return 1909; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x01011xxxx111xxxxxxxxxxxxx - st2h. */ - return 1913; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x101xxxxxx111xxxxxxxxxxxxx + ld1rw. */ + return 1556; } else { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x00111xxxx111xxxxxxxxxxxxx - st4b. */ - return 1925; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x01111xxxx111xxxxxxxxxxxxx - st4h. */ - return 1929; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x111xxxxxx111xxxxxxxxxxxxx + ld1rd. */ + return 1537; } } } @@ -7779,886 +10499,1001 @@ aarch64_opcode_lookup_1 (uint32_t word) } } } - } - } - else - { - if (((word >> 29) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) + else { - if (((word >> 31) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { - if (((word >> 21) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x10000xxxxxxxxxxxxxxxxxxxx - orr. */ - return 1754; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x11000xxxxxxxxxxxxxxxxxxxx - and. */ - return 1282; - } - } - else + if (((word >> 21) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x10100xxxxxxxxxxxxxxxxxxxx - eor. */ - return 1369; - } - else + if (((word >> 31) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x11100xxxxxxxxxxxxxxxxxxxx - dupm. */ - return 1367; - } - } - } - else - { - if (((word >> 15) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx01xxxx0xxxxxxxxxxxxxxx - cpy. */ - return 1352; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx01xxxx1xxxxxxxxxxxxxxx - fcpy. */ - return 1399; - } - } - } - else - { - if (((word >> 14) & 0x1) == 0) - { - if (((word >> 13) & 0x1) == 0) - { - if (((word >> 15) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx000000xxxxxxxxxx + saddlb. */ + return 2123; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx000100xxxxxxxxxx + ssublb. */ + return 2230; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx000010xxxxxxxxxx + uaddlb. */ + return 2254; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx000110xxxxxxxxxx + usublb. */ + return 2307; + } + } + } + else + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx000001xxxxxxxxxx + saddlt. */ + return 2125; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx000101xxxxxxxxxx + ssublt. */ + return 2232; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx000011xxxxxxxxxx + uaddlt. */ + return 2255; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx000111xxxxxxxxxx + usublt. */ + return 2308; + } + } + } + } + else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xxxxx000xxxxxxxxxxxxx - ext. */ - return 1374; + 110001x1xx0xxxxx000xxxxxxxxxxxxx + ld1sw. */ + return 1581; } - else + } + else + { + if (((word >> 31) & 0x1) == 0) { - if (((word >> 16) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - if (((word >> 17) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1x0000100xxxxxxxxxxxxx - cpy. */ - return 1350; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1x1000100xxxxxxxxxxxxx - clasta. */ - return 1308; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx000000xxxxxxxxxx + sqshrunb. */ + return 2213; } else { - if (((word >> 19) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1x0100100xxxxxxxxxxxxx - revb. */ - return 1802; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1x1100100xxxxxxxxxxxxx - splice. */ - return 1829; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx000100xxxxxxxxxx + shrnb. */ + return 2131; } } else { - if (((word >> 18) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1x0010100xxxxxxxxxxxxx - lasta. */ - return 1496; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1x1010100xxxxxxxxxxxxx - clasta. */ - return 1309; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx000010xxxxxxxxxx + sqrshrunb. */ + return 2205; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xx110100xxxxxxxxxxxxx - revw. */ - return 1804; + 010001x1xx1xxxxx000110xxxxxxxxxx + rshrnb. */ + return 2113; } } } else { - if (((word >> 17) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1x0001100xxxxxxxxxxxxx - compact. */ - return 1349; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1x1001100xxxxxxxxxxxxx - clastb. */ - return 1311; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx000001xxxxxxxxxx + sqshrunt. */ + return 2214; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xx101100xxxxxxxxxxxxx - revh. */ - return 1803; + 010001x1xx1xxxxx000101xxxxxxxxxx + shrnt. */ + return 2132; } } else { - if (((word >> 18) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1x0011100xxxxxxxxxxxxx - lastb. */ - return 1498; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1x1011100xxxxxxxxxxxxx - clastb. */ - return 1312; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx000011xxxxxxxxxx + sqrshrunt. */ + return 2206; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xx111100xxxxxxxxxxxxx - rbit. */ - return 1795; + 010001x1xx1xxxxx000111xxxxxxxxxx + rshrnt. */ + return 2114; } } } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1xx1xxxxx000xxxxxxxxxxxxx + ld1sw. */ + return 1582; + } } - else + } + else + { + if (((word >> 21) & 0x1) == 0) { - if (((word >> 15) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx100000xxxxxxxxxx + saddlbt. */ + return 2124; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx100100xxxxxxxxxx + eorbt. */ + return 2062; + } + } + else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xxxxx00100xxxxxxxxxxx - dup. */ - return 1365; + 010001x1xx0xxxxx100x10xxxxxxxxxx + ssublbt. */ + return 2231; + } + } + else + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx100x01xxxxxxxxxx + eortb. */ + return 2063; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xxxxx00110xxxxxxxxxxx - tbl. */ - return 1952; + 010001x1xx0xxxxx100x11xxxxxxxxxx + ssubltb. */ + return 2233; } } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1x00xxxxx100xxxxxxxxxxxxx + ldnt1sw. */ + return 2094; + } else { - if (((word >> 16) & 0x1) == 0) - { - if (((word >> 17) & 0x1) == 0) - { - if (((word >> 18) & 0x1) == 0) - { - if (((word >> 19) & 0x1) == 0) - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx100000001x1xxxxxxxxxxx - dup. */ - return 1364; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx110000001x1xxxxxxxxxxx - sunpklo. */ - return 1948; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1x1000001x1xxxxxxxxxxx - rev. */ - return 1801; - } - } - else - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx10x100001x1xxxxxxxxxxx - insr. */ - return 1493; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx11x100001x1xxxxxxxxxxx - insr. */ - return 1494; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1x10xxxxx100xxxxxxxxxxxxx + ld1sw. */ + return 1583; + } + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 4) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx100xxxxxxxx0xxxx + match. */ + return 2097; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx100xxxxxxxx1xxxx + nmatch. */ + return 2109; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1x01xxxxx100xxxxxxxxxxxxx + ld1sw. */ + return 1586; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1x11xxxxx100xxxxxxxxxxxxx + ld1sw. */ + return 1584; + } + } + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx010000xxxxxxxxxx + saddwb. */ + return 2126; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xxx10001x1xxxxxxxxxxx - uunpklo. */ - return 2011; + 010001x1xx0xxxxx010100xxxxxxxxxx + ssubwb. */ + return 2234; } } else { - if (((word >> 17) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xxx01001x1xxxxxxxxxxx - sunpkhi. */ - return 1947; + 010001x1xx0xxxxx010010xxxxxxxxxx + uaddwb. */ + return 2256; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xxx11001x1xxxxxxxxxxx - uunpkhi. */ - return 2010; + 010001x1xx0xxxxx010110xxxxxxxxxx + usubwb. */ + return 2309; } } } - } - else - { - if (((word >> 16) & 0x1) == 0) + else { - if (((word >> 19) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx100xx0101xxxxxxxxxxxxx - lasta. */ - return 1495; + 010001x1xx0xxxxx010001xxxxxxxxxx + saddwt. */ + return 2127; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx110xx0101xxxxxxxxxxxxx - clasta. */ - return 1310; + 010001x1xx0xxxxx010101xxxxxxxxxx + ssubwt. */ + return 2235; } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1x1xx0101xxxxxxxxxxxxx - cpy. */ - return 1351; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx010011xxxxxxxxxx + uaddwt. */ + return 2257; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx010111xxxxxxxxxx + usubwt. */ + return 2310; + } } } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x10x0xxxxx010xxxxxxxxxxxxx + ld1w. */ + return 1591; + } else { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx10xxx1101xxxxxxxxxxxxx - lastb. */ - return 1497; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx11xxx1101xxxxxxxxxxxxx - clastb. */ - return 1313; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x11x0xxxxx010xxxxxxxxxxxxx + ld1d. */ + return 1513; } } } - } - else - { - if (((word >> 15) & 0x1) == 0) + else { - if (((word >> 10) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - if (((word >> 13) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx10xxxx010000xxxxxxxxxx - zip1. */ - return 2028; + 010001x10x1xxxxx010000xxxxxxxxxx + sqxtnb. */ + return 2217; } else { - if (((word >> 16) & 0x1) == 0) - { - if (((word >> 18) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx11x0x0010000xxxxxxxxxx - punpklo. */ - return 1794; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx11x1x0010000xxxxxxxxxx - rev. */ - return 1800; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx11xxx1010000xxxxxxxxxx - punpkhi. */ - return 1793; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x10x1xxxxx010100xxxxxxxxxx + sqxtunb. */ + return 2219; } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xxxxx011000xxxxxxxxxx - zip1. */ - return 2029; + 010001x10x1xxxxx010x10xxxxxxxxxx + uqxtnb. */ + return 2294; } } else { - if (((word >> 13) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1xxxxx010100xxxxxxxxxx - trn1. */ - return 1953; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x10x1xxxxx010001xxxxxxxxxx + sqxtnt. */ + return 2218; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x10x1xxxxx010101xxxxxxxxxx + sqxtunt. */ + return 2220; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xxxxx011100xxxxxxxxxx - trn1. */ - return 1954; + 010001x10x1xxxxx010x11xxxxxxxxxx + uqxtnt. */ + return 2295; } } } else { - if (((word >> 13) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x10x1xxxxx010xxxxxxxxxxxxx + ld1w. */ + return 1592; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10001x11x1xxxxx010xxxxxxxxxxxxx + ld1d. */ + return 1514; + } + } + } + else + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1xxxxx010x10xxxxxxxxxx - uzp1. */ - return 2015; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx110000xxxxxxxxxx + sabalb. */ + return 2118; + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x10x0xxxxx110100xxxxxxxxxx + adclb. */ + return 2045; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x11x0xxxxx110100xxxxxxxxxx + sbclb. */ + return 2128; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1xxxxx011x10xxxxxxxxxx - uzp1. */ - return 2016; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx110001xxxxxxxxxx + sabalt. */ + return 2119; + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x10x0xxxxx110101xxxxxxxxxx + adclt. */ + return 2046; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x11x0xxxxx110101xxxxxxxxxx + sbclt. */ + return 2129; + } + } } } - } - else - { - if (((word >> 11) & 0x1) == 0) + else { if (((word >> 12) & 0x1) == 0) { - if (((word >> 13) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xxxxx010001xxxxxxxxxx - zip2. */ - return 2030; + 010001x1xx0xxxxx110010xxxxxxxxxx + uabalb. */ + return 2249; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xxxxx011001xxxxxxxxxx - zip2. */ - return 2031; + 010001x1xx0xxxxx110011xxxxxxxxxx + uabalt. */ + return 2250; } } else { - if (((word >> 13) & 0x1) == 0) + if (((word >> 16) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xxxxx010101xxxxxxxxxx - trn2. */ - return 1955; + 010001x1xx0xxxx011011xxxxxxxxxxx + cadd. */ + return 2054; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xxxxx011101xxxxxxxxxx - trn2. */ - return 1956; + 010001x1xx0xxxx111011xxxxxxxxxxx + sqcadd. */ + return 2160; } } } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1000xxxxx110xxxxxxxxxxxxx + ldnt1w. */ + return 2096; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1100xxxxx110xxxxxxxxxxxxx + ldnt1d. */ + return 2089; + } + } else { - if (((word >> 13) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xxxxx010x11xxxxxxxxxx - uzp2. */ - return 2017; + 110001x1010xxxxx110xxxxxxxxxxxxx + ld1w. */ + return 1593; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx1xxxxx011x11xxxxxxxxxx - uzp2. */ - return 2018; + 110001x1110xxxxx110xxxxxxxxxxxxx + ld1d. */ + return 1515; } } } } else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1xxxxx11xxxxxxxxxxxxxx - sel. */ - return 1819; - } - } - } - } - else - { - if (((word >> 13) & 0x1) == 0) - { - if (((word >> 14) & 0x1) == 0) - { - if (((word >> 15) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x1x0xxxxxx000xxxxxxxxxxxxx - ldr. */ - return 1723; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x1x1xxxxxx000xxxxxxxxxxxxx - prfb. */ - return 1767; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x10xxxxxxx100xxxxxxxxxxxxx - ld1rsh. */ - return 1552; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x11xxxxxxx100xxxxxxxxxxxxx - ld1rsb. */ - return 1549; - } - } - } - else - { - if (((word >> 15) & 0x1) == 0) { if (((word >> 23) & 0x1) == 0) { - if (((word >> 21) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x10x0xxxxx010xxxxxxxxxxxxx + x10001x1001xxxxx110xxxxxxxxxxxxx ld1w. */ - return 1587; + return 1598; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x10x1xxxxx010xxxxxxxxxxxxx + x10001x1011xxxxx110xxxxxxxxxxxxx ld1w. */ - return 1588; + return 1594; } } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x110xxxxxx010xxxxxxxxxxxxx - ldr. */ - return 1724; + 010001x11x1xxxxx110xxxxxxxxxxxxx + histcnt. */ + return 2085; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x111xxxxxx010xxxxxxxxxxxxx - prfw. */ - return 1788; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1101xxxxx110xxxxxxxxxxxxx + ld1d. */ + return 1518; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1111xxxxx110xxxxxxxxxxxxx + ld1d. */ + return 1516; + } } } } - else + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 21) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x1000xxxxx110xxxxxxxxxxxxx - prfw. */ - return 1784; + 010001x1xx0xxxxx001x00xxxxxxxxxx + sabdlb. */ + return 2120; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x1100xxxxx110xxxxxxxxxxxxx - prfd. */ - return 1770; + 010001x1xx0xxxxx001x10xxxxxxxxxx + uabdlb. */ + return 2251; } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x1x01xxxxx110xxxxxxxxxxxxx - ld1w. */ - return 1595; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x101xxxxxx110xxxxxxxxxxxxx - ld1rw. */ - return 1555; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x111xxxxxx110xxxxxxxxxxxxx - ld1rsb. */ - return 1551; + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx001x01xxxxxxxxxx + sabdlt. */ + return 2121; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx001x11xxxxxxxxxx + uabdlt. */ + return 2252; + } } } - } - } - } - else - { - if (((word >> 14) & 0x1) == 0) - { - if (((word >> 15) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x1xxxxxxxx001xxxxxxxxxxxxx - prfh. */ - return 1781; - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x10xxxxxxx101xxxxxxxxxxxxx - ld1rsh. */ - return 1553; - } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x11xxxxxxx101xxxxxxxxxxxxx - ld1rsb. */ - return 1550; + 110001x1xx0xxxxx001xxxxxxxxxxxxx + ldff1sw. */ + return 1682; } } - } - else - { - if (((word >> 15) & 0x1) == 0) + else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 21) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x10x0xxxxx011xxxxxxxxxxxxx - ldff1w. */ - return 1687; + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx001000xxxxxxxxxx + sqshrnb. */ + return 2211; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx001100xxxxxxxxxx + uqshrnb. */ + return 2290; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx001010xxxxxxxxxx + sqrshrnb. */ + return 2203; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx001110xxxxxxxxxx + uqrshrnb. */ + return 2285; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x10x1xxxxx011xxxxxxxxxxxxx - ldff1w. */ - return 1688; + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx001001xxxxxxxxxx + sqshrnt. */ + return 2212; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx001101xxxxxxxxxx + uqshrnt. */ + return 2291; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx001011xxxxxxxxxx + sqrshrnt. */ + return 2204; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx001111xxxxxxxxxx + uqrshrnt. */ + return 2286; + } + } } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x11xxxxxxx011xxxxxxxxxxxxx - prfd. */ - return 1774; + 110001x1xx1xxxxx001xxxxxxxxxxxxx + ldff1sw. */ + return 1683; } } - else + } + else + { + if (((word >> 21) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 21) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x1000xxxxx111xxxxxxxxxxxxx - prfw. */ - return 1787; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx101000xxxxxxxxxx + sshllb. */ + return 2227; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx101100xxxxxxxxxx + bext. */ + return 2332; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x1100xxxxx111xxxxxxxxxxxxx - prfd. */ - return 1773; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx101010xxxxxxxxxx + ushllb. */ + return 2303; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx101110xxxxxxxxxx + bgrp. */ + return 2333; + } } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x1x01xxxxx111xxxxxxxxxxxxx - ldff1w. */ - return 1697; + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx101001xxxxxxxxxx + sshllt. */ + return 2228; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx101101xxxxxxxxxx + bdep. */ + return 2331; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx101x11xxxxxxxxxx + ushllt. */ + return 2304; + } } } else { - if (((word >> 23) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1xx0xxxxx101xxxxxxxxxxxxx + ldff1sw. */ + return 1684; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x101xxxxxx111xxxxxxxxxxxxx - ld1rw. */ - return 1556; + 010001x1x01xxxxx101xxxxxxxxxxxxx + histseg. */ + return 2086; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x111xxxxxx111xxxxxxxxxxxxx - ld1rd. */ - return 1537; + 110001x1x01xxxxx101xxxxxxxxxxxxx + ldff1sw. */ + return 1686; } } - } - } - } - } - } - else - { - if (((word >> 13) & 0x1) == 0) - { - if (((word >> 14) & 0x1) == 0) - { - if (((word >> 15) & 0x1) == 0) - { - if (((word >> 21) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1xx0xxxxx000xxxxxxxxxxxxx - ld1sw. */ - return 1581; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1xx1xxxxx000xxxxxxxxxxxxx - ld1sw. */ - return 1582; - } - } - else - { - if (((word >> 21) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1xx0xxxxx100xxxxxxxxxxxxx - ld1sw. */ - return 1583; - } - else - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1x01xxxxx100xxxxxxxxxxxxx - ld1sw. */ - return 1586; - } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x1x11xxxxx100xxxxxxxxxxxxx - ld1sw. */ - return 1584; + x10001x1x11xxxxx101xxxxxxxxxxxxx + ldff1sw. */ + return 1685; } } } @@ -8669,83 +11504,196 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 21) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x10x0xxxxx010xxxxxxxxxxxxx - ld1w. */ - return 1591; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x11x0xxxxx010xxxxxxxxxxxxx - ld1d. */ - return 1513; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x10x1xxxxx010xxxxxxxxxxxxx - ld1w. */ - return 1592; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x11x1xxxxx010xxxxxxxxxxxxx - ld1d. */ - return 1514; - } - } - } - else - { - if (((word >> 21) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x10x0xxxxx110xxxxxxxxxxxxx - ld1w. */ - return 1593; + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx011000xxxxxxxxxx + sqdmullb. */ + return 2181; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx011100xxxxxxxxxx + smullb. */ + return 2153; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx011010xxxxxxxxxx + pmullb. */ + return 2328; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx011110xxxxxxxxxx + umullb. */ + return 2278; + } + } + } + else + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx011001xxxxxxxxxx + sqdmullt. */ + return 2184; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx011101xxxxxxxxxx + smullt. */ + return 2156; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx011011xxxxxxxxxx + pmullt. */ + return 2329; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx011111xxxxxxxxxx + umullt. */ + return 2281; + } + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x11x0xxxxx110xxxxxxxxxxxxx - ld1d. */ - return 1515; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x10x0xxxxx011xxxxxxxxxxxxx + ldff1w. */ + return 1693; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x11x0xxxxx011xxxxxxxxxxxxx + ldff1d. */ + return 1638; + } } } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1001xxxxx110xxxxxxxxxxxxx - ld1w. */ - return 1598; + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx011000xxxxxxxxxx + addhnb. */ + return 2047; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx011100xxxxxxxxxx + subhnb. */ + return 2243; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx011010xxxxxxxxxx + raddhnb. */ + return 2111; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx011110xxxxxxxxxx + rsubhnb. */ + return 2115; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1101xxxxx110xxxxxxxxxxxxx - ld1d. */ - return 1518; + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx011001xxxxxxxxxx + addhnt. */ + return 2048; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx011101xxxxxxxxxx + subhnt. */ + return 2244; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx011011xxxxxxxxxx + raddhnt. */ + return 2112; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx1xxxxx011111xxxxxxxxxx + rsubhnt. */ + return 2116; + } + } } } else @@ -8754,160 +11702,149 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x1011xxxxx110xxxxxxxxxxxxx - ld1w. */ - return 1594; + 110001x10x1xxxxx011xxxxxxxxxxxxx + ldff1w. */ + return 1694; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10001x1111xxxxx110xxxxxxxxxxxxx - ld1d. */ - return 1516; + 110001x11x1xxxxx011xxxxxxxxxxxxx + ldff1d. */ + return 1639; } } } } - } - } - else - { - if (((word >> 14) & 0x1) == 0) - { - if (((word >> 15) & 0x1) == 0) - { - if (((word >> 21) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1xx0xxxxx001xxxxxxxxxxxxx - ldff1sw. */ - return 1682; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1xx1xxxxx001xxxxxxxxxxxxx - ldff1sw. */ - return 1683; - } - } - else - { - if (((word >> 21) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1xx0xxxxx101xxxxxxxxxxxxx - ldff1sw. */ - return 1684; - } - else - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1x01xxxxx101xxxxxxxxxxxxx - ldff1sw. */ - return 1686; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1x11xxxxx101xxxxxxxxxxxxx - ldff1sw. */ - return 1685; - } - } - } - } - else - { - if (((word >> 15) & 0x1) == 0) - { - if (((word >> 21) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x10x0xxxxx011xxxxxxxxxxxxx - ldff1w. */ - return 1693; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x11x0xxxxx011xxxxxxxxxxxxx - ldff1d. */ - return 1638; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x10x1xxxxx011xxxxxxxxxxxxx - ldff1w. */ - return 1694; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x11x1xxxxx011xxxxxxxxxxxxx - ldff1d. */ - return 1639; - } - } - } else { if (((word >> 21) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1000xxxxx111xxxxxxxxxxxxx - prfw. */ - return 1789; + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx111000xxxxxxxxxx + ssra. */ + return 2229; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx111100xxxxxxxxxx + sri. */ + return 2222; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx111010xxxxxxxxxx + srsra. */ + return 2226; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx111110xxxxxxxxxx + saba. */ + return 2117; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1100xxxxx111xxxxxxxxxxxxx - prfd. */ - return 1775; + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx111001xxxxxxxxxx + usra. */ + return 2306; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx111101xxxxxxxxxx + sli. */ + return 2135; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx111011xxxxxxxxxx + ursra. */ + return 2302; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1xx0xxxxx111111xxxxxxxxxx + uaba. */ + return 2248; + } + } } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1010xxxxx111xxxxxxxxxxxxx - ldff1w. */ - return 1695; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1000xxxxx111xxxxxxxxxxxxx + prfw. */ + return 1789; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1100xxxxx111xxxxxxxxxxxxx + prfd. */ + return 1775; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1110xxxxx111xxxxxxxxxxxxx - ldff1d. */ - return 1640; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1010xxxxx111xxxxxxxxxxxxx + ldff1w. */ + return 1695; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1110xxxxx111xxxxxxxxxxxxx + ldff1d. */ + return 1640; + } } } } @@ -8917,11 +11854,88 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 23) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10001x1001xxxxx111xxxxxxxxxxxxx - ldff1w. */ - return 1698; + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 17) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1001xxx001110x0xxxxxxxxxx + aesmc. */ + return 2327; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1001xxx101110x0xxxxxxxxxx + aese. */ + return 2325; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1001xxxx11110x0xxxxxxxxxx + sm4e. */ + return 2322; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1001xxxxx1111x0xxxxxxxxxx + sm4ekey. */ + return 2323; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 17) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1001xxx0x1110x1xxxxxxxxxx + aesimc. */ + return 2326; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1001xxx1x1110x1xxxxxxxxxx + aesd. */ + return 2324; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x1001xxxxx1111x1xxxxxxxxxx + rax1. */ + return 2330; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x1001xxxxx111xxxxxxxxxxxxx + ldff1w. */ + return 1698; + } } else { @@ -9012,83 +12026,171 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 4) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01001x1xx1xxxxx00000xxxxxx0xxxx - whilelt. */ - return 2025; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000000xxxxx0xxxx + whilege. */ + return 2311; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000100xxxxx0xxxx + whilege. */ + return 2312; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01001x1xx1xxxxx00010xxxxxx0xxxx - whilelt. */ - return 2026; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000010xxxxx0xxxx + whilehs. */ + return 2317; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000110xxxxx0xxxx + whilehs. */ + return 2318; + } } } else { - if (((word >> 12) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01001x1xx1xxxxx00001xxxxxx0xxxx - whilelo. */ - return 2021; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000001xxxxx0xxxx + whilelt. */ + return 2025; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000101xxxxx0xxxx + whilelt. */ + return 2026; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01001x1xx1xxxxx00011xxxxxx0xxxx - whilelo. */ - return 2022; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000011xxxxx0xxxx + whilelo. */ + return 2021; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000111xxxxx0xxxx + whilelo. */ + return 2022; + } } } } else { - if (((word >> 11) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01001x1xx1xxxxx00000xxxxxx1xxxx - whilele. */ - return 2019; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000000xxxxx1xxxx + whilegt. */ + return 2313; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000100xxxxx1xxxx + whilegt. */ + return 2314; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01001x1xx1xxxxx00010xxxxxx1xxxx - whilele. */ - return 2020; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000010xxxxx1xxxx + whilehi. */ + return 2315; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000110xxxxx1xxxx + whilehi. */ + return 2316; + } } } else { - if (((word >> 12) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01001x1xx1xxxxx00001xxxxxx1xxxx - whilels. */ - return 2023; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000001xxxxx1xxxx + whilele. */ + return 2019; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000101xxxxx1xxxx + whilele. */ + return 2020; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01001x1xx1xxxxx00011xxxxxx1xxxx - whilels. */ - return 2024; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000011xxxxx1xxxx + whilels. */ + return 2023; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx000111xxxxx1xxxx + whilels. */ + return 2024; + } } } } @@ -9227,153 +12329,186 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 16) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 17) & 0x1) == 0) + if (((word >> 16) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + if (((word >> 17) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x1xx000000001xxxxxxxxxxxxx - faddv. */ - return 1383; - } - else + if (((word >> 19) & 0x1) == 0) { - if (((word >> 4) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x1xx010000001xxxxxxxx0xxxx - fcmge. */ - return 1390; + 011001x1xx000000001xxxxxxxxxxxxx + faddv. */ + return 1383; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x1xx010000001xxxxxxxx1xxxx - fcmgt. */ - return 1392; + if (((word >> 4) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx010000001xxxxxxxx0xxxx + fcmge. */ + return 1390; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx010000001xxxxxxxx1xxxx + fcmgt. */ + return 1392; + } } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x1000001xxxxxxxxxxxxx + fadda. */ + return 1382; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x1xx0x1000001xxxxxxxxxxxxx - fadda. */ - return 1382; + 011001x1xx0xx100001xxxxxxxxxxxxx + fmaxnmv. */ + return 1429; } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x1xx0xx100001xxxxxxxxxxxxx - fmaxnmv. */ - return 1429; - } - } - else - { - if (((word >> 18) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x1xx0xx010001xxxxxxxxxxxxx - fcmeq. */ - return 1388; - } - else - { - if (((word >> 19) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x1xx0x0110001xxxxxxxxxxxxx - fmaxv. */ - return 1430; + 011001x1xx0xx010001xxxxxxxxxxxxx + fcmeq. */ + return 1388; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x1xx0x1110001xxxxxxxxxxxxx - frecpe. */ - return 1458; + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x0110001xxxxxxxxxxxxx + fmaxv. */ + return 1430; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x1110001xxxxxxxxxxxxx + frecpe. */ + return 1458; + } } } } - } - else - { - if (((word >> 17) & 0x1) == 0) + else { - if (((word >> 18) & 0x1) == 0) + if (((word >> 17) & 0x1) == 0) { - if (((word >> 4) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x1xx0xx001001xxxxxxxx0xxxx - fcmlt. */ - return 1395; + if (((word >> 4) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0xx001001xxxxxxxx0xxxx + fcmlt. */ + return 1395; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0xx001001xxxxxxxx1xxxx + fcmle. */ + return 1394; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x1xx0xx001001xxxxxxxx1xxxx - fcmle. */ - return 1394; + 011001x1xx0xx101001xxxxxxxxxxxxx + fminnmv. */ + return 1435; } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x1xx0xx101001xxxxxxxxxxxxx - fminnmv. */ - return 1435; + if (((word >> 18) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0xx011001xxxxxxxxxxxxx + fcmne. */ + return 1396; + } + else + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x0111001xxxxxxxxxxxxx + fminv. */ + return 1436; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x1111001xxxxxxxxxxxxx + frsqrte. */ + return 1468; + } + } } } - else + } + else + { + if (((word >> 22) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x1xx0xx011001xxxxxxxxxxxxx - fcmne. */ - return 1396; + 111001x1000xxxxx001xxxxxxxxxxxxx + stnt1w. */ + return 2242; } else { - if (((word >> 19) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x1xx0x0111001xxxxxxxxxxxxx - fminv. */ - return 1436; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x1xx0x1111001xxxxxxxxxxxxx - frsqrte. */ - return 1468; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x1100xxxxx001xxxxxxxxxxxxx + stnt1d. */ + return 2238; } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x1x10xxxxx001xxxxxxxxxxxxx + stnt1w. */ + return 2241; + } } } } @@ -9383,19 +12518,41 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 4) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01001x1xx1xxxxx001xxxxxxxx0xxxx - ctermeq. */ - return 1353; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx0010xxxxxxx0xxxx + ctermeq. */ + return 1353; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx0011xxxxxxx0xxxx + whilewr. */ + return 2320; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01001x1xx1xxxxx001xxxxxxxx1xxxx - ctermne. */ - return 1354; + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx0010xxxxxxx1xxxx + ctermne. */ + return 1354; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x1xx1xxxxx0011xxxxxxx1xxxx + whilerw. */ + return 2319; + } } } else @@ -10658,11 +13815,11 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 16) & 0x1) == 0) { - if (((word >> 17) & 0x1) == 0) + if (((word >> 19) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + if (((word >> 17) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { if (((word >> 20) & 0x1) == 0) { @@ -10682,39 +13839,6 @@ aarch64_opcode_lookup_1 (uint32_t word) } } else - { - if (((word >> 20) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1x0001000101xxxxxxxxxxxxx - fcvt. */ - return 1400; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1x1001000101xxxxxxxxxxxxx - fcvt. */ - return 1402; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1xx011000101xxxxxxxxxxxxx - fcvtzs. */ - return 1410; - } - } - } - else - { - if (((word >> 19) & 0x1) == 0) { if (((word >> 20) & 0x1) == 0) { @@ -10755,44 +13879,55 @@ aarch64_opcode_lookup_1 (uint32_t word) } } } + } + else + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx000010101xxxxxxxxxxxxx + frintm. */ + return 1463; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx010010101xxxxxxxxxxxxx + scvtf. */ + return 1807; + } + } else { if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1xx001100101xxxxxxxxxxxxx - frecpx. */ - return 1460; + 011001x1xx000110101xxxxxxxxxxxxx + frintx. */ + return 1466; } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1x0011100101xxxxxxxxxxxxx - fcvtzs. */ - return 1409; + 011001x10x010110101xxxxxxxxxxxxx + scvtf. */ + return 1811; } else { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x101011100101xxxxxxxxxxxxx - fcvtzs. */ - return 1407; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x111011100101xxxxxxxxxxxxx - fcvtzs. */ - return 1411; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x11x010110101xxxxxxxxxxxxx + scvtf. */ + return 1813; } } } @@ -10800,96 +13935,140 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 18) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + if (((word >> 17) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1xx000010101xxxxxxxxxxxxx - frintm. */ - return 1463; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1x0001000101xxxxxxxxxxxxx + fcvt. */ + return 1400; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1x1001000101xxxxxxxxxxxxx + fcvt. */ + return 1402; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1xx010010101xxxxxxxxxxxxx - scvtf. */ - return 1807; + 011001x1xx001100101xxxxxxxxxxxxx + frecpx. */ + return 1460; } } else { - if (((word >> 20) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1xx001010101xxxxxxxxxxxxx - fcvt. */ - return 1404; + 011001x1x0001x10101xxxxxxxxxxxxx + fcvtx. */ + return 2070; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1xx011010101xxxxxxxxxxxxx - fcvtzs. */ - return 1406; + 011001x1x1001x10101xxxxxxxxxxxxx + fcvt. */ + return 1404; } } } else { - if (((word >> 19) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1xx000110101xxxxxxxxxxxxx - frintx. */ - return 1466; + 011001x100011xx0101xxxxxxxxxxxxx + flogb. */ + return 2072; } else { - if (((word >> 23) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x110011xx0101xxxxxxxxxxxxx + fcvtzs. */ + return 1409; + } + } + else + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x10x010110101xxxxxxxxxxxxx - scvtf. */ - return 1811; + 011001x1x1011000101xxxxxxxxxxxxx + fcvtzs. */ + return 1410; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x11x010110101xxxxxxxxxxxxx - scvtf. */ - return 1813; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x101011100101xxxxxxxxxxxxx + fcvtzs. */ + return 1407; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x111011100101xxxxxxxxxxxxx + fcvtzs. */ + return 1411; + } } } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x10x0x1110101xxxxxxxxxxxxx - fcvtzs. */ - return 1408; - } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x11x0x1110101xxxxxxxxxxxxx - fcvtzs. */ - return 1412; + if (((word >> 18) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1x1011010101xxxxxxxxxxxxx + fcvtzs. */ + return 1406; + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x101011110101xxxxxxxxxxxxx + fcvtzs. */ + return 1408; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x111011110101xxxxxxxxxxxxx + fcvtzs. */ + return 1412; + } + } } } } @@ -12886,7 +16065,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 0x001110xx0xxxxx1x0101xxxxxxxxxx sdot. */ - return 2046; + return 2335; } } else @@ -13018,7 +16197,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x001110000xxxxxxxxxxxxxxxxxxxxx eor3. */ - return 2053; + return 2342; } else { @@ -13026,7 +16205,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x001110100xxxxxxxxxxxxxxxxxxxxx xar. */ - return 2055; + return 2344; } } else @@ -13037,7 +16216,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x001110x10xxxxx0xxxxxxxxxxxxxxx sm3ss1. */ - return 2057; + return 2346; } else { @@ -13051,7 +16230,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x001110010xxxxx1xxx00xxxxxxxxxx sm3tt1a. */ - return 2058; + return 2347; } else { @@ -13059,7 +16238,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x001110110xxxxx1xxx00xxxxxxxxxx sha512su0. */ - return 2051; + return 2340; } } else @@ -13068,7 +16247,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x001110x10xxxxx1xxx10xxxxxxxxxx sm3tt2a. */ - return 2060; + return 2349; } } else @@ -13081,7 +16260,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x001110010xxxxx1xxx01xxxxxxxxxx sm3tt1b. */ - return 2059; + return 2348; } else { @@ -13089,7 +16268,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x001110110xxxxx1xxx01xxxxxxxxxx sm4e. */ - return 2064; + return 2353; } } else @@ -13098,7 +16277,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x001110x10xxxxx1xxx11xxxxxxxxxx sm3tt2b. */ - return 2061; + return 2350; } } } @@ -13279,7 +16458,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx101110xx0xxxxx100101xxxxxxxxxx udot. */ - return 2045; + return 2334; } } else @@ -14190,7 +17369,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x001110xx1xxxxx0xxxxxxxxxxxxxxx bcax. */ - return 2056; + return 2345; } } else @@ -14801,7 +17980,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 11001110xx1xxxxx100000xxxxxxxxxx sha512h. */ - return 2049; + return 2338; } } } @@ -14853,7 +18032,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 11001110xx1xxxxx110000xxxxxxxxxx sm3partw1. */ - return 2062; + return 2351; } } } @@ -15096,7 +18275,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x001110xx1xxxxx100010xxxxxxxxxx sha512su1. */ - return 2052; + return 2341; } } else @@ -15172,7 +18351,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x0011100x1xxxxx110010xxxxxxxxxx sm4ekey. */ - return 2065; + return 2354; } } else @@ -15998,7 +19177,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x001110xx1xxxxx100001xxxxxxxxxx sha512h2. */ - return 2050; + return 2339; } } else @@ -16030,7 +19209,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x0011100x1xxxxx110001xxxxxxxxxx sm3partw2. */ - return 2063; + return 2352; } } else @@ -16270,7 +19449,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 1x001110xx1xxxxx100011xxxxxxxxxx rax1. */ - return 2054; + return 2343; } } else @@ -16302,7 +19481,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x01011100x1xxxxx110011xxxxxxxxxx fmlal2. */ - return 2068; + return 2357; } else { @@ -16310,7 +19489,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11011100x1xxxxx110011xxxxxxxxxx fmlal2. */ - return 2072; + return 2361; } } } @@ -16332,7 +19511,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x01011101x1xxxxx110011xxxxxxxxxx fmlsl2. */ - return 2069; + return 2358; } else { @@ -16340,7 +19519,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11011101x1xxxxx110011xxxxxxxxxx fmlsl2. */ - return 2073; + return 2362; } } } @@ -16379,7 +19558,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x00011100x1xxxxx111011xxxxxxxxxx fmlal. */ - return 2066; + return 2355; } else { @@ -16387,7 +19566,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10011100x1xxxxx111011xxxxxxxxxx fmlal. */ - return 2070; + return 2359; } } else @@ -16409,7 +19588,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x00011101x1xxxxx111011xxxxxxxxxx fmlsl. */ - return 2067; + return 2356; } else { @@ -16417,7 +19596,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10011101x1xxxxx111011xxxxxxxxxx fmlsl. */ - return 2071; + return 2360; } } else @@ -18225,7 +21404,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x0001111xxxxxxxx0000x0xxxxxxxxxx fmlal. */ - return 2074; + return 2363; } else { @@ -18233,7 +21412,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1001111xxxxxxxx0000x0xxxxxxxxxx fmlal. */ - return 2078; + return 2367; } } else @@ -18255,7 +21434,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x0001111xxxxxxxx0100x0xxxxxxxxxx fmlsl. */ - return 2075; + return 2364; } else { @@ -18263,7 +21442,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1001111xxxxxxxx0100x0xxxxxxxxxx fmlsl. */ - return 2079; + return 2368; } } else @@ -18769,7 +21948,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x0101111xxxxxxxx1000x0xxxxxxxxxx fmlal2. */ - return 2076; + return 2365; } else { @@ -18777,7 +21956,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1101111xxxxxxxx1000x0xxxxxxxxxx fmlal2. */ - return 2080; + return 2369; } } } @@ -18799,7 +21978,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x0101111xxxxxxxx1100x0xxxxxxxxxx fmlsl2. */ - return 2077; + return 2366; } else { @@ -18807,7 +21986,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1101111xxxxxxxx1100x0xxxxxxxxxx fmlsl2. */ - return 2081; + return 2370; } } } @@ -18863,7 +22042,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx001111xxxxxxxx1110x0xxxxxxxxxx sdot. */ - return 2048; + return 2337; } else { @@ -18871,7 +22050,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx101111xxxxxxxx1110x0xxxxxxxxxx udot. */ - return 2047; + return 2336; } } } @@ -19496,8 +22675,8 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode) case 1214: value = 1215; break; /* isb --> sb. */ case 1215: value = 1216; break; /* sb --> sys. */ case 1216: value = 1224; break; /* sys --> msr. */ - case 1224: value = 2082; break; /* msr --> cfinv. */ - case 2082: return NULL; /* cfinv --> NULL. */ + case 1224: value = 2371; break; /* msr --> cfinv. */ + case 2371: return NULL; /* cfinv --> NULL. */ case 1188: value = 1190; break; /* tstart --> ttest. */ case 1190: value = 1225; break; /* ttest --> sysl. */ case 1225: value = 1226; break; /* sysl --> mrs. */ diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index eef7998d8b0..60255d93647 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -1462,6 +1462,14 @@ { \ QLF2(S_B,S_B), \ } +#define OP_SVE_BBU \ +{ \ + QLF3(S_B,S_B,NIL), \ +} +#define OP_SVE_BBB \ +{ \ + QLF3(S_B,S_B,S_B), \ +} #define OP_SVE_BBBU \ { \ QLF4(S_B,S_B,S_B,NIL), \ @@ -1511,6 +1519,10 @@ { \ QLF3(S_D,S_D,S_D), \ } +#define OP_SVE_DDDD \ +{ \ + QLF4(S_D,S_D,S_D,S_D), \ +} #define OP_SVE_DMD \ { \ QLF3(S_D,P_M,S_D), \ @@ -1560,6 +1572,14 @@ { \ QLF2(S_H,S_B), \ } +#define OP_SVE_HHH \ +{ \ + QLF3(S_H,S_H,S_H), \ +} +#define OP_SVE_HHHU \ +{ \ + QLF4(S_H,S_H,S_H,NIL), \ +} #define OP_SVE_HMH \ { \ QLF3(S_H,P_M,S_H), \ @@ -1607,10 +1627,22 @@ { \ QLF3(S_S,P_M,S_D), \ } +#define OP_SVE_SSS \ +{ \ + QLF3(S_S,S_S,S_S), \ +} +#define OP_SVE_SSSU \ +{ \ + QLF4(S_S,S_S,S_S,NIL), \ +} #define OP_SVE_SMH \ { \ QLF3(S_S,P_M,S_H), \ } +#define OP_SVE_SHH \ +{ \ + QLF3(S_S,S_H,S_H), \ +} #define OP_SVE_SMS \ { \ QLF3(S_S,P_M,S_S), \ @@ -1631,6 +1663,18 @@ { \ QLF3(S_S,P_Z,S_S), \ } +#define OP_SVE_SBBU \ +{ \ + QLF4(S_S,S_B,S_B,NIL), \ +} +#define OP_SVE_DSS \ +{ \ + QLF3(S_D,S_S,S_S), \ +} +#define OP_SVE_DHHU \ +{ \ + QLF4(S_D,S_H,S_H,NIL), \ +} #define OP_SVE_SZU \ { \ QLF3(S_S,P_Z,NIL), \ @@ -1716,6 +1760,18 @@ QLF3(S_S,P_M,S_S), \ QLF3(S_D,P_M,S_D), \ } +#define OP_SVE_VMV_HSD_BHS \ +{ \ + QLF3(S_H,P_M,S_B), \ + QLF3(S_S,P_M,S_H), \ + QLF3(S_D,P_M,S_S), \ +} +#define OP_SVE_VVU_HSD_BHS \ +{ \ + QLF3(S_H,S_B,NIL), \ + QLF3(S_S,S_H,NIL), \ + QLF3(S_D,S_S,NIL), \ +} #define OP_SVE_VMV_SD \ { \ QLF3(S_S,P_M,S_S), \ @@ -1855,12 +1911,24 @@ { \ QLF4(S_S,S_S,S_S,NIL), \ } +#define OP_SVE_VVVU_SD_BH \ +{ \ + QLF4(S_S,S_B,S_B,NIL), \ + QLF4(S_D,S_H,S_H,NIL), \ +} #define OP_SVE_VVVU_HSD \ { \ QLF4(S_H,S_H,S_H,NIL), \ QLF4(S_S,S_S,S_S,NIL), \ QLF4(S_D,S_D,S_D,NIL), \ } +#define OP_SVE_VVVU_BHSD \ +{ \ + QLF4(S_B,S_B,S_B,NIL), \ + QLF4(S_H,S_H,S_H,NIL), \ + QLF4(S_S,S_S,S_S,NIL), \ + QLF4(S_D,S_D,S_D,NIL), \ +} #define OP_SVE_VVV_BHSD \ { \ QLF3(S_B,S_B,S_B), \ @@ -1894,11 +1962,46 @@ { \ QLF3(S_S,S_B,S_B), \ } +#define OP_SVE_VVV_QHD_DBS \ +{ \ + QLF3(S_Q,S_D,S_D), \ + QLF3(S_H,S_B,S_B), \ + QLF3(S_D,S_S,S_S), \ +} +#define OP_SVE_VVV_HSD_BHS \ +{ \ + QLF3(S_H,S_B,S_B), \ + QLF3(S_S,S_H,S_H), \ + QLF3(S_D,S_S,S_S), \ +} +#define OP_SVE_VVV_HSD_BHS2 \ +{ \ + QLF3(S_H,S_H,S_B), \ + QLF3(S_S,S_S,S_H), \ + QLF3(S_D,S_D,S_S), \ +} +#define OP_SVE_VVV_BHS_HSD \ +{ \ + QLF3(S_B,S_H,S_H), \ + QLF3(S_H,S_S,S_S), \ + QLF3(S_S,S_D,S_D), \ +} +#define OP_SVE_VV_BHS_HSD \ +{ \ + QLF2(S_B,S_H), \ + QLF2(S_H,S_S), \ + QLF2(S_S,S_D), \ +} #define OP_SVE_VVV_SD_BH \ { \ QLF3(S_S,S_B,S_B), \ QLF3(S_D,S_H,S_H), \ } +#define OP_SVE_VVV_SD \ +{ \ + QLF3(S_S,S_S,S_S), \ + QLF3(S_D,S_D,S_D), \ +} #define OP_SVE_VV_BHSD \ { \ QLF2(S_B,S_B), \ @@ -1920,6 +2023,12 @@ QLF2(S_S,S_S), \ QLF2(S_D,S_D), \ } +#define OP_SVE_VVU_BHS_HSD \ +{ \ + QLF3(S_B,S_H,NIL), \ + QLF3(S_H,S_S,NIL), \ + QLF3(S_S,S_D,NIL), \ +} #define OP_SVE_VV_HSD_BHS \ { \ QLF2(S_H,S_B), \ @@ -1971,6 +2080,21 @@ QLF4(S_S,P_Z,S_S,S_S), \ QLF4(S_D,P_Z,S_D,S_D), \ } +#define OP_SVE_VZVV_SD \ +{ \ + QLF4(S_S,P_Z,S_S,S_S), \ + QLF4(S_D,P_Z,S_D,S_D), \ +} +#define OP_SVE_VZVV_BH \ +{ \ + QLF4(S_B,P_Z,S_B,S_B), \ + QLF4(S_H,P_Z,S_H,S_H), \ +} +#define OP_SVE_VZV_SD \ +{ \ + QLF3(S_S,P_Z,S_S), \ + QLF3(S_D,P_Z,S_D), \ +} #define OP_SVE_VZV_HSD \ { \ QLF3(S_H,P_Z,S_H), \ @@ -4482,6 +4606,301 @@ struct aarch64_opcode aarch64_opcode_table[] = _SVE_INSNC ("fmov", 0x05104000, 0xff30ffe0, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Pg4_16, FPIMM0), OP_SVE_VM_HSD, F_ALIAS | F_PSEUDO, C_SCAN_MOVPRFX, 0), _SVE_INSNC ("orn", 0x05000000, 0xfffc0000, sve_limm, 0, OP3 (SVE_Zd, SVE_Zd, SVE_INV_LIMM), OP_SVE_VVU_BHSD, F_ALIAS | F_PSEUDO, C_SCAN_MOVPRFX, 1), + /* SVE2 instructions. */ + SVE2_INSNC ("adclb", 0x4500d000, 0xffa0fc00, sve_size_sd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_SD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("adclt", 0x4500d400, 0xffa0fc00, sve_size_sd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_SD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("addhnb", 0x45206000, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHS_HSD, 0, 0), + SVE2_INSN ("addhnt", 0x45206400, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHS_HSD, 0, 0), + SVE2_INSNC ("addp", 0x4411a000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("bcax", 0x04603800, 0xffe0fc00, sve_misc, 0, OP4 (SVE_Zd, SVE_Zd, SVE_Zm_16, SVE_Zn), OP_SVE_DDDD, 0, C_SCAN_MOVPRFX, 1), + SVE2_INSNC ("bsl", 0x04203c00, 0xffe0fc00, sve_misc, 0, OP4 (SVE_Zd, SVE_Zd, SVE_Zm_16, SVE_Zn), OP_SVE_DDDD, 0, C_SCAN_MOVPRFX, 1), + SVE2_INSNC ("bsl1n", 0x04603c00, 0xffe0fc00, sve_misc, 0, OP4 (SVE_Zd, SVE_Zd, SVE_Zm_16, SVE_Zn), OP_SVE_DDDD, 0, C_SCAN_MOVPRFX, 1), + SVE2_INSNC ("bsl2n", 0x04a03c00, 0xffe0fc00, sve_misc, 0, OP4 (SVE_Zd, SVE_Zd, SVE_Zm_16, SVE_Zn), OP_SVE_DDDD, 0, C_SCAN_MOVPRFX, 1), + SVE2_INSNC ("cadd", 0x4500d800, 0xff3ff800, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Zd, SVE_Zn, SVE_IMM_ROT3), OP_SVE_VVVU_BHSD, 0, C_SCAN_MOVPRFX, 1), + SVE2_INSNC ("cdot", 0x44801000, 0xffa0f000, sve_size_sd, 0, OP4 (SVE_Zd, SVE_Zn, SVE_Zm_16, SVE_IMM_ROT2), OP_SVE_VVVU_SD_BH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("cdot", 0x44e04000, 0xffe0f000, sve_misc, 0, OP4 (SVE_Zd, SVE_Zn, SVE_Zm4_INDEX, SVE_IMM_ROT2), OP_SVE_DHHU, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("cdot", 0x44a04000, 0xffe0f000, sve_misc, 0, OP4 (SVE_Zd, SVE_Zn, SVE_Zm3_INDEX, SVE_IMM_ROT2), OP_SVE_SBBU, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("cmla", 0x44002000, 0xff20f000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Zn, SVE_Zm_16, SVE_IMM_ROT2), OP_SVE_VVVU_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("cmla", 0x44a06000, 0xffe0f000, sve_misc, 0, OP4 (SVE_Zd, SVE_Zn, SVE_Zm3_INDEX, SVE_IMM_ROT2), OP_SVE_VVVU_H, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("cmla", 0x44e06000, 0xffe0f000, sve_misc, 0, OP4 (SVE_Zd, SVE_Zn, SVE_Zm4_INDEX, SVE_IMM_ROT2), OP_SVE_VVVU_S, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("eor3", 0x04203800, 0xffe0fc00, sve_misc, 0, OP4 (SVE_Zd, SVE_Zd, SVE_Zm_16, SVE_Zn), OP_SVE_DDDD, 0, C_SCAN_MOVPRFX, 1), + SVE2_INSNC ("eorbt", 0x45009000, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("eortb", 0x45009400, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("ext", 0x05600000, 0xffe0e000, sve_misc, 0, OP3 (SVE_Zd, SVE_ZnxN, SVE_UIMM8_53), OP_SVE_BBU, F_OD(2), 0), + SVE2_INSNC ("faddp", 0x64108000, 0xff3fe000, sve_size_hsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_HSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSN ("fcvtlt", 0x6489a000, 0xffffe000, sve_misc, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SMH, 0, 0), + SVE2_INSN ("fcvtlt", 0x64cba000, 0xffffe000, sve_misc, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DMS, 0, 0), + SVE2_INSN ("fcvtnt", 0x6488a000, 0xffffe000, sve_misc, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HMS, 0, 0), + SVE2_INSN ("fcvtnt", 0x64caa000, 0xffffe000, sve_misc, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SMD, 0, 0), + SVE2_INSNC ("fcvtx", 0x650aa000, 0xffffe000, sve_misc, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SMD, 0, C_SCAN_MOVPRFX | C_MAX_ELEM, 0), + SVE2_INSN ("fcvtxnt", 0x640aa000, 0xffffe000, sve_misc, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SMD, 0, 0), + SVE2_INSNC ("flogb", 0x6518a000, 0xfff9e000, sve_size_hsd2, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VMV_HSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("fmaxnmp", 0x64148000, 0xff3fe000, sve_size_hsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_HSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("fmaxp", 0x64168000, 0xff3fe000, sve_size_hsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_HSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("fminnmp", 0x64158000, 0xff3fe000, sve_size_hsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_HSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("fminp", 0x64178000, 0xff3fe000, sve_size_hsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_HSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("fmlalb", 0x64a04000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("fmlalb", 0x64a08000, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("fmlalt", 0x64a04400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("fmlalt", 0x64a08400, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("fmlslb", 0x64a06000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("fmlslb", 0x64a0a000, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("fmlslt", 0x64a06400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("fmlslt", 0x64a0a400, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("histcnt", 0x45a0c000, 0xffa0e000, sve_size_sd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zn, SVE_Zm_16), OP_SVE_VZVV_SD, 0, 0), + SVE2_INSN ("histseg", 0x4520a000, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_BBB, 0, 0), + SVE2_INSN ("ldnt1b", 0x8400a000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_SZS, F_OD(1), 0), + SVE2_INSN ("ldnt1b", 0xc400c000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_DZD, F_OD(1), 0), + SVE2_INSN ("ldnt1d", 0xc580c000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_DZD, F_OD(1), 0), + SVE2_INSN ("ldnt1h", 0x8480a000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_SZS, F_OD(1), 0), + SVE2_INSN ("ldnt1h", 0xc480c000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_DZD, F_OD(1), 0), + SVE2_INSN ("ldnt1sb", 0x84008000, 0xbfe0e000, sve_size_sd2, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_VZV_SD, F_OD(1), 0), + SVE2_INSN ("ldnt1sh", 0x84808000, 0xbfe0e000, sve_size_sd2, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_VZV_SD, F_OD(1), 0), + SVE2_INSN ("ldnt1sw", 0xc5008000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_DZD, F_OD(1), 0), + SVE2_INSN ("ldnt1w", 0x8500a000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_SZS, F_OD(1), 0), + SVE2_INSN ("ldnt1w", 0xc500c000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_DZD, F_OD(1), 0), + SVE2_INSN ("match", 0x45208000, 0xffa0e010, sve_size_bh, 0, OP4 (SVE_Pd, SVE_Pg3, SVE_Zn, SVE_Zm_16), OP_SVE_VZVV_BH, 0, 0), + SVE2_INSNC ("mla", 0x44200800, 0xffa0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_22_INDEX), OP_SVE_HHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("mla", 0x44a00800, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_INDEX), OP_SVE_SSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("mla", 0x44e00800, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_INDEX), OP_SVE_DDD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("mls", 0x44200c00, 0xffa0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_22_INDEX), OP_SVE_HHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("mls", 0x44a00c00, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_INDEX), OP_SVE_SSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("mls", 0x44e00c00, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_INDEX), OP_SVE_DDD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("mul", 0x4420f800, 0xffa0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_22_INDEX), OP_SVE_HHH, 0, 0), + SVE2_INSN ("mul", 0x44a0f800, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_INDEX), OP_SVE_SSS, 0, 0), + SVE2_INSN ("mul", 0x44e0f800, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_INDEX), OP_SVE_DDD, 0, 0), + SVE2_INSN ("mul", 0x04206000, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, 0), + SVE2_INSNC ("nbsl", 0x04e03c00, 0xffe0fc00, sve_misc, 0, OP4 (SVE_Zd, SVE_Zd, SVE_Zm_16, SVE_Zn), OP_SVE_DDDD, 0, C_SCAN_MOVPRFX, 1), + SVE2_INSN ("nmatch", 0x45208010, 0xffa0e010, sve_size_bh, 0, OP4 (SVE_Pd, SVE_Pg3, SVE_Zn, SVE_Zm_16), OP_SVE_VZVV_BH, 0, 0), + SVE2_INSN ("pmul", 0x04206400, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_BBB, 0, 0), + SVE2_INSN ("raddhnb", 0x45206800, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHS_HSD, 0, 0), + SVE2_INSN ("raddhnt", 0x45206c00, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHS_HSD, 0, 0), + SVE2_INSN ("rshrnb", 0x45201800, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSN ("rshrnt", 0x45201c00, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSN ("rsubhnb", 0x45207800, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHS_HSD, 0, 0), + SVE2_INSN ("rsubhnt", 0x45207c00, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHS_HSD, 0, 0), + SVE2_INSNC ("saba", 0x4500f800, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sabalb", 0x4500c000, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sabalt", 0x4500c400, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("sabdlb", 0x45003000, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("sabdlt", 0x45003400, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSNC ("sadalp", 0x4404a000, 0xff3fe000, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VMV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("saddlb", 0x45000000, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("saddlbt", 0x45008000, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("saddlt", 0x45000400, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("saddwb", 0x45004000, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS2, 0, 0), + SVE2_INSN ("saddwt", 0x45004400, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS2, 0, 0), + SVE2_INSNC ("sbclb", 0x4580d000, 0xffa0fc00, sve_size_sd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_SD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sbclt", 0x4580d400, 0xffa0fc00, sve_size_sd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_SD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("shadd", 0x44108000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSN ("shrnb", 0x45201000, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSN ("shrnt", 0x45201400, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSNC ("shsub", 0x44128000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("shsubr", 0x44168000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSN ("sli", 0x4500f400, 0xff20fc00, sve_shift_tsz_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHLIMM_UNPRED), OP_SVE_VVU_BHSD, 0, 0), + SVE2_INSNC ("smaxp", 0x4414a000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sminp", 0x4416a000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("smlalb", 0x44a08000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("smlalb", 0x44e08000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("smlalb", 0x44004000, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("smlalt", 0x44a08400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("smlalt", 0x44e08400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("smlalt", 0x44004400, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("smlslb", 0x44a0a000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("smlslb", 0x44e0a000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("smlslb", 0x44005000, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("smlslt", 0x44a0a400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("smlslt", 0x44e0a400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("smlslt", 0x44005400, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("smulh", 0x04206800, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, 0), + SVE2_INSN ("smullb", 0x44a0c000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, 0), + SVE2_INSN ("smullb", 0x44e0c000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, 0), + SVE2_INSN ("smullb", 0x45007000, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("smullt", 0x44a0c400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, 0), + SVE2_INSN ("smullt", 0x44e0c400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, 0), + SVE2_INSN ("smullt", 0x45007400, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("splice", 0x052d8000, 0xff3fe000, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_ZnxN), OP_SVE_VUV_BHSD, F_OD(2), 0), + SVE2_INSNC ("sqabs", 0x4408a000, 0xff3fe000, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VMV_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqadd", 0x44188000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("sqcadd", 0x4501d800, 0xff3ff800, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Zd, SVE_Zn, SVE_IMM_ROT3), OP_SVE_VVVU_BHSD, 0, C_SCAN_MOVPRFX, 1), + SVE2_INSNC ("sqdmlalb", 0x44a02000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqdmlalb", 0x44e02000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqdmlalb", 0x44006000, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqdmlalbt", 0x44000800, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqdmlalt", 0x44a02400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqdmlalt", 0x44e02400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqdmlalt", 0x44006400, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqdmlslb", 0x44a03000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqdmlslb", 0x44e03000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqdmlslb", 0x44006800, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqdmlslbt", 0x44000c00, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqdmlslt", 0x44a03400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqdmlslt", 0x44e03400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqdmlslt", 0x44006c00, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("sqdmulh", 0x4420f000, 0xffa0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_22_INDEX), OP_SVE_HHH, 0, 0), + SVE2_INSN ("sqdmulh", 0x44a0f000, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_INDEX), OP_SVE_SSS, 0, 0), + SVE2_INSN ("sqdmulh", 0x44e0f000, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_INDEX), OP_SVE_DDD, 0, 0), + SVE2_INSN ("sqdmulh", 0x04207000, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, 0), + SVE2_INSN ("sqdmullb", 0x44a0e000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, 0), + SVE2_INSN ("sqdmullb", 0x44e0e000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, 0), + SVE2_INSN ("sqdmullb", 0x45006000, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("sqdmullt", 0x44a0e400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, 0), + SVE2_INSN ("sqdmullt", 0x44e0e400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, 0), + SVE2_INSN ("sqdmullt", 0x45006400, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSNC ("sqneg", 0x4409a000, 0xff3fe000, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VMV_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqrdcmlah", 0x44a07000, 0xffe0f000, sve_misc, 0, OP4 (SVE_Zd, SVE_Zn, SVE_Zm3_INDEX, SVE_IMM_ROT2), OP_SVE_HHHU, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqrdcmlah", 0x44e07000, 0xffe0f000, sve_misc, 0, OP4 (SVE_Zd, SVE_Zn, SVE_Zm4_INDEX, SVE_IMM_ROT2), OP_SVE_SSSU, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqrdcmlah", 0x44003000, 0xff20f000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Zn, SVE_Zm_16, SVE_IMM_ROT2), OP_SVE_VVVU_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqrdmlah", 0x44201000, 0xffa0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_22_INDEX), OP_SVE_HHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqrdmlah", 0x44a01000, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_INDEX), OP_SVE_SSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqrdmlah", 0x44e01000, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_INDEX), OP_SVE_DDD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqrdmlah", 0x44007000, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqrdmlsh", 0x44201400, 0xffa0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_22_INDEX), OP_SVE_HHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqrdmlsh", 0x44a01400, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_INDEX), OP_SVE_SSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqrdmlsh", 0x44e01400, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_INDEX), OP_SVE_DDD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("sqrdmlsh", 0x44007400, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("sqrdmulh", 0x4420f400, 0xffa0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_22_INDEX), OP_SVE_HHH, 0, 0), + SVE2_INSN ("sqrdmulh", 0x44a0f400, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_INDEX), OP_SVE_SSS, 0, 0), + SVE2_INSN ("sqrdmulh", 0x44e0f400, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_INDEX), OP_SVE_DDD, 0, 0), + SVE2_INSN ("sqrdmulh", 0x04207400, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, 0), + SVE2_INSNC ("sqrshl", 0x440a8000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("sqrshlr", 0x440e8000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSN ("sqrshrnb", 0x45202800, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSN ("sqrshrnt", 0x45202c00, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSN ("sqrshrunb", 0x45200800, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSN ("sqrshrunt", 0x45200c00, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSNC ("sqshl", 0x04068000, 0xff3fe000, sve_shift_pred, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_SHLIMM_PRED), OP_SVE_VMVU_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("sqshl", 0x44088000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("sqshlr", 0x440c8000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("sqshlu", 0x040f8000, 0xff3fe000, sve_shift_pred, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_SHLIMM_PRED), OP_SVE_VMVU_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSN ("sqshrnb", 0x45202000, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSN ("sqshrnt", 0x45202400, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSN ("sqshrunb", 0x45200000, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSN ("sqshrunt", 0x45200400, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSNC ("sqsub", 0x441a8000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("sqsubr", 0x441e8000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSN ("sqxtnb", 0x45204000, 0xffa7fc00, sve_size_tsz_bhs, 0, OP2 (SVE_Zd, SVE_Zn), OP_SVE_VV_BHS_HSD, 0, 0), + SVE2_INSN ("sqxtnt", 0x45204400, 0xffa7fc00, sve_size_tsz_bhs, 0, OP2 (SVE_Zd, SVE_Zn), OP_SVE_VV_BHS_HSD, 0, 0), + SVE2_INSN ("sqxtunb", 0x45205000, 0xffa7fc00, sve_size_tsz_bhs, 0, OP2 (SVE_Zd, SVE_Zn), OP_SVE_VV_BHS_HSD, 0, 0), + SVE2_INSN ("sqxtunt", 0x45205400, 0xffa7fc00, sve_size_tsz_bhs, 0, OP2 (SVE_Zd, SVE_Zn), OP_SVE_VV_BHS_HSD, 0, 0), + SVE2_INSNC ("srhadd", 0x44148000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSN ("sri", 0x4500f000, 0xff20fc00, sve_shift_tsz_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED), OP_SVE_VVU_BHSD, 0, 0), + SVE2_INSNC ("srshl", 0x44028000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("srshlr", 0x44068000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("srshr", 0x040c8000, 0xff3fe000, sve_shift_pred, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_SHRIMM_PRED), OP_SVE_VMVU_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("srsra", 0x4500e800, 0xff20fc00, sve_shift_tsz_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED), OP_SVE_VVU_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("sshllb", 0x4500a000, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHLIMM_UNPRED_22), OP_SVE_VVU_HSD_BHS, 0, 0), + SVE2_INSN ("sshllt", 0x4500a400, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHLIMM_UNPRED_22), OP_SVE_VVU_HSD_BHS, 0, 0), + SVE2_INSNC ("ssra", 0x4500e000, 0xff20fc00, sve_shift_tsz_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED), OP_SVE_VVU_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("ssublb", 0x45001000, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("ssublbt", 0x45008800, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("ssublt", 0x45001400, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("ssubltb", 0x45008c00, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("ssubwb", 0x45005000, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS2, 0, 0), + SVE2_INSN ("ssubwt", 0x45005400, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS2, 0, 0), + SVE2_INSN ("stnt1b", 0xe4402000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_SUS, F_OD(1), 0), + SVE2_INSN ("stnt1b", 0xe4002000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_DUD, F_OD(1), 0), + SVE2_INSN ("stnt1d", 0xe5802000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_DUD, F_OD(1), 0), + SVE2_INSN ("stnt1h", 0xe4c02000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_SUS, F_OD(1), 0), + SVE2_INSN ("stnt1h", 0xe4802000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_DUD, F_OD(1), 0), + SVE2_INSN ("stnt1w", 0xe5402000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_SUS, F_OD(1), 0), + SVE2_INSN ("stnt1w", 0xe5002000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_DUD, F_OD(1), 0), + SVE2_INSN ("subhnb", 0x45207000, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHS_HSD, 0, 0), + SVE2_INSN ("subhnt", 0x45207400, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHS_HSD, 0, 0), + SVE2_INSNC ("suqadd", 0x441c8000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSN ("tbl", 0x05202800, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_ZnxN, SVE_Zm_16), OP_SVE_VVV_BHSD, F_OD(2), 0), + SVE2_INSN ("tbx", 0x05202c00, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, 0), + SVE2_INSNC ("uaba", 0x4500fc00, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("uabalb", 0x4500c800, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("uabalt", 0x4500cc00, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("uabdlb", 0x45003800, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("uabdlt", 0x45003c00, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSNC ("uadalp", 0x4405a000, 0xff3fe000, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VMV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("uaddlb", 0x45000800, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("uaddlt", 0x45000c00, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("uaddwb", 0x45004800, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS2, 0, 0), + SVE2_INSN ("uaddwt", 0x45004c00, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS2, 0, 0), + SVE2_INSNC ("uhadd", 0x44118000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("uhsub", 0x44138000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("uhsubr", 0x44178000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("umaxp", 0x4415a000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("uminp", 0x4417a000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("umlalb", 0x44a09000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("umlalb", 0x44e09000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("umlalb", 0x44004800, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("umlalt", 0x44a09400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("umlalt", 0x44e09400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("umlalt", 0x44004c00, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("umlslb", 0x44a0b000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("umlslb", 0x44e0b000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("umlslb", 0x44005800, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("umlslt", 0x44a0b400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("umlslt", 0x44e0b400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("umlslt", 0x44005c00, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("umulh", 0x04206c00, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, 0), + SVE2_INSN ("umullb", 0x44a0d000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, 0), + SVE2_INSN ("umullb", 0x44e0d000, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, 0), + SVE2_INSN ("umullb", 0x45007800, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("umullt", 0x44a0d400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm3_11_INDEX), OP_SVE_SHH, 0, 0), + SVE2_INSN ("umullt", 0x44e0d400, 0xffe0f400, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm4_11_INDEX), OP_SVE_DSS, 0, 0), + SVE2_INSN ("umullt", 0x45007c00, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSNC ("uqadd", 0x44198000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("uqrshl", 0x440b8000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("uqrshlr", 0x440f8000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSN ("uqrshrnb", 0x45203800, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSN ("uqrshrnt", 0x45203c00, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSNC ("uqshl", 0x04078000, 0xff3fe000, sve_shift_pred, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_SHLIMM_PRED), OP_SVE_VMVU_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("uqshl", 0x44098000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("uqshlr", 0x440d8000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSN ("uqshrnb", 0x45203000, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSN ("uqshrnt", 0x45203400, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED_22), OP_SVE_VVU_BHS_HSD, 0, 0), + SVE2_INSNC ("uqsub", 0x441b8000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("uqsubr", 0x441f8000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSN ("uqxtnb", 0x45204800, 0xffa7fc00, sve_size_tsz_bhs, 0, OP2 (SVE_Zd, SVE_Zn), OP_SVE_VV_BHS_HSD, 0, 0), + SVE2_INSN ("uqxtnt", 0x45204c00, 0xffa7fc00, sve_size_tsz_bhs, 0, OP2 (SVE_Zd, SVE_Zn), OP_SVE_VV_BHS_HSD, 0, 0), + SVE2_INSNC ("urecpe", 0x4480a000, 0xffffe000, sve_misc, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SMS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("urhadd", 0x44158000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("urshl", 0x44038000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("urshlr", 0x44078000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("urshr", 0x040d8000, 0xff3fe000, sve_shift_pred, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_SHRIMM_PRED), OP_SVE_VMVU_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("ursqrte", 0x4481a000, 0xffffe000, sve_misc, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SMS, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSNC ("ursra", 0x4500ec00, 0xff20fc00, sve_shift_tsz_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED), OP_SVE_VVU_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("ushllb", 0x4500a800, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHLIMM_UNPRED_22), OP_SVE_VVU_HSD_BHS, 0, 0), + SVE2_INSN ("ushllt", 0x4500ac00, 0xffa0fc00, sve_shift_tsz_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHLIMM_UNPRED_22), OP_SVE_VVU_HSD_BHS, 0, 0), + SVE2_INSNC ("usqadd", 0x441d8000, 0xff3fe000, sve_size_bhsd, 0, OP4 (SVE_Zd, SVE_Pg3, SVE_Zd, SVE_Zn), OP_SVE_VMVV_BHSD, 0, C_SCAN_MOVPRFX, 2), + SVE2_INSNC ("usra", 0x4500e400, 0xff20fc00, sve_shift_tsz_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED), OP_SVE_VVU_BHSD, 0, C_SCAN_MOVPRFX, 0), + SVE2_INSN ("usublb", 0x45001800, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("usublt", 0x45001c00, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS, 0, 0), + SVE2_INSN ("usubwb", 0x45005800, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS2, 0, 0), + SVE2_INSN ("usubwt", 0x45005c00, 0xff20fc00, sve_size_hsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_HSD_BHS2, 0, 0), + SVE2_INSN ("whilege", 0x25200000, 0xff20fc10, sve_size_bhsd, 0, OP3 (SVE_Pd, Rn, Rm), OP_SVE_VWW_BHSD, 0, 0), + SVE2_INSN ("whilege", 0x25201000, 0xff20fc10, sve_size_bhsd, 0, OP3 (SVE_Pd, Rn, Rm), OP_SVE_VXX_BHSD, 0, 0), + SVE2_INSN ("whilegt", 0x25200010, 0xff20fc10, sve_size_bhsd, 0, OP3 (SVE_Pd, Rn, Rm), OP_SVE_VWW_BHSD, 0, 0), + SVE2_INSN ("whilegt", 0x25201010, 0xff20fc10, sve_size_bhsd, 0, OP3 (SVE_Pd, Rn, Rm), OP_SVE_VXX_BHSD, 0, 0), + SVE2_INSN ("whilehi", 0x25200810, 0xff20fc10, sve_size_bhsd, 0, OP3 (SVE_Pd, Rn, Rm), OP_SVE_VWW_BHSD, 0, 0), + SVE2_INSN ("whilehi", 0x25201810, 0xff20fc10, sve_size_bhsd, 0, OP3 (SVE_Pd, Rn, Rm), OP_SVE_VXX_BHSD, 0, 0), + SVE2_INSN ("whilehs", 0x25200800, 0xff20fc10, sve_size_bhsd, 0, OP3 (SVE_Pd, Rn, Rm), OP_SVE_VWW_BHSD, 0, 0), + SVE2_INSN ("whilehs", 0x25201800, 0xff20fc10, sve_size_bhsd, 0, OP3 (SVE_Pd, Rn, Rm), OP_SVE_VXX_BHSD, 0, 0), + SVE2_INSN ("whilerw", 0x25203010, 0xff20fc10, sve_size_bhsd, 0, OP3 (SVE_Pd, Rn, Rm), OP_SVE_VXX_BHSD, 0, 0), + SVE2_INSN ("whilewr", 0x25203000, 0xff20fc10, sve_size_bhsd, 0, OP3 (SVE_Pd, Rn, Rm), OP_SVE_VXX_BHSD, 0, 0), + SVE2_INSNC ("xar", 0x04203400, 0xff20fc00, sve_shift_tsz_bhsd, 0, OP4 (SVE_Zd, SVE_Zd, SVE_Zn, SVE_SHRIMM_UNPRED), OP_SVE_VVVU_BHSD, 0, C_SCAN_MOVPRFX, 1), + /* SVE2_SM4 instructions. */ + SVE2SM4_INSN ("sm4e", 0x4523e000, 0xfffffc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zd, SVE_Zn), OP_SVE_SSS, 0, 1), + SVE2SM4_INSN ("sm4ekey", 0x4520f000, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_SSS, 0, 0), + /* SVE2_AES instructions. */ + SVE2AES_INSN ("aesd", 0x4522e400, 0xfffffc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zd, SVE_Zn), OP_SVE_BBB, 0, 1), + SVE2AES_INSN ("aese", 0x4522e000, 0xfffffc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zd, SVE_Zn), OP_SVE_BBB, 0, 1), + SVE2AES_INSN ("aesimc", 0x4520e400, 0xffffffe0, sve_misc, 0, OP2 (SVE_Zd, SVE_Zd), OP_SVE_BB, 0, 1), + SVE2AES_INSN ("aesmc", 0x4520e000, 0xffffffe0, sve_misc, 0, OP2 (SVE_Zd, SVE_Zd), OP_SVE_BB, 0, 1), + SVE2AES_INSN ("pmullb", 0x45006800, 0xff20fc00, sve_size_013, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_QHD_DBS, 0, 0), + SVE2AES_INSN ("pmullt", 0x45006c00, 0xff20fc00, sve_size_013, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_QHD_DBS, 0, 0), + /* SVE2_SHA3 instructions. */ + SVE2SHA3_INSN ("rax1", 0x4520f400, 0xffe0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_DDD, 0, 0), + /* SVE2_BITPERM instructions. */ + SVE2BITPERM_INSN ("bdep", 0x4500b400, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, 0), + SVE2BITPERM_INSN ("bext", 0x4500b000, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, 0), + SVE2BITPERM_INSN ("bgrp", 0x4500b800, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, 0), + /* SIMD Dot Product (optional in v8.2-A). */ DOT_INSN ("udot", 0x2e009400, 0xbf20fc00, dotproduct, OP3 (Vd, Vn, Vm), QL_V3DOT, F_SIZEQ), DOT_INSN ("sdot", 0xe009400, 0xbf20fc00, dotproduct, OP3 (Vd, Vn, Vm), QL_V3DOT, F_SIZEQ), -- 2.30.2