From 2db11bdf849f72c1172f23c07b0a3c0dc8a53f8a Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Mon, 15 Jan 2024 11:45:28 +0000 Subject: Add generated source files and fix thinko in aarch64-asm.c --- opcodes/aarch64-asm-2.c | 136 +++-- opcodes/aarch64-asm.c | 2 +- opcodes/aarch64-dis-2.c | 1473 +++++++++++++++++++++++++++++++---------------- opcodes/aarch64-opc-2.c | 13 + 4 files changed, 1058 insertions(+), 566 deletions(-) (limited to 'opcodes') diff --git a/opcodes/aarch64-asm-2.c b/opcodes/aarch64-asm-2.c index 6d5aebb..2b7afd2 100644 --- a/opcodes/aarch64-asm-2.c +++ b/opcodes/aarch64-asm-2.c @@ -670,26 +670,26 @@ aarch64_insert_operand (const aarch64_operand *self, case 204: case 205: case 206: - case 207: - case 208: - case 209: - case 210: - case 211: + case 215: + case 216: + case 217: case 218: - case 221: - case 225: - case 232: - case 233: - case 240: - case 241: + case 219: + case 227: + case 231: + case 235: case 242: case 243: + case 250: + case 251: + case 252: + case 253: return aarch64_ins_regno (self, info, code, inst, errors); case 6: case 113: case 114: - case 275: - case 277: + case 285: + case 287: return aarch64_ins_none (self, info, code, inst, errors); case 17: return aarch64_ins_reg_extended (self, info, code, inst, errors); @@ -701,7 +701,7 @@ aarch64_insert_operand (const aarch64_operand *self, case 35: case 36: case 37: - case 279: + case 289: return aarch64_ins_reglane (self, info, code, inst, errors); case 38: return aarch64_ins_reglist (self, info, code, inst, errors); @@ -747,13 +747,13 @@ aarch64_insert_operand (const aarch64_operand *self, case 200: case 201: case 202: - case 246: - case 273: - case 274: - case 276: - case 278: + case 256: case 283: case 284: + case 286: + case 288: + case 293: + case 294: return aarch64_ins_imm (self, info, code, inst, errors); case 46: case 47: @@ -901,74 +901,90 @@ aarch64_insert_operand (const aarch64_operand *self, case 192: case 193: case 194: - case 259: + case 269: return aarch64_ins_sve_shrimm (self, info, code, inst, errors); + case 207: + case 208: + case 209: + case 210: + return aarch64_ins_sme_za_vrs1 (self, info, code, inst, errors); + case 211: case 212: case 213: case 214: - case 215: - case 216: - case 217: - return aarch64_ins_sve_quad_index (self, info, code, inst, errors); - case 219: - return aarch64_ins_sve_index (self, info, code, inst, errors); + return aarch64_ins_sme_za_vrs2 (self, info, code, inst, errors); case 220: + case 221: case 222: - case 239: - return aarch64_ins_sve_reglist (self, info, code, inst, errors); case 223: case 224: + case 225: case 226: - case 227: + return aarch64_ins_sve_quad_index (self, info, code, inst, errors); case 228: + return aarch64_ins_sve_index_imm (self, info, code, inst, errors); case 229: - case 238: - return aarch64_ins_sve_aligned_reglist (self, info, code, inst, errors); + return aarch64_ins_sve_index (self, info, code, inst, errors); case 230: - case 231: - return aarch64_ins_sve_strided_reglist (self, info, code, inst, errors); + case 232: + case 249: + case 295: + case 296: + case 297: + return aarch64_ins_sve_reglist (self, info, code, inst, errors); + case 233: case 234: case 236: - case 247: - return aarch64_ins_sme_za_hv_tiles (self, info, code, inst, errors); - case 235: case 237: - return aarch64_ins_sme_za_hv_tiles_range (self, info, code, inst, errors); + case 238: + case 239: + case 248: + return aarch64_ins_sve_aligned_reglist (self, info, code, inst, errors); + case 240: + case 241: + return aarch64_ins_sve_strided_reglist (self, info, code, inst, errors); case 244: + case 246: + case 257: + return aarch64_ins_sme_za_hv_tiles (self, info, code, inst, errors); case 245: + case 247: + return aarch64_ins_sme_za_hv_tiles_range (self, info, code, inst, errors); + case 254: + case 255: + case 270: + case 271: + case 272: + case 273: + case 274: + case 275: + case 276: + case 277: + case 278: + case 279: + case 280: + case 281: + case 282: + return aarch64_ins_simple_index (self, info, code, inst, errors); + case 258: + case 259: case 260: case 261: case 262: case 263: case 264: - case 265: - case 266: - case 267: - case 268: - case 269: - case 270: - case 271: - case 272: - return aarch64_ins_simple_index (self, info, code, inst, errors); - case 248: - case 249: - case 250: - case 251: - case 252: - case 253: - case 254: return aarch64_ins_sme_za_array (self, info, code, inst, errors); - case 255: + case 265: return aarch64_ins_sme_addr_ri_u4xvl (self, info, code, inst, errors); - case 256: + case 266: return aarch64_ins_sme_sm_za (self, info, code, inst, errors); - case 257: + case 267: return aarch64_ins_sme_pred_reg_with_index (self, info, code, inst, errors); - case 258: + case 268: return aarch64_ins_plain_shrimm (self, info, code, inst, errors); - case 280: - case 281: - case 282: + case 290: + case 291: + case 292: return aarch64_ins_x0_to_x30 (self, info, code, inst, errors); default: assert (0); abort (); } diff --git a/opcodes/aarch64-asm.c b/opcodes/aarch64-asm.c index 0de09f0..4d0b13e 100644 --- a/opcodes/aarch64-asm.c +++ b/opcodes/aarch64-asm.c @@ -1999,7 +1999,7 @@ do_special_encoding (struct aarch64_inst *inst) if ((inst->opcode->flags & F_OPD_SIZE) && inst->opcode->iclass == sve2_urqvs) { - enum aarch64_opnd_qualifier qualifier[1]; + enum aarch64_opnd_qualifier qualifier[2]; aarch64_insn value1 = 0; idx = 0; qualifier[0] = inst->operands[idx].qualifier; diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c index cfaecb5..31c7f66 100644 --- a/opcodes/aarch64-dis-2.c +++ b/opcodes/aarch64-dis-2.c @@ -252,11 +252,55 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1000000xx0x011xxxxx00xxxxxxxxxx - mov. */ - return 2655; + if (((word >> 9) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000xx0x011xxxxx000xxxxxxxxx + mov. */ + return 2655; + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000000x011xxxxx001xxxxxxxxx + movaz. */ + return 3283; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000100x011xxxxx001xxxxxxxxx + movaz. */ + return 3285; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000010x011xxxxx001xxxxxxxxx + movaz. */ + return 3284; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000110x011xxxxx001xxxxxxxxx + movaz. */ + return 3286; + } + } + } } } else @@ -346,11 +390,55 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1000000xx0xx11xxxxx01xxxxxxxxxx - mov. */ - return 2656; + if (((word >> 9) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000xx0xx11xxxxx010xxxxxxxxx + mov. */ + return 2656; + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000000xx11xxxxx011xxxxxxxxx + movaz. */ + return 3279; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000100xx11xxxxx011xxxxxxxxx + movaz. */ + return 3281; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000010xx11xxxxx011xxxxxxxxx + movaz. */ + return 3280; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000110xx11xxxxx011xxxxxxxxx + movaz. */ + return 3282; + } + } + } } } else @@ -13332,55 +13420,143 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 17) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 19) & 0x1) == 0) { - if (((word >> 16) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx000x00001xxxxxxxxxxxxx - saddv. */ - return 1855; + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx000000001xxxxxxxxxxxxx + saddv. */ + return 1855; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx000001001xxxxxxxxxxxxx + uaddv. */ + return 2008; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx000x01001xxxxxxxxxxxxx - uaddv. */ - return 2008; + 000001x0xx01000x001xxxxxxxxxxxxx + movprfx. */ + return 1789; } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx010x0x001xxxxxxxxxxxxx - movprfx. */ - return 1789; + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx001000001xxxxxxxxxxxxx + smaxv. */ + return 1873; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx011000001xxxxxxxxxxxxx + orv. */ + return 1806; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx001001001xxxxxxxxxxxxx + umaxv. */ + return 2023; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx011001001xxxxxxxxxxxxx + eorv. */ + return 1420; + } + } } } else { if (((word >> 16) & 0x1) == 0) { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0xx100001xxxxxxxxxxxxx + smaxqv. */ + return 3289; + } + else + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x0101001xxxxxxxxxxxxx + addqv. */ + return 3287; + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx001101001xxxxxxxxxxxxx + umaxqv. */ + return 3291; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx011101001xxxxxxxxxxxxx + eorqv. */ + return 3293; + } + } + } + } + } + else + { + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx001x00001xxxxxxxxxxxxx - smaxv. */ - return 1873; + 000001x0xx00x010001xxxxxxxxxxxxx + sminv. */ + return 1876; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx011x00001xxxxxxxxxxxxx - orv. */ - return 1806; + 000001x0xx01x010001xxxxxxxxxxxxx + andv. */ + return 1333; } } else @@ -13389,50 +13565,39 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx001x01001xxxxxxxxxxxxx - umaxv. */ - return 2023; + 000001x0xx00x110001xxxxxxxxxxxxx + sminqv. */ + return 3290; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx011x01001xxxxxxxxxxxxx - eorv. */ - return 1420; + 000001x0xx01x110001xxxxxxxxxxxxx + andqv. */ + return 3288; } } } - } - else - { - if (((word >> 16) & 0x1) == 0) + else { - if (((word >> 20) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx00xx10001xxxxxxxxxxxxx - sminv. */ - return 1876; + 000001x0xx0xx011001xxxxxxxxxxxxx + uminv. */ + return 2026; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx01xx10001xxxxxxxxxxxxx - andv. */ - return 1333; + 000001x0xx0xx111001xxxxxxxxxxxxx + uminqv. */ + return 3292; } } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0xxx11001xxxxxxxxxxxxx - uminv. */ - return 2026; - } } } else @@ -14168,21 +14333,32 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 110001x00x0xxxxx101xxxxxxxxxxxxx - ldff1sb. */ - return 1712; + 110001x0x00xxxxx101xxxxxxxxxxxxx + ld1q. */ + return 3301; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 110001x01x0xxxxx101xxxxxxxxxxxxx - ldff1sh. */ - return 1723; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0010xxxxx101xxxxxxxxxxxxx + ldff1sb. */ + return 1712; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x0110xxxxx101xxxxxxxxxxxxx + ldff1sh. */ + return 1723; + } } } } @@ -15632,31 +15808,64 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 13) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0x00xxxxx0x0xxxxxxxxxxxxx - st1b. */ - return 1911; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0x00xxxxx000xxxxxxxxxxxxx + st3q. */ + return 3310; + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0010xxxxx000xxxxxxxxxxxxx + st2q. */ + return 3309; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0110xxxxx000xxxxxxxxxxxxx + st4q. */ + return 3311; + } + } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 111001x0010xxxxx0x0xxxxxxxxxxxxx + 111001x0x00xxxxx010xxxxxxxxxxxxx st1b. */ - return 1915; + return 1911; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0110xxxxx0x0xxxxxxxxxxxxx - st1h. */ - return 1936; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0010xxxxx010xxxxxxxxxxxxx + st1b. */ + return 1915; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0110xxxxx010xxxxxxxxxxxxx + st1h. */ + return 1936; + } } } } @@ -16058,99 +16267,154 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - if (((word >> 31) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0000xxxxx101xxxxxxxxxxxxx - fcvtxnt. */ - return 2121; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0000xxxxx101xxxxxxxxxxxxx - st1b. */ - return 1913; - } - } - 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) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x0100xxx00101xxxxxxxxxxxxx - fcvtnt. */ - return 2118; + 011001x0xx0x0000101xxxxxxxxxxxxx + faddqv. */ + return 3294; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x0100xxx10101xxxxxxxxxxxxx - bfcvtnt. */ - return 3050; + 011001x0xx0x1000101xxxxxxxxxxxxx + fcvtnt. */ + return 2118; } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x0100xxxx1101xxxxxxxxxxxxx - fcvtlt. */ - return 2116; + 011001x0xx0xx100101xxxxxxxxxxxxx + fmaxnmqv. */ + return 3295; } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0100xxxxx101xxxxxxxxxxxxx - st1h. */ - return 1932; + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0000xx010101xxxxxxxxxxxxx + fcvtxnt. */ + return 2121; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0100xx010101xxxxxxxxxxxxx + bfcvtnt. */ + return 3050; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x10xx010101xxxxxxxxxxxxx + fcvtnt. */ + return 2119; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0xx110101xxxxxxxxxxxxx + fmaxqv. */ + return 3296; + } } } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0010xxxxx101xxxxxxxxxxxxx - st1b. */ - return 1920; - } else { - if (((word >> 31) & 0x1) == 0) + if (((word >> 17) & 0x1) == 0) { - if (((word >> 16) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x0110xxxx0101xxxxxxxxxxxxx - fcvtnt. */ - return 2119; + 011001x0xx0xx001101xxxxxxxxxxxxx + fcvtlt. */ + return 2116; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x0110xxxx1101xxxxxxxxxxxxx + 011001x0xx0xx101101xxxxxxxxxxxxx + fminnmqv. */ + return 3297; + } + } + else + { + if (((word >> 18) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0xx011101xxxxxxxxxxxxx fcvtlt. */ return 2117; } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0xx111101xxxxxxxxxxxxx + fminqv. */ + return 3298; + } + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0000xxxxx101xxxxxxxxxxxxx + st1b. */ + return 1913; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0100xxxxx101xxxxxxxxxxxxx + st1h. */ + return 1932; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0010xxxxx101xxxxxxxxxxxxx + st1b. */ + return 1920; } else { @@ -16189,43 +16453,54 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0000xxxxx111xxxxxxxxxxxxx - ldnt1b. */ - return 1763; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x00000xxxx111xxxxxxxxxxxxx + ldnt1b. */ + return 1763; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x01000xxxx111xxxxxxxxxxxxx + ldnt1h. */ + return 1767; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0100xxxxx111xxxxxxxxxxxxx - ldnt1h. */ - return 1767; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x00100xxxx111xxxxxxxxxxxxx + ld3b. */ + return 1655; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x01100xxxx111xxxxxxxxxxxxx + ld3h. */ + return 1659; + } } } else { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0010xxxxx111xxxxxxxxxxxxx - ld3b. */ - return 1655; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x0110xxxxx111xxxxxxxxxxxxx - ld3h. */ - return 1659; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x0xx01xxxx111xxxxxxxxxxxxx + ld2q. */ + return 3302; } } } @@ -16446,86 +16721,141 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 14) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - if (((word >> 10) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x00x1xxxxx0000x0xxxxxxxxxx - fmla. */ - return 1485; - } - else + if (((word >> 10) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0101xxxxx0000x0xxxxxxxxxx + 011001x00x1xxxxx000x00xxxxxxxxxx fmla. */ - return 1486; + return 1485; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0111xxxxx0000x0xxxxxxxxxx - fmla. */ - return 1487; + 011001x00x1xxxxx000x10xxxxxxxxxx + bfmla. */ + return 3276; } } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x00x1xxxxx0000x1xxxxxxxxxx - fmls. */ - return 1489; - } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0101xxxxx0000x1xxxxxxxxxx + 011001x00x1xxxxx000x01xxxxxxxxxx fmls. */ - return 1490; + return 1489; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0111xxxxx0000x1xxxxxxxxxx - fmls. */ - return 1491; + 011001x00x1xxxxx000x11xxxxxxxxxx + bfmls. */ + return 3277; } } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x00x1xxxxx000xxxxxxxxxxxxx + st2q. */ + return 3312; + } } else { if (((word >> 22) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0x01xxxxx0001xxxxxxxxxxxx - fcmla. */ - return 1433; + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0101xxxxx0000x0xxxxxxxxxx + fmla. */ + return 1486; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0101xxxxx0000x1xxxxxxxxxx + fmls. */ + return 1490; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0101xxxxx0001xxxxxxxxxxxx + fcmla. */ + return 1433; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0101xxxxx000xxxxxxxxxxxxx + st3q. */ + return 3313; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0x11xxxxx0001xxxxxxxxxxxx - fcmla. */ - return 1434; + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0111xxxxx0000x0xxxxxxxxxx + fmla. */ + return 1487; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0111xxxxx0000x1xxxxxxxxxx + fmls. */ + return 1491; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0111xxxxx0001xxxxxxxxxxxx + fcmla. */ + return 1434; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0111xxxxx000xxxxxxxxxxxxx + st4q. */ + return 3314; + } } } } @@ -16949,43 +17279,65 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 15) & 0x1) == 0) { - if (((word >> 10) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x00x1xxxxx001xx0xxxxxxxxxx - fmul. */ - return 1496; - } - else + if (((word >> 10) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0101xxxxx001xx0xxxxxxxxxx - fmul. */ - return 1497; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x00x1xxxxx001x00xxxxxxxxxx + fmul. */ + return 1496; + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0101xxxxx001x00xxxxxxxxxx + fmul. */ + return 1497; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0111xxxxx001x00xxxxxxxxxx + fmul. */ + return 1498; + } + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0111xxxxx001xx0xxxxxxxxxx - fmul. */ - return 1498; + 011001x0xx1xxxxx001x10xxxxxxxxxx + bfmul. */ + return 3278; } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx1xxxxx001xx1xxxxxxxxxx + fclamp. */ + return 2456; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x0xx1xxxxx001xx1xxxxxxxxxx - fclamp. */ - return 2456; + 111001x0xx1xxxxx001xxxxxxxxxxxxx + st1q. */ + return 3308; } } else @@ -17723,11 +18075,33 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1xxxxx001xx1xxxxxxxxxx - tbx. */ - return 2299; + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1x01xxxxx001x01xxxxxxxxxx + dupq. */ + return 3299; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1x11xxxxx001x01xxxxxxxxxx + extq. */ + return 3300; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xxxxx001x11xxxxxxxxxx + tbx. */ + return 2299; + } } } else @@ -21587,23 +21961,45 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x1000xxxxx111xxxxxxxxxxxxx - ldnt1w. */ - return 1769; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x10000xxxx111xxxxxxxxxxxxx + ldnt1w. */ + return 1769; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x11000xxxx111xxxxxxxxxxxxx + ldnt1d. */ + return 1765; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x1100xxxxx111xxxxxxxxxxxxx - ldnt1d. */ - return 1765; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x10100xxxx111xxxxxxxxxxxxx + ld3w. */ + return 1661; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x11100xxxx111xxxxxxxxxxxxx + ld3d. */ + return 1657; + } } } else @@ -21612,17 +22008,17 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x1010xxxxx111xxxxxxxxxxxxx - ld3w. */ - return 1661; + 101001x10x01xxxx111xxxxxxxxxxxxx + ld3q. */ + return 3303; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x1110xxxxx111xxxxxxxxxxxxx - ld3d. */ - return 1657; + 101001x11x01xxxx111xxxxxxxxxxxxx + ld4q. */ + return 3304; } } } @@ -22546,127 +22942,94 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 14) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 9) & 0x1) == 0) { - if (((word >> 9) & 0x1) == 0) + if (((word >> 16) & 0x1) == 0) { - if (((word >> 16) & 0x1) == 0) + if (((word >> 17) & 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) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10000010xxxx0xxxxxxxxx - cntp. */ - return 1394; - } - else + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1x000010xxxx0xxxxxxxxx + cntp. */ + return 1394; + } + else + { + if (((word >> 10) & 0x1) == 0) { - if (((word >> 10) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10100010x0000xxxxxxxxx - sqincp. */ - return 1903; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10100010x1000xxxxxxxxx - wrffr. */ - return 2077; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1x100010x0000xxxxxxxxx + sqincp. */ + return 1903; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx10100010xx100xxxxxxxxx - sqincp. */ - return 1905; + 001001x1xx1x100010x1000xxxxxxxxx + wrffr. */ + return 2077; } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx10100010xxx10xxxxxxxxx + 001001x1xx1x100010xx100xxxxxxxxx sqincp. */ - return 1904; - } - } - } - else - { - if (((word >> 11) & 0x1) == 0) - { - if (((word >> 12) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10x10010x00x0xxxxxxxxx - incp. */ - return 1532; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10x10010x10x0xxxxxxxxx - setffr. */ - return 1870; + return 1905; } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx10x10010xx1x0xxxxxxxxx - incp. */ - return 1533; + 001001x1xx1x100010xxx10xxxxxxxxx + sqincp. */ + return 1904; } } } else { - if (((word >> 10) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx10xx1010xx000xxxxxxxxx - sqdecp. */ - return 1889; + 001001x1xx1xx10010x00x0xxxxxxxxx + incp. */ + return 1532; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx10xx1010xx100xxxxxxxxx - sqdecp. */ - return 1891; + 001001x1xx1xx10010x10x0xxxxxxxxx + setffr. */ + return 1870; } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx10xx1010xxx10xxxxxxxxx - sqdecp. */ - return 1890; + 001001x1xx1xx10010xx1x0xxxxxxxxx + incp. */ + return 1533; } } } @@ -22676,175 +23039,230 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 11) & 0x1) == 0) { - if (((word >> 17) & 0x1) == 0) - { - if (((word >> 18) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10x00110xx000xxxxxxxxx - uqincp. */ - return 2052; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10x10110xx000xxxxxxxxx - decp. */ - return 1407; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10xx1110xx000xxxxxxxxx - uqdecp. */ - return 2038; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xxx1010xx000xxxxxxxxx + sqdecp. */ + return 1889; } else { - if (((word >> 17) & 0x1) == 0) - { - if (((word >> 18) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10x00110xx100xxxxxxxxx - uqincp. */ - return 2053; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10x10110xx100xxxxxxxxx - decp. */ - return 1408; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xxx1010xx100xxxxxxxxx + sqdecp. */ + return 1891; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xxx1010xxx10xxxxxxxxx + sqdecp. */ + return 1890; + } + } + } + else + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xx00110xx000xxxxxxxxx + uqincp. */ + return 2052; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx10xx1110xx100xxxxxxxxx - uqdecp. */ - return 2039; + 001001x1xx1xx10110xx000xxxxxxxxx + decp. */ + return 1407; } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xxx1110xx000xxxxxxxxx + uqdecp. */ + return 2038; + } } else { if (((word >> 17) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10xx0110xxx10xxxxxxxxx - uqincp. */ - return 2054; + if (((word >> 18) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xx00110xx100xxxxxxxxx + uqincp. */ + return 2053; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xx10110xx100xxxxxxxxx + decp. */ + return 1408; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx10xx1110xxx10xxxxxxxxx + 001001x1xx1xxx1110xx100xxxxxxxxx uqdecp. */ - return 2040; + return 2039; } } } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10xxxx10xxxx1xxxxxxxxx - cntp. */ - return 2510; - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x10010xxxx10xxxxxxxxxxxxxx - ld1sh. */ - return 1625; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x11010xxxx10xxxxxxxxxxxxxx - ld1sb. */ - return 1612; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x10110xxxx10xxxxxxxxxxxxxx - ld1w. */ - return 1644; - } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x11110xxxx10xxxxxxxxxxxxxx - ld1d. */ - return 1564; + if (((word >> 17) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xxx0110xxx10xxxxxxxxx + uqincp. */ + return 2054; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xxx1110xxx10xxxxxxxxx + uqdecp. */ + return 2040; + } } } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xxxxx10xxxx1xxxxxxxxx + cntp. */ + return 2510; + } } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x01001x10011xxxx10xxxxxxxxxxxxxx - ldnf1sh. */ - return 1758; + 101001x10x1xxxxx100xxxxxxxxxxxxx + ld3q. */ + return 3306; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x01001x11011xxxx10xxxxxxxxxxxxxx - ldnf1sb. */ - return 1755; + 101001x11x1xxxxx100xxxxxxxxxxxxx + ld4q. */ + return 3307; } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01001x10111xxxx10xxxxxxxxxxxxxx - ldnf1w. */ - return 1761; + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x10010xxxx101xxxxxxxxxxxxx + ld1sh. */ + return 1625; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x11010xxxx101xxxxxxxxxxxxx + ld1sb. */ + return 1612; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x10110xxxx101xxxxxxxxxxxxx + ld1w. */ + return 1644; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x11110xxxx101xxxxxxxxxxxxx + ld1d. */ + return 1564; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01001x11111xxxx10xxxxxxxxxxxxxx - ldnf1d. */ - return 1750; + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x10011xxxx101xxxxxxxxxxxxx + ldnf1sh. */ + return 1758; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x11011xxxx101xxxxxxxxxxxxx + ldnf1sb. */ + return 1755; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x10111xxxx101xxxxxxxxxxxxx + ldnf1w. */ + return 1761; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x11111xxxx101xxxxxxxxxxxxx + ldnf1d. */ + return 1750; + } + } } } } @@ -31703,10 +32121,24 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode) case 1678: return NULL; /* ldff1b --> NULL. */ case 1696: value = 1697; break; /* ldff1h --> ldff1h. */ case 1697: return NULL; /* ldff1h --> NULL. */ + case 1651: value = 3305; break; /* ld2h --> ld2q. */ + case 3305: return NULL; /* ld2q --> NULL. */ + case 2456: value = 3271; break; /* fclamp --> bfclamp. */ + case 3271: return NULL; /* bfclamp --> NULL. */ case 1770: value = 1771; break; /* ldr --> ldr. */ case 1771: return NULL; /* ldr --> NULL. */ + case 1426: value = 3270; break; /* fadd --> bfadd. */ + case 3270: return NULL; /* bfadd --> NULL. */ + case 1493: value = 3273; break; /* fmul --> bfmul. */ + case 3273: return NULL; /* bfmul --> NULL. */ + case 1519: value = 3275; break; /* fsub --> bfsub. */ + case 3275: return NULL; /* bfsub --> NULL. */ + case 1484: value = 3268; break; /* fmla --> bfmla. */ + case 3268: return NULL; /* bfmla --> NULL. */ case 1989: value = 1990; break; /* str --> str. */ case 1990: return NULL; /* str --> NULL. */ + case 1488: value = 3269; break; /* fmls --> bfmls. */ + case 3269: return NULL; /* bfmls --> NULL. */ case 1717: value = 1718; break; /* ldff1sh --> ldff1sh. */ case 1718: return NULL; /* ldff1sh --> NULL. */ case 1705: value = 1706; break; /* ldff1sb --> ldff1sb. */ @@ -31727,6 +32159,20 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode) case 1684: return NULL; /* ldff1d --> NULL. */ case 1807: value = 1808; break; /* pfalse --> pfalse. */ case 1808: return NULL; /* pfalse --> NULL. */ + case 1427: value = 3263; break; /* fadd --> bfadd. */ + case 3263: return NULL; /* bfadd --> NULL. */ + case 1474: value = 3265; break; /* fmaxnm --> bfmaxnm. */ + case 3265: return NULL; /* bfmaxnm --> NULL. */ + case 1494: value = 3272; break; /* fmul --> bfmul. */ + case 3272: return NULL; /* bfmul --> NULL. */ + case 1472: value = 3264; break; /* fmax --> bfmax. */ + case 3264: return NULL; /* bfmax --> NULL. */ + case 1520: value = 3274; break; /* fsub --> bfsub. */ + case 3274: return NULL; /* bfsub --> NULL. */ + case 1480: value = 3267; break; /* fminnm --> bfminnm. */ + case 3267: return NULL; /* bfminnm --> NULL. */ + case 1478: value = 3266; break; /* fmin --> bfmin. */ + case 3266: return NULL; /* bfmin --> NULL. */ case 811: value = 812; break; /* xaflag --> axflag. */ case 812: value = 1206; break; /* axflag --> tcommit. */ case 1206: value = 1209; break; /* tcommit --> smstart. */ @@ -32354,26 +32800,26 @@ aarch64_extract_operand (const aarch64_operand *self, case 204: case 205: case 206: - case 207: - case 208: - case 209: - case 210: - case 211: + case 215: + case 216: + case 217: case 218: - case 221: - case 225: - case 232: - case 233: - case 240: - case 241: + case 219: + case 227: + case 231: + case 235: case 242: case 243: + case 250: + case 251: + case 252: + case 253: return aarch64_ext_regno (self, info, code, inst, errors); case 6: case 113: case 114: - case 275: - case 277: + case 285: + case 287: return aarch64_ext_none (self, info, code, inst, errors); case 11: return aarch64_ext_regrt_sysins (self, info, code, inst, errors); @@ -32390,7 +32836,7 @@ aarch64_extract_operand (const aarch64_operand *self, case 35: case 36: case 37: - case 279: + case 289: return aarch64_ext_reglane (self, info, code, inst, errors); case 38: return aarch64_ext_reglist (self, info, code, inst, errors); @@ -32437,13 +32883,13 @@ aarch64_extract_operand (const aarch64_operand *self, case 200: case 201: case 202: - case 246: - case 273: - case 274: - case 276: - case 278: + case 256: case 283: case 284: + case 286: + case 288: + case 293: + case 294: return aarch64_ext_imm (self, info, code, inst, errors); case 46: case 47: @@ -32593,75 +33039,92 @@ aarch64_extract_operand (const aarch64_operand *self, case 192: case 193: case 194: - case 259: + case 269: return aarch64_ext_sve_shrimm (self, info, code, inst, errors); + case 207: + case 208: + case 209: + case 210: + return aarch64_ext_sme_za_vrs1 (self, info, code, inst, errors); + case 211: case 212: case 213: case 214: - case 215: - case 216: - case 217: - return aarch64_ext_sve_quad_index (self, info, code, inst, errors); - case 219: - return aarch64_ext_sve_index (self, info, code, inst, errors); + return aarch64_ext_sme_za_vrs2 (self, info, code, inst, errors); case 220: + case 221: case 222: - case 239: - return aarch64_ext_sve_reglist (self, info, code, inst, errors); case 223: case 224: + case 225: case 226: - case 227: + return aarch64_ext_sve_quad_index (self, info, code, inst, errors); case 228: + return aarch64_ext_sve_index_imm (self, info, code, inst, errors); case 229: - case 238: - return aarch64_ext_sve_aligned_reglist (self, info, code, inst, errors); + return aarch64_ext_sve_index (self, info, code, inst, errors); case 230: - case 231: - return aarch64_ext_sve_strided_reglist (self, info, code, inst, errors); + case 232: + case 249: + return aarch64_ext_sve_reglist (self, info, code, inst, errors); + case 233: case 234: case 236: - case 247: - return aarch64_ext_sme_za_hv_tiles (self, info, code, inst, errors); - case 235: case 237: - return aarch64_ext_sme_za_hv_tiles_range (self, info, code, inst, errors); + case 238: + case 239: + case 248: + return aarch64_ext_sve_aligned_reglist (self, info, code, inst, errors); + case 240: + case 241: + return aarch64_ext_sve_strided_reglist (self, info, code, inst, errors); case 244: + case 246: + case 257: + return aarch64_ext_sme_za_hv_tiles (self, info, code, inst, errors); case 245: + case 247: + return aarch64_ext_sme_za_hv_tiles_range (self, info, code, inst, errors); + case 254: + case 255: + case 270: + case 271: + case 272: + case 273: + case 274: + case 275: + case 276: + case 277: + case 278: + case 279: + case 280: + case 281: + case 282: + return aarch64_ext_simple_index (self, info, code, inst, errors); + case 258: + case 259: case 260: case 261: case 262: case 263: case 264: - case 265: - case 266: - case 267: - case 268: - case 269: - case 270: - case 271: - case 272: - return aarch64_ext_simple_index (self, info, code, inst, errors); - case 248: - case 249: - case 250: - case 251: - case 252: - case 253: - case 254: return aarch64_ext_sme_za_array (self, info, code, inst, errors); - case 255: + case 265: return aarch64_ext_sme_addr_ri_u4xvl (self, info, code, inst, errors); - case 256: + case 266: return aarch64_ext_sme_sm_za (self, info, code, inst, errors); - case 257: + case 267: return aarch64_ext_sme_pred_reg_with_index (self, info, code, inst, errors); - case 258: + case 268: return aarch64_ext_plain_shrimm (self, info, code, inst, errors); - case 280: - case 281: - case 282: + case 290: + case 291: + case 292: return aarch64_ext_x0_to_x30 (self, info, code, inst, errors); + case 295: + case 296: + case 297: + return aarch64_ext_sve_reglist_zt (self, info, code, inst, errors); default: assert (0); abort (); } } diff --git a/opcodes/aarch64-opc-2.c b/opcodes/aarch64-opc-2.c index 89487da..30caeea 100644 --- a/opcodes/aarch64-opc-2.c +++ b/opcodes/aarch64-opc-2.c @@ -231,6 +231,14 @@ const struct aarch64_operand aarch64_operands[] = {AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vd}, "a SIMD register"}, {AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vm}, "a SIMD register"}, {AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vn}, "a SIMD register"}, + {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsb_1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_off3}, "ZA0 tile"}, + {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsh_1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn_1,FLD_off2}, "1 bit ZA tile"}, + {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrss_1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn_2,FLD_ol}, "2 ZA tile"}, + {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsd_1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn_3}, "3 ZA tile"}, + {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsb_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_off2}, "ZA0 tile"}, + {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsh_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn,FLD_ol}, "1 bit ZA tile"}, + {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrss_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_off2}, "2 bit ZA tile"}, + {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsd_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn_3}, "3 bit ZA tile"}, {AARCH64_OPND_CLASS_SVE_REG, "SVE_Za_5", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Za_5}, "an SVE vector register"}, {AARCH64_OPND_CLASS_SVE_REG, "SVE_Za_16", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Za_16}, "an SVE vector register"}, {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zd}, "an SVE vector register"}, @@ -241,8 +249,10 @@ const struct aarch64_operand aarch64_operands[] = {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm3_19_INDEX", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm2_19, FLD_SVE_imm3}, "an indexed SVE vector register"}, {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm3_22_INDEX", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_i3h, FLD_SVE_Zm_16}, "an indexed SVE vector register"}, {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm4_11_INDEX", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_i2h, FLD_SVE_i3l, FLD_SVE_imm4}, "an indexed SVE vector register"}, + {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm_imm4", 5 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zm_5, FLD_SVE_imm4}, "an 4bit indexed SVE vector register"}, {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm4_INDEX", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zm_16}, "an indexed SVE vector register"}, {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an SVE vector register"}, + {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zn_5_INDEX", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn, FLD_SVE_i2h, FLD_SVE_tsz}, "a 5 bit idexed SVE vector register"}, {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zn_INDEX", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an indexed SVE vector register"}, {AARCH64_OPND_CLASS_SVE_REGLIST, "SVE_ZnxN", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "a list of SVE vector registers"}, {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zt", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "an SVE vector register"}, @@ -309,6 +319,9 @@ const struct aarch64_operand aarch64_operands[] = {AARCH64_OPND_CLASS_INT_REG, "MOPS_WB_Rd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an integer register with writeback"}, {AARCH64_OPND_CLASS_IMMEDIATE, "CSSC_SIMM8", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CSSC_imm8}, "an 8-bit signed immediate"}, {AARCH64_OPND_CLASS_IMMEDIATE, "CSSC_UIMM8", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CSSC_imm8}, "an 8-bit unsigned immediate"}, + {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zt2", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "a list of 2 SVE vector registers"}, + {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zt3", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "a list of 3 SVE vector registers"}, + {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zt4", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "a list of 4 SVE vector registers"}, {AARCH64_OPND_CLASS_NIL, "", 0, {0}, "DUMMY"}, }; -- cgit v1.1