From 9964798390bb433b75ae2d24687dc2050d18fe64 Mon Sep 17 00:00:00 2001 From: Brendan Punsky Date: Sat, 29 Aug 2026 00:42:57 -0400 Subject: [PATCH] rexcode/arm32: the fixed-point VCVT matrix, and three fields read as themselves The VFP fixed-point conversions were a handful of forms whose comments named the 32-bit fixed-point variants but whose encodings all had `sx` clear, so they were the 16-bit ones; two of them were duplicates distinguished only by a looser mask. None of them decoded the fraction width at all, because the operand slot had no encoding, so every one of them printed `#0` -- and a `#0` fraction is not what any of these words mean. The block is now the full matrix the architecture defines: three floating-point widths by two fixed-point widths by four directions, twenty-four forms. The fraction is the fixed-point width less the imm4:i field, so the widest fraction is what a zero field encodes. LSR and ASR reach a shift of 32 through a zero field -- a shift of zero would be a MOV, so the encoding spends that value on the one amount five bits cannot otherwise name. Both the standalone mnemonics and the shifted operand of a data-processing instruction printed `#0`, which is not the same instruction; PKHTB dropped its `asr #32` entirely, since a zero amount prints as no shift at all. USAT and USAT16 saturate to an unsigned width of zero to 31 and store it as it stands, unlike SSAT and SSAT16, which store one less than a signed width of one to 32. They had been sharing the signed encoding and so read one too high. The AES and SHA forms carry a bare element size -- `aese.8`, `sha1c.32` -- and had no data type at all. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018UmHLRF11EoWwNWCJ7JGaA --- core/rexcode/isa/arm32/decoder.odin | 21 +- core/rexcode/isa/arm32/encoder.odin | 8 + core/rexcode/isa/arm32/encoding_types.odin | 8 +- .../isa/arm32/tablegen/encoding_table.odin | 86 +- .../tablegen/generated/decode_tables.odin | 1638 +++++++++-------- .../tablegen/generated/encode_tables.odin | 696 +++---- .../isa/arm32/tables/arm32.bucket_list.bin | Bin 10670 -> 10726 bytes .../isa/arm32/tables/arm32.encode_forms.bin | Bin 37927 -> 38249 bytes .../isa/arm32/tables/arm32.encode_runs.bin | Bin 4688 -> 4688 bytes .../isa/arm32/tables/arm32.entries.bin | Bin 37927 -> 38249 bytes .../isa/arm32/tables/arm32.form_idx.bin | Bin 3298 -> 3326 bytes .../isa/arm32/tables/arm32.idx_a32.bin | Bin 1024 -> 1024 bytes .../isa/arm32/tables/arm32.idx_t16.bin | Bin 256 -> 256 bytes .../isa/arm32/tables/arm32.idx_t32.bin | Bin 512 -> 512 bytes .../isa/arm32/tables/arm32.idx_t32_sub.bin | Bin 16384 -> 16384 bytes core/rexcode/isa/arm32/tests/smoke.odin | 15 +- 16 files changed, 1274 insertions(+), 1198 deletions(-) diff --git a/core/rexcode/isa/arm32/decoder.odin b/core/rexcode/isa/arm32/decoder.odin index 594021caf..4ef390294 100644 --- a/core/rexcode/isa/arm32/decoder.odin +++ b/core/rexcode/isa/arm32/decoder.odin @@ -269,6 +269,11 @@ unpack_operand :: proc(word: u32, enc: Operand_Encoding, ot: Operand_Type) -> Op amt := u8((word >> 7) & 0x1F) if st == .ROR && amt == 0 { return op_reg_shifted(reg, .RRX, 0) } if st == .LSL && amt == 0 { return op_reg(reg) } + // A shift of zero is not a shift, so the field spends that + // spare value on 32 instead -- the one amount five bits cannot + // otherwise reach. LSL has no use for it and ROR spends it on + // RRX, so only these two. + if (st == .LSR || st == .ASR) && amt == 0 { return op_reg_shifted(reg, st, 32) } return op_reg_shifted(reg, st, amt) } return op_reg(reg) @@ -311,6 +316,11 @@ unpack_operand :: proc(word: u32, enc: Operand_Encoding, ot: Operand_Type) -> Op // ---- A32 immediates ---- case .A32_IMM12: return op_imm(i64(word & 0xFFF)) case .A32_IMM_SHIFT: return op_imm(i64((word >> 7) & 0x1F)) + case .A32_IMM_SHIFT_32: + // The LSR and ASR mnemonics reach 32 the same way a shifted operand + // does: a field of zero, since a shift of zero would be a MOV. + amt := (word >> 7) & 0x1F + return op_imm(i64(amt == 0 ? 32 : amt)) case .A32_SHIFT_TYPE: return op_imm(i64((word >> 5) & 0x3)) case .A32_IMM24: // Ambiguous: A32_IMM24 is used both for branch displacements (B/BL, @@ -537,9 +547,18 @@ unpack_operand :: proc(word: u32, enc: Operand_Encoding, ot: Operand_Type) -> Op return op_imm(i64((word >> 18) & 0xF)) // ---- Saturate / bit field ---- + case .VFP_FBITS: + // The fixed-point width is 16 or 32 by the sx bit, and the fraction + // is that less imm4:i -- so the widest fraction encodes as zero. + width: u32 = ((word >> 7) & 1) != 0 ? 32 : 16 + return op_imm(i64(width - (((word & 0xF) << 1) | ((word >> 5) & 1)))) case .SAT_IMM5, .SAT_IMM5_T32: - // The field holds one less than the saturate position it names. + // SSAT and SSAT16 saturate to a signed width of one to 32, and the + // field holds one less than that. USAT and USAT16 saturate to an + // unsigned width of zero to 31, which the field holds as it stands. return op_imm(i64(((word >> 16) & 0x1F) + 1)) + case .SAT_IMM5_U, .SAT_IMM5_U_T32: + return op_imm(i64((word >> 16) & 0x1F)) case .BFX_WIDTH: // One less than the width. return op_imm(i64(((word >> 16) & 0x1F) + 1)) diff --git a/core/rexcode/isa/arm32/encoder.odin b/core/rexcode/isa/arm32/encoder.odin index 036d97567..7d4805bb2 100644 --- a/core/rexcode/isa/arm32/encoder.odin +++ b/core/rexcode/isa/arm32/encoder.odin @@ -426,6 +426,7 @@ pack_operand_inline :: #force_inline proc( // ---- A32 immediate field placements ---- case .A32_IMM12: return u32(op.immediate) & 0xFFF case .A32_IMM_SHIFT: return (u32(op.immediate) & 0x1F) << 7 + case .A32_IMM_SHIFT_32: return (u32(op.immediate) & 0x1F) << 7 // 32 wraps to 0, which is what encodes it case .A32_SHIFT_TYPE: return (u32(op.immediate) & 0x3) << 5 case .A32_RS_SHIFT: return (u32(reg_hw(op.reg)) & 0xF) << 8 case .A32_IMM24: @@ -660,8 +661,15 @@ pack_operand_inline :: #force_inline proc( case .IT_MASK: return u32(op.immediate) & 0xFF case .CPS_IFLAGS: return u32(op.immediate) & 0x1FF case .HINT_FIELD: return u32(op.immediate) & 0xFF + case .VFP_FBITS: + // sx is a fixed bit of the form, so the width comes from its pattern. + width: u32 = ((form.bits >> 7) & 1) != 0 ? 32 : 16 + imm := width - (u32(op.immediate) & 0x3F) + return ((imm >> 1) & 0xF) | (imm & 1) << 5 case .SAT_IMM5, .SAT_IMM5_T32, .BFX_WIDTH: return ((u32(op.immediate) - 1) & 0x1F) << 16 + case .SAT_IMM5_U, .SAT_IMM5_U_T32: + return (u32(op.immediate) & 0x1F) << 16 case .BFI_MSB: // msb = lsb + width - 1; the lsb rides in whichever slot carries it. lsb: u32 = 0 diff --git a/core/rexcode/isa/arm32/encoding_types.odin b/core/rexcode/isa/arm32/encoding_types.odin index 4d423bc8d..4d7333849 100644 --- a/core/rexcode/isa/arm32/encoding_types.odin +++ b/core/rexcode/isa/arm32/encoding_types.odin @@ -282,6 +282,7 @@ Operand_Encoding :: enum u8 { // ---- Immediate field placements (A32) ---- A32_IMM12, // bits 11-0 (LDR/STR offset) A32_IMM_SHIFT, // bits 11-7 (data-proc shift_imm) + A32_IMM_SHIFT_32, // same field, but a zero means 32 (LSR/ASR) A32_SHIFT_TYPE, // bits 6-5 A32_RS_SHIFT, // bits 11-8 (RSR uses Rs register) A32_IMM24, // bits 23-0 (B/BL/SVC) @@ -410,8 +411,11 @@ Operand_Encoding :: enum u8 { HINT_FIELD, // hint imm // ---- Saturate ---- - SAT_IMM5, // bits 20-16: SSAT/USAT saturate-to width - SAT_IMM5_T32, // Thumb-2 saturate amount + VFP_FBITS, // VCVT fixed-point fraction bits: width - (imm4:i) + SAT_IMM5, // bits 20-16: SSAT/SSAT16 saturate-to width, less one + SAT_IMM5_T32, // Thumb-2 signed saturate amount, less one + SAT_IMM5_U, // bits 20-16: USAT/USAT16 width, which is not biased + SAT_IMM5_U_T32, // Thumb-2 unsigned saturate amount // ---- BFC/BFI/SBFX/UBFX ---- // SBFX/UBFX hold the width less one, where BFI/BFC hold the top bit's diff --git a/core/rexcode/isa/arm32/tablegen/encoding_table.odin b/core/rexcode/isa/arm32/tablegen/encoding_table.odin index 5266b6b11..347e0116b 100644 --- a/core/rexcode/isa/arm32/tablegen/encoding_table.odin +++ b/core/rexcode/isa/arm32/tablegen/encoding_table.odin @@ -614,8 +614,8 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ {.SSAT, {.GPR, .IMM4_SAT, .GPR_SHIFTED, .NONE}, {.RD_T32, .SAT_IMM5_T32, .RN_T32, .NONE}, 0xF3000000, 0xFFD08020, .V6T2, .T32, {thumb32=true, cond_in_28=false}, {}}, }, .USAT = { - {.USAT, {.GPR, .IMM4_SAT, .GPR_SHIFTED, .NONE}, {.RD, .SAT_IMM5, .RM_A32, .NONE}, 0x06E00010, 0x0FE00030, .V6, .A32, {}, {}}, - {.USAT, {.GPR, .IMM4_SAT, .GPR_SHIFTED, .NONE}, {.RD_T32, .SAT_IMM5_T32, .RN_T32, .NONE}, 0xF3800000, 0xFFD08020, .V6T2, .T32, {thumb32=true, cond_in_28=false}, {}}, + {.USAT, {.GPR, .IMM4_SAT, .GPR_SHIFTED, .NONE}, {.RD, .SAT_IMM5_U, .RM_A32, .NONE}, 0x06E00010, 0x0FE00030, .V6, .A32, {}, {}}, + {.USAT, {.GPR, .IMM4_SAT, .GPR_SHIFTED, .NONE}, {.RD_T32, .SAT_IMM5_U_T32, .RN_T32, .NONE}, 0xF3800000, 0xFFD08020, .V6T2, .T32, {thumb32=true, cond_in_28=false}, {}}, }, .SSAT16 = { {.SSAT16, {.GPR, .IMM4_SAT, .GPR, .NONE}, {.RD, .SAT_IMM5, .RM_A32, .NONE}, 0x06A00F30, 0x0FF00FF0, .V6, .A32, {}, {}}, @@ -623,8 +623,8 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ {.SSAT16, {.GPR, .IMM4_SAT, .GPR, .NONE}, {.RD_T32, .SAT_IMM5_T32, .RN_T32, .NONE}, 0xF3200000, 0xFFF0F0F0, .V6T2, .T32, {thumb32=true, cond_in_28=false}, {}}, }, .USAT16 = { - {.USAT16, {.GPR, .IMM4_SAT, .GPR, .NONE}, {.RD, .SAT_IMM5, .RM_A32, .NONE}, 0x06E00F30, 0x0FF00FF0, .V6, .A32, {}, {}}, - {.USAT16, {.GPR, .IMM4_SAT, .GPR, .NONE}, {.RD_T32, .SAT_IMM5_T32, .RN_T32, .NONE}, 0xF3A00000, 0xFFF0F0F0, .V6T2, .T32, {thumb32=true, cond_in_28=false}, {}}, + {.USAT16, {.GPR, .IMM4_SAT, .GPR, .NONE}, {.RD, .SAT_IMM5_U, .RM_A32, .NONE}, 0x06E00F30, 0x0FF00FF0, .V6, .A32, {}, {}}, + {.USAT16, {.GPR, .IMM4_SAT, .GPR, .NONE}, {.RD_T32, .SAT_IMM5_U_T32, .RN_T32, .NONE}, 0xF3A00000, 0xFFF0F0F0, .V6T2, .T32, {thumb32=true, cond_in_28=false}, {}}, }, // ARMv6 USAD8 / USADA8 @@ -1547,24 +1547,34 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ // VCVT.BF16.F32 D, Q // vcvt.bf16.f32 d0, q1 = 0xF3B6_0642 -> base 0xF3B60600 {.VCVT, {.DPR, .QPR, .NONE, .NONE}, {.VD_D, .VM_Q, .NONE, .NONE}, 0xF3B60600, 0xFFBF0FD0, .BF16, .A32, {cond_in_28=false}, {.F16, .F32}}, - // VCVT.S32.F32 Sd, Sd, #fbits -- to signed 32-bit fixed-point - {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .NONE, .NONE}, 0x0EBE0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16, .F32}}, - // VCVT.U32.F32 Sd, Sd, #fbits - {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .NONE, .NONE}, 0x0EBF0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U16, .F32}}, - // VCVT.F32.S32 Sd, Sd, #fbits -- from signed 32-bit fixed - {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .NONE, .NONE}, 0x0EBA0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32, .S16}}, - // VCVT.F32.U32 Sd, Sd, #fbits - {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .NONE, .NONE}, 0x0EBB0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32, .U16}}, - // VCVT.S16.F32 Sd, Sd, #fbits (sx=0 selects 16-bit fixed-point) - {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .NONE, .NONE}, 0x0EBE0A40, 0x0FBF0FC0, .VFPV3, .A32, {}, {.S16, .F32}}, - // VCVT.F32.S16 Sd, Sd, #fbits - {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .NONE, .NONE}, 0x0EBA0A40, 0x0FBF0FC0, .VFPV3, .A32, {}, {.F32, .S16}}, - // F64 variants (sz=1): change cp to 1011 (bit 8 = 1) - {.VCVT, {.DPR, .DPR, .IMM, .NONE}, {.VD_D, .VM_D, .NONE, .NONE}, 0x0EBE0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16, .F64}}, - {.VCVT, {.DPR, .DPR, .IMM, .NONE}, {.VD_D, .VM_D, .NONE, .NONE}, 0x0EBA0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64, .S16}}, - // F16 variants (cp=1001, FEAT_FP16) - {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .NONE, .NONE}, 0x0EBE0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.S16, .F16}}, - {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .NONE, .NONE}, 0x0EBA0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16, .S16}}, + // VCVT between floating point and fixed point. The `sx` bit picks the + // fixed-point width -- clear for 16-bit, set for 32-bit -- and the + // number of fraction bits is that width less the imm4:i field, so a + // field of zero is the widest fraction rather than none at all. + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBA0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16, .S16}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBB0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16, .U16}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBE0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.S16, .F16}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBF0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.U16, .F16}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBA09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16, .S32}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBB09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16, .U32}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBE09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.S32, .F16}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBF09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.U32, .F16}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBA0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32, .S16}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBB0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32, .U16}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBE0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16, .F32}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBF0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U16, .F32}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBA0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32, .S32}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBB0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32, .U32}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBE0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S32, .F32}}, + {.VCVT, {.SPR, .SPR, .IMM, .NONE}, {.VD_S, .VM_S, .VFP_FBITS, .NONE}, 0x0EBF0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U32, .F32}}, + {.VCVT, {.DPR, .DPR, .IMM, .NONE}, {.VD_D, .VM_D, .VFP_FBITS, .NONE}, 0x0EBA0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64, .S16}}, + {.VCVT, {.DPR, .DPR, .IMM, .NONE}, {.VD_D, .VM_D, .VFP_FBITS, .NONE}, 0x0EBB0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64, .U16}}, + {.VCVT, {.DPR, .DPR, .IMM, .NONE}, {.VD_D, .VM_D, .VFP_FBITS, .NONE}, 0x0EBE0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16, .F64}}, + {.VCVT, {.DPR, .DPR, .IMM, .NONE}, {.VD_D, .VM_D, .VFP_FBITS, .NONE}, 0x0EBF0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U16, .F64}}, + {.VCVT, {.DPR, .DPR, .IMM, .NONE}, {.VD_D, .VM_D, .VFP_FBITS, .NONE}, 0x0EBA0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64, .S32}}, + {.VCVT, {.DPR, .DPR, .IMM, .NONE}, {.VD_D, .VM_D, .VFP_FBITS, .NONE}, 0x0EBB0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64, .U32}}, + {.VCVT, {.DPR, .DPR, .IMM, .NONE}, {.VD_D, .VM_D, .VFP_FBITS, .NONE}, 0x0EBE0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S32, .F64}}, + {.VCVT, {.DPR, .DPR, .IMM, .NONE}, {.VD_D, .VM_D, .VFP_FBITS, .NONE}, 0x0EBF0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U32, .F64}}, }, .VCVTB = { // VCVTB.F32.F16 / .F16.F32 @@ -2610,21 +2620,21 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ // NEON crypto (ARMv8 FEAT_AES / FEAT_SHA1 / FEAT_SHA256) // AESE/AESD/AESMC/AESIMC: 1111 0011 1011 size 00 Vd 0011 op M 0 Vm (op=0 AESE, 1 AESD; bit 7 selects MC) - .AESE = { {.AESE, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3B00300, 0xFFB30FD0, .CRYPTO, .A32, {cond_in_28=false}, {}} }, - .AESD = { {.AESD, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3B00340, 0xFFB30FD0, .CRYPTO, .A32, {cond_in_28=false}, {}} }, - .AESMC = { {.AESMC, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3B00380, 0xFFB30FD0, .CRYPTO, .A32, {cond_in_28=false}, {}} }, - .AESIMC = { {.AESIMC, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3B003C0, 0xFFB30FD0, .CRYPTO, .A32, {cond_in_28=false}, {}} }, + .AESE = { {.AESE, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3B00300, 0xFFB30FD0, .CRYPTO, .A32, {cond_in_28=false}, {.SZ8, .NONE}} }, + .AESD = { {.AESD, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3B00340, 0xFFB30FD0, .CRYPTO, .A32, {cond_in_28=false}, {.SZ8, .NONE}} }, + .AESMC = { {.AESMC, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3B00380, 0xFFB30FD0, .CRYPTO, .A32, {cond_in_28=false}, {.SZ8, .NONE}} }, + .AESIMC = { {.AESIMC, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3B003C0, 0xFFB30FD0, .CRYPTO, .A32, {cond_in_28=false}, {.SZ8, .NONE}} }, // SHA1 family - .SHA1H = { {.SHA1H, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3B902C0, 0xFFBF0FD0, .CRYPTO, .A32, {cond_in_28=false}, {}} }, - .SHA1SU1 = { {.SHA1SU1, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3BA0380, 0xFFBF0FD0, .CRYPTO, .A32, {cond_in_28=false}, {}} }, - .SHA256SU0 = { {.SHA256SU0, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3BA03C0, 0xFFBF0FD0, .CRYPTO, .A32, {cond_in_28=false}, {}} }, - .SHA1C = { {.SHA1C, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF2000C40, 0xFFB00F50, .CRYPTO, .A32, {cond_in_28=false}, {}} }, - .SHA1P = { {.SHA1P, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF2100C40, 0xFFB00F50, .CRYPTO, .A32, {cond_in_28=false}, {}} }, - .SHA1M = { {.SHA1M, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF2200C40, 0xFFB00F50, .CRYPTO, .A32, {cond_in_28=false}, {}} }, - .SHA1SU0 = { {.SHA1SU0, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF2300C40, 0xFFB00F50, .CRYPTO, .A32, {cond_in_28=false}, {}} }, - .SHA256H = { {.SHA256H, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF3000C40, 0xFFB00F50, .CRYPTO, .A32, {cond_in_28=false}, {}} }, - .SHA256H2 = { {.SHA256H2, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF3100C40, 0xFFB00F50, .CRYPTO, .A32, {cond_in_28=false}, {}} }, - .SHA256SU1 = { {.SHA256SU1, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF3200C40, 0xFFB00F50, .CRYPTO, .A32, {cond_in_28=false}, {}} }, + .SHA1H = { {.SHA1H, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3B902C0, 0xFFBF0FD0, .CRYPTO, .A32, {cond_in_28=false}, {.SZ32, .NONE}} }, + .SHA1SU1 = { {.SHA1SU1, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3BA0380, 0xFFBF0FD0, .CRYPTO, .A32, {cond_in_28=false}, {.SZ32, .NONE}} }, + .SHA256SU0 = { {.SHA256SU0, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3BA03C0, 0xFFBF0FD0, .CRYPTO, .A32, {cond_in_28=false}, {.SZ32, .NONE}} }, + .SHA1C = { {.SHA1C, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF2000C40, 0xFFB00F50, .CRYPTO, .A32, {cond_in_28=false}, {.SZ32, .NONE}} }, + .SHA1P = { {.SHA1P, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF2100C40, 0xFFB00F50, .CRYPTO, .A32, {cond_in_28=false}, {.SZ32, .NONE}} }, + .SHA1M = { {.SHA1M, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF2200C40, 0xFFB00F50, .CRYPTO, .A32, {cond_in_28=false}, {.SZ32, .NONE}} }, + .SHA1SU0 = { {.SHA1SU0, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF2300C40, 0xFFB00F50, .CRYPTO, .A32, {cond_in_28=false}, {.SZ32, .NONE}} }, + .SHA256H = { {.SHA256H, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF3000C40, 0xFFB00F50, .CRYPTO, .A32, {cond_in_28=false}, {.SZ32, .NONE}} }, + .SHA256H2 = { {.SHA256H2, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF3100C40, 0xFFB00F50, .CRYPTO, .A32, {cond_in_28=false}, {.SZ32, .NONE}} }, + .SHA256SU1 = { {.SHA256SU1, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF3200C40, 0xFFB00F50, .CRYPTO, .A32, {cond_in_28=false}, {.SZ32, .NONE}} }, // ========================================================================= // ยง11 -- T16 Thumb-1 + T32 Thumb-2 (Thumb-only mnemonics) @@ -2660,7 +2670,7 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ {.LSL, {.GPR, .GPR, .GPR, .NONE}, {.RD_T32, .RN_T32, .RM_T32, .NONE}, 0xFA00F000, 0xFFF0F0F0, .V6T2, .T32, {thumb32=true, cond_in_28=false}, {}}, }, .LSR = { - {.LSR, {.GPR, .GPR, .IMM5, .NONE}, {.RD, .RM_A32, .A32_IMM_SHIFT, .NONE}, 0x01A00020, 0x0FFF0070, .BASE, .A32, {}, {}}, + {.LSR, {.GPR, .GPR, .IMM5, .NONE}, {.RD, .RM_A32, .A32_IMM_SHIFT_32, .NONE}, 0x01A00020, 0x0FFF0070, .BASE, .A32, {}, {}}, {.LSR, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RM_A32, .RS_A32, .NONE}, 0x01A00030, 0x0FFF00F0, .BASE, .A32, {}, {}}, // T16 Format 1: LSR imm {.LSR, {.GPR_LOW, .GPR_LOW, .IMM5, .NONE}, {.RD_T16_LO, .RM_T16_LO, .NONE, .NONE}, 0x00000800, 0x0000F800, .THUMB, .T32, {cond_in_28=false}, {}}, @@ -2672,7 +2682,7 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ {.LSR, {.GPR, .GPR, .GPR, .NONE}, {.RD_T32, .RN_T32, .RM_T32, .NONE}, 0xFA20F000, 0xFFF0F0F0, .V6T2, .T32, {thumb32=true, cond_in_28=false}, {}}, }, .ASR = { - {.ASR, {.GPR, .GPR, .IMM5, .NONE}, {.RD, .RM_A32, .A32_IMM_SHIFT, .NONE}, 0x01A00040, 0x0FFF0070, .BASE, .A32, {}, {}}, + {.ASR, {.GPR, .GPR, .IMM5, .NONE}, {.RD, .RM_A32, .A32_IMM_SHIFT_32, .NONE}, 0x01A00040, 0x0FFF0070, .BASE, .A32, {}, {}}, {.ASR, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RM_A32, .RS_A32, .NONE}, 0x01A00050, 0x0FFF00F0, .BASE, .A32, {}, {}}, // T16 Format 1: ASR imm {.ASR, {.GPR_LOW, .GPR_LOW, .IMM5, .NONE}, {.RD_T16_LO, .RM_T16_LO, .NONE, .NONE}, 0x00001000, 0x0000F800, .THUMB, .T32, {cond_in_28=false}, {}}, diff --git a/core/rexcode/isa/arm32/tablegen/generated/decode_tables.odin b/core/rexcode/isa/arm32/tablegen/generated/decode_tables.odin index 986c3ebe8..9d4c275f7 100644 --- a/core/rexcode/isa/arm32/tablegen/generated/decode_tables.odin +++ b/core/rexcode/isa/arm32/tablegen/generated/decode_tables.odin @@ -8,7 +8,7 @@ package rexcode_arm32_generated import lib "../.." @(rodata) -DECODE_ENTRIES := [1649]lib.Decode_Entry{ +DECODE_ENTRIES := [1663]lib.Decode_Entry{ { .MUL, {.GPR,.GPR,.GPR,.NONE}, {.RN_A32,.RM_A32,.RS_A32,.NONE}, 0x00000090, 0x0FE000F0, .BASE, .A32, {}, {.NONE,.NONE} }, { .AND, {.GPR,.GPR,.GPR_RSR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000010, 0x0FE00090, .BASE, .A32, {}, {.NONE,.NONE} }, { .AND, {.GPR,.GPR,.GPR_SHIFTED,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000000, 0x0FE00010, .BASE, .A32, {}, {.NONE,.NONE} }, @@ -151,8 +151,8 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .STREXD, {.GPR,.GPR,.MEM,.NONE}, {.RD,.RT_A32,.RN_A32,.NONE}, 0x01A00F90, 0x0FF00FF0, .V6K, .A32, {}, {.NONE,.NONE} }, { .STLEXD, {.GPR,.GPR,.MEM,.NONE}, {.RD,.RT_A32,.RN_A32,.NONE}, 0x01A00E90, 0x0FF00FF0, .V8, .A32, {}, {.NONE,.NONE} }, { .LSL, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RM_A32,.A32_IMM_SHIFT,.NONE}, 0x01A00000, 0x0FFF0070, .BASE, .A32, {}, {.NONE,.NONE} }, - { .LSR, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RM_A32,.A32_IMM_SHIFT,.NONE}, 0x01A00020, 0x0FFF0070, .BASE, .A32, {}, {.NONE,.NONE} }, - { .ASR, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RM_A32,.A32_IMM_SHIFT,.NONE}, 0x01A00040, 0x0FFF0070, .BASE, .A32, {}, {.NONE,.NONE} }, + { .LSR, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RM_A32,.A32_IMM_SHIFT_32,.NONE}, 0x01A00020, 0x0FFF0070, .BASE, .A32, {}, {.NONE,.NONE} }, + { .ASR, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RM_A32,.A32_IMM_SHIFT_32,.NONE}, 0x01A00040, 0x0FFF0070, .BASE, .A32, {}, {.NONE,.NONE} }, { .ROR, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RM_A32,.A32_IMM_SHIFT,.NONE}, 0x01A00060, 0x0FFF0070, .BASE, .A32, {}, {.NONE,.NONE} }, { .MOV, {.GPR,.GPR_RSR,.NONE,.NONE}, {.RD,.RM_A32,.NONE,.NONE}, 0x01A00010, 0x0FEF0090, .BASE, .A32, {}, {.NONE,.NONE} }, { .MOV, {.GPR,.GPR_SHIFTED,.NONE,.NONE}, {.RD,.RM_A32,.NONE,.NONE}, 0x01A00000, 0x0FEF0010, .BASE, .A32, {}, {.NONE,.NONE} }, @@ -186,8 +186,8 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000840, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000D40, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000950, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000D50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000940, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, + { .VMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000D50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VFMA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000C50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VHADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000040, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VHSUB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000240, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, @@ -211,12 +211,12 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VRSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2000540, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VQSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2000450, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2000510, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, - { .SHA1C, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, - { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, + { .SHA1C, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000800, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, + { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000910, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMLA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VMLA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000900, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, + { .VMLA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VFMA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000C10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VHADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000000, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, { .VHSUB, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000200, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, @@ -244,8 +244,8 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2100350, 0xFFB11F51, .NEON, .A32, {}, {.S16,.NONE} }, { .VCLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2100340, 0xFFB11F51, .NEON, .A32, {}, {.S16,.NONE} }, { .VQRSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2100550, 0xFFB11F51, .NEON, .A32, {}, {.S16,.NONE} }, - { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100840, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100D40, 0xFFB00F50, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, + { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100840, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100950, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100940, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VHADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100040, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, @@ -262,11 +262,11 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VCGT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100340, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2100310, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2100300, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100640, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100F40, 0xFFB00F50, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, + { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100640, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100650, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2100510, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .SHA1P, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA1P, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100D00, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100800, 0xFFB00F10, .NEON, .A32, {}, {.I16,.NONE} }, { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100910, 0xFFB00F10, .NEON, .A32, {}, {.I16,.NONE} }, @@ -283,8 +283,8 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VCEQ, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100E00, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100310, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, { .VCGT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100300, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, - { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100600, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100F00, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, + { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100600, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, { .VMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100610, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, { .VPMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100A00, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, { .VPMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100A10, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, @@ -318,7 +318,7 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200F40, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VRSQRTS, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200F50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2200510, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, - { .SHA1M, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA1M, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200800, 0xFFB00F10, .NEON, .A32, {}, {.I32,.NONE} }, { .VSUB, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200D00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200910, 0xFFB00F10, .NEON, .A32, {}, {.I32,.NONE} }, @@ -354,7 +354,7 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2300F40, 0xFFB00F50, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, { .VSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2300440, 0xFFB00F50, .NEON, .A32, {}, {.S64,.NONE} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2300510, 0xFFB00F50, .NEON, .A32, {}, {.S64,.NONE} }, - { .SHA1SU0, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2300C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA1SU0, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2300C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2300800, 0xFFB00F10, .NEON, .A32, {}, {.I64,.NONE} }, { .VSUB, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2300D00, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, { .VQADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2300010, 0xFFB00F10, .NEON, .A32, {}, {.S64,.NONE} }, @@ -367,43 +367,43 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .SUB, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02500000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, { .RSB, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02600000, 0x0FE00000, .BASE, .A32, {}, {.NONE,.NONE} }, { .RSB, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02700000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800E50, 0xFEB80FF0, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800F50, 0xFEB80FF0, .NEON, .A32, {}, {.F32,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800E70, 0xFEB80FF0, .NEON, .A32, {}, {.I64,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800E50, 0xFEB80FF0, .NEON, .A32, {}, {.I8,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800850, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800F50, 0xFEB80FF0, .NEON, .A32, {}, {.F32,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800050, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VADDW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF2800100, 0xFFB11F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VSUBW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF2800300, 0xFFB11F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VMOVL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF2880A10, 0xFFB80FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800F10, 0xFEB80FB0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800E30, 0xFEB80FB0, .NEON, .A32, {}, {.I64,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800810, 0xFEB80FB0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D10, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800C10, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800610, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800E10, 0xFEB80FB0, .NEON, .A32, {}, {.I8,.NONE} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800010, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800410, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800210, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800E30, 0xFEB80FB0, .NEON, .A32, {}, {.I64,.NONE} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800A10, 0xFEB80FB0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800E10, 0xFEB80FB0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800210, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800610, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800F10, 0xFEB80FB0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D10, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800410, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800810, 0xFEB80FB0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800C10, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, { .VADDL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800000, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VSUBL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800200, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VABAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800500, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VABDL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800700, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, - { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800870, 0xFEB80FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800070, 0xFEB80FD0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800C00, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800870, 0xFEB80FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800E00, 0xFFB00F50, .NEON, .A32, {}, {.P8,.NONE} }, + { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800C00, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800800, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800A00, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800A30, 0xFEB80F90, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800030, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800430, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800830, 0xFEB80F90, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D30, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800230, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800630, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800C30, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D30, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800230, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800430, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800030, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800A30, 0xFEB80F90, .NEON, .A32, {}, {.I16,.NONE} }, { .VQSHRN, {.DPR,.QPR,.IMM,.NONE}, {.VD_D,.VM_Q,.NEON_SHIFT_IMM6,.NONE}, 0xF2800910, 0xFE800FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VQRSHRN, {.DPR,.QPR,.IMM,.NONE}, {.VD_D,.VM_Q,.NEON_SHIFT_IMM6,.NONE}, 0xF2800950, 0xFE800FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VSHRN, {.DPR,.QPR,.IMM,.NONE}, {.VD_D,.VM_Q,.NEON_SHIFT_IMM6,.NONE}, 0xF2800810, 0xFE800FD0, .NEON, .A32, {}, {.I16,.NONE} }, @@ -434,16 +434,16 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VMUL, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900840, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMLA, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900040, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMLS, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900440, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900C00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900A40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900800, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900C00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900240, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900800, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900A00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900640, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VQDMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900B40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900D00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VQDMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900900, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VQDMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900B40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900340, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VQDMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900900, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900B00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900740, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMULH, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR16,.NONE}, 0xF2900C40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, @@ -461,12 +461,12 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VMUL, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00840, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, { .VMLA, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00040, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, { .VMLS, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00440, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00C00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00A40, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, - { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00240, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, + { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00C00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00800, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, - { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00640, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, + { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00240, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00A00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, + { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00640, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00D00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00B40, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00900, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, @@ -485,14 +485,14 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .SBC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02D00000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, { .RSC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02E00000, 0x0FE00000, .BASE, .A32, {}, {.NONE,.NONE} }, { .RSC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02F00000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, - { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000E40, 0xFFB11F51, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000350, 0xFFB11F51, .NEON, .A32, {}, {.U8,.NONE} }, + { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000E40, 0xFFB11F51, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000340, 0xFFB11F51, .NEON, .A32, {}, {.U8,.NONE} }, { .VACLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000E50, 0xFFB11F51, .NEON, .A32, {}, {.F32,.NONE} }, { .VQRSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000550, 0xFFB11F51, .NEON, .A32, {}, {.U8,.NONE} }, { .VSUB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000840, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000D50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000950, 0xFFB00F50, .NEON, .A32, {}, {.P8,.NONE} }, + { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000D50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VMLS, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000940, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, { .VHADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000040, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, { .VHSUB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000240, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, @@ -516,7 +516,7 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VRSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000540, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, { .VQSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000450, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000510, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, - { .SHA256H, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA256H, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .VSUB, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000800, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000910, 0xFFB00F10, .NEON, .A32, {}, {.P8,.NONE} }, { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000D10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, @@ -558,7 +558,7 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3100310, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3100300, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3100510, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, - { .SHA256H2, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3100C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA256H2, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3100C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .VSUB, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3100800, 0xFFB00F10, .NEON, .A32, {}, {.I16,.NONE} }, { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3100D10, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, { .VMLS, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3100900, 0xFFB00F10, .NEON, .A32, {}, {.I16,.NONE} }, @@ -583,8 +583,8 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .DBG, {.IMM_HINT,.NONE,.NONE,.NONE}, {.HINT_FIELD,.NONE,.NONE,.NONE}, 0x0320F0F0, 0x0FFFFFF0, .V7, .A32, {}, {.NONE,.NONE} }, { .HINT, {.IMM_HINT,.NONE,.NONE,.NONE}, {.HINT_FIELD,.NONE,.NONE,.NONE}, 0x0320F000, 0x0FFFFF00, .V6K, .A32, {}, {.NONE,.NONE} }, { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3200350, 0xFFB11F51, .NEON, .A32, {}, {.U32,.NONE} }, - { .VCLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3200340, 0xFFB11F51, .NEON, .A32, {}, {.U32,.NONE} }, { .VCLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3200E40, 0xFFB11F51, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3200340, 0xFFB11F51, .NEON, .A32, {}, {.U32,.NONE} }, { .VACLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3200E50, 0xFFB11F51, .NEON, .A32, {}, {.F32,.NONE} }, { .VQRSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3200550, 0xFFB11F51, .NEON, .A32, {}, {.U32,.NONE} }, { .VSUB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3200840, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, @@ -602,7 +602,7 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VACGT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3200E50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VACLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3200E10, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3200510, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, - { .SHA256SU1, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3200C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA256SU1, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3200C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .VSUB, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3200800, 0xFFB00F10, .NEON, .A32, {}, {.I32,.NONE} }, { .VMLS, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3200900, 0xFFB00F10, .NEON, .A32, {}, {.I32,.NONE} }, { .VQRDMULH, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3200B00, 0xFFB00F10, .NEON, .A32, {}, {.S32,.NONE} }, @@ -654,8 +654,8 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VMLS, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_16,.NONE}, 0xF3900440, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF3900A40, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900C00, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, - { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900800, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF3900240, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, + { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900800, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF3900640, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900A00, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VQRDMLAH, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_16,.NONE}, 0xF3900E40, 0xFFB00F50, .V8, .A32, {}, {.S16,.NONE} }, @@ -675,144 +675,144 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VMLS, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00440, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00A40, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00C00, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, - { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00240, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00800, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, + { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00240, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00A00, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00640, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VQRDMLAH, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00E40, 0xFFB00F50, .V8, .A32, {}, {.S32,.NONE} }, { .VQRDMLSH, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00F40, 0xFFB00F50, .V8, .A32, {}, {.S32,.NONE} }, { .MOV, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03A00000, 0x0FEF0000, .BASE, .A32, {}, {.NONE,.NONE} }, + { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10300, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10340, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90300, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50300, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90740, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90300, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90700, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B50340, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90340, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90700, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10300, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90740, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50380, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B503C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90780, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10380, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90380, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B903C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B103C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B503C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90380, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10380, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B907C0, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90780, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCVT, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60600, 0xFFBF0FD0, .BF16, .A32, {}, {.F16,.F32} }, - { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60200, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20200, 0xFFBF0FD0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60200, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0200, 0xFFBF0FD0, .NEON, .A32, {}, {.I64,.NONE} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20280, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA02C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U64,.NONE} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60280, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0280, 0xFFBF0FD0, .NEON, .A32, {}, {.S64,.NONE} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B202C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U16,.NONE} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60280, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20280, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B602C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0280, 0xFFBF0FD0, .NEON, .A32, {}, {.S64,.NONE} }, { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0240, 0xFFBF0FD0, .NEON, .A32, {}, {.S64,.NONE} }, { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60240, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20240, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80200, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00200, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40200, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00280, 0xFFBF0FD0, .NEON, .A32, {}, {.U8,.NONE} }, - { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00200, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80200, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40200, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0400, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, - { .VRECPE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0440, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, { .VRECPE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0540, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB04C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, - { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0480, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, + { .VRECPE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0440, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, + { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB05C0, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB04C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, + { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0480, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, + { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3BA0300, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3B60300, 0xFFBF0FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3B20300, 0xFFBF0FD0, .NEON, .A32, {}, {.I8,.NONE} }, - { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3BA0300, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40400, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80400, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40440, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00440, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80440, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80400, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00400, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40440, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40400, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80480, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B804C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B004C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I8,.NONE} }, { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00480, 0xFFBF0FD0, .NEON, .A32, {}, {.I8,.NONE} }, { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40480, 0xFFBF0FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B404C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B804C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B004C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I8,.NONE} }, - { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00000, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40000, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, - { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80000, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00000, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, - { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20080, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BA0080, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80000, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B200C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B600C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, - { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA00C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60080, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA00C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B600C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BA0080, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20080, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20140, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0140, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B60140, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0140, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B601C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B201C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA01C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B601C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, - { .SHA1H, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B902C0, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, - { .SHA1SU1, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0380, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, - { .SHA256SU0, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA03C0, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA1H, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B902C0, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, + { .SHA1SU1, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0380, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, + { .SHA256SU0, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA03C0, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .VCEQ, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B10140, 0xFFBB0FD0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VCEQ, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B90540, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCEQ, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90500, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCEQ, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10100, 0xFFBB0FD0, .NEON, .A32, {}, {.I8,.NONE} }, - { .VCEQ, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B90540, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VCGE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10080, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCGE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B904C0, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VCGE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B100C0, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCGE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90480, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCGE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B904C0, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCGE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10080, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VCGE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B100C0, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VCGT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B10040, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCGT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10000, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCGT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90400, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B90440, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VCGT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B10040, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCLE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B905C0, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VCLE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10180, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90580, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCLE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10180, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VCLE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B905C0, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B101C0, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10200, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCLT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90600, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B10240, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VCLT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90600, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B90640, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40080, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VREV32, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B000C0, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00080, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VREV32, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B400C0, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40080, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00080, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20100, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60100, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, - { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20180, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60180, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20180, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VMVN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00580, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .VMVN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B005C0, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00240, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B002C0, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00600, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00680, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00640, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00680, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B006C0, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, { .VCNT, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00500, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VCNT, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00540, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VREV16, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00100, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VREV16, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00140, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VSWP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20000, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, + { .VREV16, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00100, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VSWP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20040, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, - { .AESE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00300, 0xFFB30FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, - { .AESD, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00340, 0xFFB30FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, - { .AESMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00380, 0xFFB30FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, - { .AESIMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B003C0, 0xFFB30FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, - { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_2,.VM_D,.NONE}, 0xF3B00900, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VSWP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20000, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, + { .AESE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00300, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, + { .AESD, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00340, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, + { .AESMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00380, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, + { .AESIMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B003C0, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_3,.VM_D,.NONE}, 0xF3B00A00, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_4,.VM_D,.NONE}, 0xF3B00B00, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_1,.VM_D,.NONE}, 0xF3B00800, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_1,.VM_D,.NONE}, 0xF3B00840, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_2,.VM_D,.NONE}, 0xF3B00940, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_2,.VM_D,.NONE}, 0xF3B00900, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_4,.VM_D,.NONE}, 0xF3B00B40, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_3,.VM_D,.NONE}, 0xF3B00A40, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_2,.VM_D,.NONE}, 0xF3B00940, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_1,.VM_D,.NONE}, 0xF3B00840, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VDUP, {.DPR,.DPR_ELEM,.NONE,.NONE}, {.VD_D,.NEON_VM_SCALAR_32,.NONE,.NONE}, 0xF3B00C00, 0xFFB00FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .VDUP, {.QPR,.DPR_ELEM,.NONE,.NONE}, {.VD_Q,.NEON_VM_SCALAR_32,.NONE,.NONE}, 0xF3B00C40, 0xFFB00FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .MOV, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03B00000, 0x0FFF0000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, @@ -820,30 +820,30 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .BIC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x03D00000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, { .MVN, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03E00000, 0x0FEF0000, .BASE, .A32, {}, {.NONE,.NONE} }, { .MVN, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03F00000, 0x0FFF0000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, - { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF4000A0F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF400020F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF400060F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF400020F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF4000A0F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_1,.RN_A32,.NONE,.NONE}, 0xF400070F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2X,.RN_A32,.NONE,.NONE}, 0xF400090F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF400030F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF400080F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2X,.RN_A32,.NONE,.NONE}, 0xF400090F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3X,.RN_A32,.NONE,.NONE}, 0xF400050F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF400040F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3X,.RN_A32,.NONE,.NONE}, 0xF400050F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4X,.RN_A32,.NONE,.NONE}, 0xF400010F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF400000F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .STR, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04000000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, { .LDR, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04100000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, - { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF420060F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_1,.RN_A32,.NONE,.NONE}, 0xF420070F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF4200A0F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF420020F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_1,.RN_A32,.NONE,.NONE}, 0xF420070F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF420060F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF4200A0F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF420080F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2X,.RN_A32,.NONE,.NONE}, 0xF420090F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF420030F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF420040F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2X,.RN_A32,.NONE,.NONE}, 0xF420090F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3X,.RN_A32,.NONE,.NONE}, 0xF420050F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF420000F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF420040F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4X,.RN_A32,.NONE,.NONE}, 0xF420010F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF420000F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .STRT, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04200000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, { .LDRT, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04300000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, { .STRB, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04400000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, @@ -945,10 +945,10 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .SXTAH, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x06B00070, 0x0FF00070, .V6, .A32, {}, {.NONE,.NONE} }, { .UXTB16, {.GPR,.GPR,.NONE,.NONE}, {.RD,.RM_A32,.NONE,.NONE}, 0x06CF0070, 0x0FFF0070, .V6, .A32, {}, {.NONE,.NONE} }, { .UXTAB16, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x06C00070, 0x0FF00070, .V6, .A32, {}, {.NONE,.NONE} }, - { .USAT16, {.GPR,.IMM4_SAT,.GPR,.NONE}, {.RD,.SAT_IMM5,.RM_A32,.NONE}, 0x06E00F30, 0x0FF00FF0, .V6, .A32, {}, {.NONE,.NONE} }, + { .USAT16, {.GPR,.IMM4_SAT,.GPR,.NONE}, {.RD,.SAT_IMM5_U,.RM_A32,.NONE}, 0x06E00F30, 0x0FF00FF0, .V6, .A32, {}, {.NONE,.NONE} }, { .UXTB, {.GPR,.GPR,.NONE,.NONE}, {.RD,.RM_A32,.NONE,.NONE}, 0x06EF0070, 0x0FFF0070, .V6, .A32, {}, {.NONE,.NONE} }, { .UXTAB, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x06E00070, 0x0FF00070, .V6, .A32, {}, {.NONE,.NONE} }, - { .USAT, {.GPR,.IMM4_SAT,.GPR_SHIFTED,.NONE}, {.RD,.SAT_IMM5,.RM_A32,.NONE}, 0x06E00010, 0x0FE00030, .V6, .A32, {}, {.NONE,.NONE} }, + { .USAT, {.GPR,.IMM4_SAT,.GPR_SHIFTED,.NONE}, {.RD,.SAT_IMM5_U,.RM_A32,.NONE}, 0x06E00010, 0x0FE00030, .V6, .A32, {}, {.NONE,.NONE} }, { .RBIT, {.GPR,.GPR,.NONE,.NONE}, {.RD,.RM_A32,.NONE,.NONE}, 0x06FF0F30, 0x0FFF0FF0, .V6T2, .A32, {}, {.NONE,.NONE} }, { .REVSH, {.GPR,.GPR,.NONE,.NONE}, {.RD,.RM_A32,.NONE,.NONE}, 0x06FF0FB0, 0x0FFF0FF0, .V6, .A32, {}, {.NONE,.NONE} }, { .UXTH, {.GPR,.GPR,.NONE,.NONE}, {.RD,.RM_A32,.NONE,.NONE}, 0x06FF0070, 0x0FFF0070, .V6, .A32, {}, {.NONE,.NONE} }, @@ -1023,8 +1023,8 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VMOV, {.DPR,.GPR,.GPR,.NONE}, {.VM_D,.RT_A32,.RT2_A32,.NONE}, 0x0C400B10, 0x0FF00FD0, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .MCRR2, {.COPROC_NUM,.IMM_COPROC_OP,.GPR,.GPR}, {.COPROC_NUM_FIELD,.COPROC_OPC_MCRR,.RT_A32,.RT2_A32}, 0xFC400000, 0xFFF00000, .V6, .A32, {}, {.NONE,.NONE} }, { .MCRR, {.COPROC_NUM,.IMM_COPROC_OP,.GPR,.GPR}, {.COPROC_NUM_FIELD,.COPROC_OPC_MCRR,.RT_A32,.RT2_A32}, 0x0C400000, 0x0FF00000, .V6, .A32, {}, {.NONE,.NONE} }, - { .VMOV, {.GPR,.GPR,.SPR,.SPR}, {.RT_A32,.RT2_A32,.VM_S,.NONE}, 0x0C500A10, 0x0FF00FD0, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VMOV, {.GPR,.GPR,.DPR,.NONE}, {.RT_A32,.RT2_A32,.VM_D,.NONE}, 0x0C500B10, 0x0FF00FD0, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VMOV, {.GPR,.GPR,.SPR,.SPR}, {.RT_A32,.RT2_A32,.VM_S,.NONE}, 0x0C500A10, 0x0FF00FD0, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .MRRC2, {.COPROC_NUM,.IMM_COPROC_OP,.GPR,.GPR}, {.COPROC_NUM_FIELD,.COPROC_OPC_MCRR,.RT_A32,.RT2_A32}, 0xFC500000, 0xFFF00000, .V6, .A32, {}, {.NONE,.NONE} }, { .MRRC, {.COPROC_NUM,.IMM_COPROC_OP,.GPR,.GPR}, {.COPROC_NUM_FIELD,.COPROC_OPC_MCRR,.RT_A32,.RT2_A32}, 0x0C500000, 0x0FF00000, .V6, .A32, {}, {.NONE,.NONE} }, { .VCADD, {.QPR,.QPR,.QPR,.IMM}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFC800840, 0xFE800F50, .FCMA, .A32, {}, {.F16,.NONE} }, @@ -1045,8 +1045,8 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VSTR, {.DPR,.MEM,.NONE,.NONE}, {.VD_D,.MEM_IMM8_OFFSET,.NONE,.NONE}, 0x0D000B00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VLDR, {.SPR,.MEM,.NONE,.NONE}, {.VD_S,.MEM_IMM8_OFFSET,.NONE,.NONE}, 0x0D100A00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VLDR, {.DPR,.MEM,.NONE,.NONE}, {.VD_D,.MEM_IMM8_OFFSET,.NONE,.NONE}, 0x0D100B00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, - { .VPUSH, {.DPR_LIST,.NONE,.NONE,.NONE}, {.VFP_D_LIST,.NONE,.NONE,.NONE}, 0x0D2D0B00, 0x0FFF0F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VPUSH, {.SPR_LIST,.NONE,.NONE,.NONE}, {.VFP_S_LIST,.NONE,.NONE,.NONE}, 0x0D2D0A00, 0x0FFF0F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VPUSH, {.DPR_LIST,.NONE,.NONE,.NONE}, {.VFP_D_LIST,.NONE,.NONE,.NONE}, 0x0D2D0B00, 0x0FFF0F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VMOV, {.SPR,.GPR,.NONE,.NONE}, {.VN_S,.RT_A32,.NONE,.NONE}, 0x0E000A10, 0x0FF00F7F, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VMOV, {.DPR_ELEM,.GPR,.NONE,.NONE}, {.VMOV_LANE_32,.RT_A32,.NONE,.NONE}, 0x0E000B10, 0x0FD00F7F, .VFPV2, .A32, {}, {.SZ32,.NONE} }, { .VMOV, {.DPR_ELEM,.GPR,.NONE,.NONE}, {.VMOV_LANE_16,.RT_A32,.NONE,.NONE}, 0x0E000B30, 0x0FD00F3F, .VFPV2, .A32, {}, {.SZ16,.NONE} }, @@ -1092,8 +1092,8 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VUSDOT, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_32,.NONE}, 0xFE800D40, 0xFFB00F50, .V8, .A32, {}, {.S8,.NONE} }, { .VMAXNM, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0xFE800A00, 0xFFB00B50, .V8, .A32, {}, {.F32,.NONE} }, { .VMAXNM, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xFE800B00, 0xFFB00B50, .V8, .A32, {}, {.F64,.NONE} }, - { .VMINNM, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0xFE800A40, 0xFFB00B50, .V8, .A32, {}, {.F32,.NONE} }, { .VMINNM, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xFE800B40, 0xFFB00B50, .V8, .A32, {}, {.F64,.NONE} }, + { .VMINNM, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0xFE800A40, 0xFFB00B50, .V8, .A32, {}, {.F32,.NONE} }, { .VUSDOT, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xFE800D00, 0xFFB00F10, .V8, .A32, {}, {.S8,.NONE} }, { .VDIV, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0E800900, 0x0FB00F50, .HALF_FP, .A32, {}, {.F16,.NONE} }, { .VDIV, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0E800A00, 0x0FB00B50, .VFPV2, .A32, {}, {.F32,.NONE} }, @@ -1117,20 +1117,20 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VCMPE, {.SPR,.IMM,.NONE,.NONE}, {.VD_S,.IMPL,.NONE,.NONE}, 0x0EB50AC0, 0x0FBF0FFF, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VCVTA, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBC0B40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F64} }, { .VCVTA, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBC0A40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F32} }, - { .VCVTN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBD0B40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F64} }, { .VCVTN, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBD0A40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F32} }, - { .VCVTP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBE0B40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F64} }, + { .VCVTN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBD0B40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F64} }, { .VCVTP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBE0A40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F32} }, - { .VCVTM, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBF0A40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F32} }, + { .VCVTP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBE0B40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F64} }, { .VCVTM, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBF0B40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F64} }, - { .VRINTA, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEB80A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, + { .VCVTM, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBF0A40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F32} }, { .VRINTA, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEB80B40, 0xFFBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, + { .VRINTA, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEB80A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, { .VRINTN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEB90B40, 0xFFBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VRINTN, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEB90A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, - { .VRINTP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBA0A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, { .VRINTP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBA0B40, 0xFFBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, - { .VRINTM, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBB0A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, + { .VRINTP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBA0A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, { .VRINTM, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBB0B40, 0xFFBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, + { .VRINTM, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBB0A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, { .VABS, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB00AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB00BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB10B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, @@ -1143,15 +1143,30 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VCMP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.NONE} }, { .VCMPE, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VCMPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB40BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.S16,.F16} }, - { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBA0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.S16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.S16} }, - { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBE0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F64} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBB0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.U16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBF0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U16,.F32} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBF0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U32,.F64} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBA0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.S32} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBF0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U16,.F64} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBB0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.U32} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBB0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.U16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U32,.F32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S32,.F32} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBA0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.S16} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBE0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F64} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBE0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S32,.F64} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.S16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.U32,.F16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.U16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U16,.F32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.S32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.U16,.F16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.U32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.U16} }, { .VCVT, {.DPR,.SPR,.NONE,.NONE}, {.VD_D,.VM_S,.NONE,.NONE}, 0x0EB80B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.U32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.S16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.S16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.S16,.F16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.S32,.F16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.S32} }, { .VCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBC0BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F64} }, { .VCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBD0BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F64} }, { .VCVT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB80AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.S32} }, @@ -1160,26 +1175,25 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EB70BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.F64} }, { .VCVT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBC0AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F32} }, { .VCVT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB80A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.U32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.U32} }, { .VCVT, {.DPR,.SPR,.NONE,.NONE}, {.VD_D,.VM_S,.NONE,.NONE}, 0x0EB80BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.S32} }, { .VCVTB, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB20A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.F16} }, { .VCVTB, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB30A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F16,.F32} }, { .VCVTT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB20AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.F16} }, { .VCVTT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB30AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F16,.F32} }, - { .VCVTR, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBD0B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F64} }, - { .VCVTR, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBC0A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F32} }, - { .VCVTR, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBC0B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F64} }, { .VCVTR, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBD0A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F32} }, - { .VMOV, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB00A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, + { .VCVTR, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBC0A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F32} }, + { .VCVTR, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBD0B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F64} }, + { .VCVTR, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBC0B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F64} }, { .VMOV, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB00B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, - { .VRINTR, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB60B40, 0x0FBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, + { .VMOV, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB00A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VRINTR, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB60A40, 0x0FBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, + { .VRINTR, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB60B40, 0x0FBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VRINTZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB60BC0, 0x0FBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VRINTZ, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB60AC0, 0x0FBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, - { .VRINTX, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB70B40, 0x0FBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VRINTX, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB70A40, 0x0FBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, + { .VRINTX, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB70B40, 0x0FBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VJCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EB90BC0, 0x0FBF0FD0, .V8, .A32, {}, {.NONE,.NONE} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0A40, 0x0FBF0FC0, .VFPV3, .A32, {}, {.S16,.F32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0A40, 0x0FBF0FC0, .VFPV3, .A32, {}, {.F32,.S16} }, { .VMOV, {.DPR,.IMM8,.NONE,.NONE}, {.VD_D,.VFP_IMM8,.NONE,.NONE}, 0x0EB00B00, 0x0FB00FF0, .VFPV3, .A32, {}, {.F64,.NONE} }, { .VMOV, {.SPR,.IMM8,.NONE,.NONE}, {.VD_S,.VFP_IMM8,.NONE,.NONE}, 0x0EB00A00, 0x0FB00FF0, .VFPV3, .A32, {}, {.F32,.NONE} }, { .VDUP, {.DPR,.GPR,.NONE,.NONE}, {.VD_D,.RT_A32,.NONE,.NONE}, 0x0EC00B10, 0x0FF00FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, @@ -1242,12 +1256,12 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VMOV, {.QPR_ELEM,.QPR_ELEM,.GPR,.GPR}, {.VD_Q,.VD_Q,.RT_T32,.RT2_T32}, 0xEC000F00, 0xFF900F11, .MVE_INT, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VLDRB, {.QPR,.MEM,.NONE,.NONE}, {.VD_Q,.MEM_IMM12_OFFSET,.NONE,.NONE}, 0xED901E00, 0xFFB01F00, .MVE_INT, .T32, {thumb32=true}, {.U8,.NONE} }, { .VSTRB, {.QPR,.MEM,.NONE,.NONE}, {.VD_Q,.MEM_IMM12_OFFSET,.NONE,.NONE}, 0xED801E00, 0xFFB01F00, .MVE_INT, .T32, {thumb32=true}, {.SZ8,.NONE} }, - { .VCX1, {.IMM_COPROC,.DPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_D,.CDE_IMM_FIELD,.NONE}, 0xEC300000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX1, {.IMM_COPROC,.SPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_S,.CDE_IMM_FIELD,.NONE}, 0xEC200000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, - { .VCX2, {.IMM_COPROC,.DPR,.DPR,.IMM}, {.CDE_COPROC_FIELD,.VD_D,.VM_D,.CDE_IMM_FIELD}, 0xEC700000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, + { .VCX1, {.IMM_COPROC,.DPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_D,.CDE_IMM_FIELD,.NONE}, 0xEC300000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX2, {.IMM_COPROC,.SPR,.SPR,.IMM}, {.CDE_COPROC_FIELD,.VD_S,.VM_S,.CDE_IMM_FIELD}, 0xEC600000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, - { .VCX3, {.IMM_COPROC,.SPR,.SPR,.SPR}, {.CDE_COPROC_FIELD,.VD_S,.VN_S,.VM_S}, 0xEC800000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, + { .VCX2, {.IMM_COPROC,.DPR,.DPR,.IMM}, {.CDE_COPROC_FIELD,.VD_D,.VM_D,.CDE_IMM_FIELD}, 0xEC700000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX3, {.IMM_COPROC,.DPR,.DPR,.DPR}, {.CDE_COPROC_FIELD,.VD_D,.VN_D,.VM_D}, 0xEC900000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, + { .VCX3, {.IMM_COPROC,.SPR,.SPR,.SPR}, {.CDE_COPROC_FIELD,.VD_S,.VN_S,.VM_S}, 0xEC800000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VADDLV, {.GPR,.GPR,.QPR,.NONE}, {.RD_T32,.RN_T32,.VM_Q,.NONE}, 0xEE890F00, 0xEFFF0FD1, .MVE_INT, .T32, {thumb32=true}, {.S32,.NONE} }, { .VADDLVA, {.GPR,.GPR,.QPR,.NONE}, {.RD_T32,.RN_T32,.VM_Q,.NONE}, 0xEE890F20, 0xEFFF0FD1, .MVE_INT, .T32, {thumb32=true}, {.S32,.NONE} }, { .VMAXNMV, {.GPR,.QPR,.NONE,.NONE}, {.RD_T32,.VM_Q,.NONE,.NONE}, 0xEEEE0F00, 0xEFFF0FD1, .MVE_FP, .T32, {thumb32=true}, {.F32,.NONE} }, @@ -1273,8 +1287,8 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VDDUP, {.QPR,.GPR,.IMM,.NONE}, {.VD_Q,.RM_T32,.CDE_IMM_FIELD,.NONE}, 0xEE011F6E, 0xEF811F7E, .MVE_INT, .T32, {thumb32=true}, {.U8,.NONE} }, { .VIDUP, {.QPR,.GPR,.IMM,.NONE}, {.VD_Q,.RM_T32,.CDE_IMM_FIELD,.NONE}, 0xEE010F6E, 0xEF811F7E, .MVE_INT, .T32, {thumb32=true}, {.U8,.NONE} }, { .VCMP, {.QPR,.QPR,.NONE,.NONE}, {.VN_Q,.VM_Q,.NONE,.NONE}, 0xEE310F00, 0xEFB10FF0, .MVE_FP, .T32, {thumb32=true}, {.F32,.NONE} }, - { .VMOV, {.QPR_ELEM,.GPR,.NONE,.NONE}, {.VD_Q,.RT_T32,.NONE,.NONE}, 0xEE000B10, 0xFF900F1F, .MVE_INT, .T32, {thumb32=true}, {.SZ32,.NONE} }, { .VMOV, {.GPR,.QPR_ELEM,.NONE,.NONE}, {.RT_T32,.VD_Q,.NONE,.NONE}, 0xEE100B10, 0xFF900F1F, .MVE_INT, .T32, {thumb32=true}, {.SZ32,.NONE} }, + { .VMOV, {.QPR_ELEM,.GPR,.NONE,.NONE}, {.VD_Q,.RT_T32,.NONE,.NONE}, 0xEE000B10, 0xFF900F1F, .MVE_INT, .T32, {thumb32=true}, {.SZ32,.NONE} }, { .VAND, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xEF000150, 0xFFB10F51, .MVE_INT, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VBIC, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xEF100150, 0xFFB10F51, .MVE_INT, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VORR, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xEF200150, 0xFFB10F51, .MVE_INT, .T32, {thumb32=true}, {.NONE,.NONE} }, @@ -1404,13 +1418,13 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .ISB, {.IMM_BARRIER,.NONE,.NONE,.NONE}, {.BARRIER_TYPE,.NONE,.NONE,.NONE}, 0xF3BF8F60, 0xFFFFFFF0, .V7, .T32, {thumb32=true}, {.NONE,.NONE} }, { .MSR, {.PSR_FIELD,.GPR,.NONE,.NONE}, {.PSR_FIELD_MASK,.RN_T32,.NONE,.NONE}, 0xF3808000, 0xFFF0F0FF, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, { .SSAT16, {.GPR,.IMM4_SAT,.GPR,.NONE}, {.RD_T32,.SAT_IMM5_T32,.RN_T32,.NONE}, 0xF3200000, 0xFFF0F0F0, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, - { .USAT16, {.GPR,.IMM4_SAT,.GPR,.NONE}, {.RD_T32,.SAT_IMM5_T32,.RN_T32,.NONE}, 0xF3A00000, 0xFFF0F0F0, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, + { .USAT16, {.GPR,.IMM4_SAT,.GPR,.NONE}, {.RD_T32,.SAT_IMM5_U_T32,.RN_T32,.NONE}, 0xF3A00000, 0xFFF0F0F0, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, { .BFC, {.GPR,.IMM5,.IMM5_W,.NONE}, {.RD_T32,.BFI_LSB_T32,.BFI_MSB,.NONE}, 0xF36F0000, 0xFFFF8000, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, { .BFI, {.GPR,.GPR,.IMM5,.IMM5_W}, {.RD_T32,.RN_T32,.BFI_LSB_T32,.BFI_MSB}, 0xF3600000, 0xFFF08000, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, { .SBFX, {.GPR,.GPR,.IMM5,.IMM5_W}, {.RD_T32,.RN_T32,.BFI_LSB_T32,.BFX_WIDTH}, 0xF3400000, 0xFFF08000, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, { .UBFX, {.GPR,.GPR,.IMM5,.IMM5_W}, {.RD_T32,.RN_T32,.BFI_LSB_T32,.BFX_WIDTH}, 0xF3C00000, 0xFFF08000, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, { .SSAT, {.GPR,.IMM4_SAT,.GPR_SHIFTED,.NONE}, {.RD_T32,.SAT_IMM5_T32,.RN_T32,.NONE}, 0xF3000000, 0xFFD08020, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, - { .USAT, {.GPR,.IMM4_SAT,.GPR_SHIFTED,.NONE}, {.RD_T32,.SAT_IMM5_T32,.RN_T32,.NONE}, 0xF3800000, 0xFFD08020, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, + { .USAT, {.GPR,.IMM4_SAT,.GPR_SHIFTED,.NONE}, {.RD_T32,.SAT_IMM5_U_T32,.RN_T32,.NONE}, 0xF3800000, 0xFFD08020, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, { .MOVW, {.GPR,.IMM16_LO_HI,.NONE,.NONE}, {.RD_T32,.NONE,.NONE,.NONE}, 0xF2400000, 0xFBF08000, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, { .MOVT, {.GPR,.IMM16_LO_HI,.NONE,.NONE}, {.RD_T32,.NONE,.NONE,.NONE}, 0xF2C00000, 0xFBF08000, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, { .DCPS1, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF78F8001, 0xFFFFFFFF, .V8, .T32, {thumb32=true}, {.NONE,.NONE} }, @@ -1525,10 +1539,10 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ { .VLDRW, {.QPR,.MEM,.QPR,.NONE}, {.VD_Q,.RN_T32,.VM_Q,.NONE}, 0xFC900F40, 0xFEF00FF1, .MVE_INT, .T32, {thumb32=true}, {.U32,.NONE} }, { .VLDRD, {.QPR,.MEM,.QPR,.NONE}, {.VD_Q,.RN_T32,.VM_Q,.NONE}, 0xFC900FD0, 0xFEF00FF1, .MVE_INT, .T32, {thumb32=true}, {.U64,.NONE} }, { .VLDRB, {.QPR,.MEM,.QPR,.NONE}, {.VD_Q,.RN_T32,.VM_Q,.NONE}, 0xFC900E00, 0xFEF00FD1, .MVE_INT, .T32, {thumb32=true}, {.U8,.NONE} }, - { .VCX1A, {.IMM_COPROC,.DPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_D,.CDE_IMM_FIELD,.NONE}, 0xFC300000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX1A, {.IMM_COPROC,.SPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_S,.CDE_IMM_FIELD,.NONE}, 0xFC200000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, - { .VCX2A, {.IMM_COPROC,.DPR,.DPR,.IMM}, {.CDE_COPROC_FIELD,.VD_D,.VM_D,.CDE_IMM_FIELD}, 0xFC700000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, + { .VCX1A, {.IMM_COPROC,.DPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_D,.CDE_IMM_FIELD,.NONE}, 0xFC300000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX2A, {.IMM_COPROC,.SPR,.SPR,.IMM}, {.CDE_COPROC_FIELD,.VD_S,.VM_S,.CDE_IMM_FIELD}, 0xFC600000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, + { .VCX2A, {.IMM_COPROC,.DPR,.DPR,.IMM}, {.CDE_COPROC_FIELD,.VD_D,.VM_D,.CDE_IMM_FIELD}, 0xFC700000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX3A, {.IMM_COPROC,.DPR,.DPR,.DPR}, {.CDE_COPROC_FIELD,.VD_D,.VN_D,.VM_D}, 0xFC900000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX3A, {.IMM_COPROC,.SPR,.SPR,.SPR}, {.CDE_COPROC_FIELD,.VD_S,.VN_S,.VM_S}, 0xFC800000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VPST, {.MVE_VPT_MASK,.NONE,.NONE,.NONE}, {.MVE_VPT_MASK_FIELD,.NONE,.NONE,.NONE}, 0xFE710F4D, 0xFFFFFFFF, .MVE_INT, .T32, {thumb32=true}, {.NONE,.NONE} }, @@ -1661,7 +1675,7 @@ DECODE_ENTRIES := [1649]lib.Decode_Entry{ } @(rodata) -DECODE_FORM_IDX := [1649]u16{ +DECODE_FORM_IDX := [1663]u16{ 0, 2, 1, 1, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 2, 2, 2, 1, 2, 2, 2, 5, 4, 0, 0, 2, 1, 0, 0, 0, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 1, 1, @@ -1673,48 +1687,48 @@ DECODE_FORM_IDX := [1649]u16{ 1, 0, 0, 0, 5, 4, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 5, 4, 0, 0, 0, 2, 1, 0, 0, 0, 5, 4, 0, 0, 0, 2, 1, 0, 0, 0, 5, 4, 1, 1, 1, 9, 14, - 8, 10, 6, 4, 3, 3, 1, 4, 4, 3, 3, 1, 3, 7, 3, 3, - 0, 0, 9, 3, 3, 1, 4, 1, 1, 0, 0, 13, 5, 5, 9, 3, + 8, 6, 10, 4, 3, 3, 1, 4, 4, 3, 3, 1, 3, 7, 3, 3, + 0, 0, 9, 3, 3, 1, 4, 1, 1, 0, 0, 5, 13, 5, 3, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 8, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 10, 4, 9, 7, 4, - 4, 5, 5, 2, 4, 4, 1, 4, 9, 4, 4, 2, 2, 4, 11, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 10, 9, 7, 4, + 4, 5, 5, 2, 4, 4, 1, 4, 9, 4, 4, 2, 2, 11, 4, 4, 2, 0, 3, 6, 6, 4, 1, 1, 1, 1, 0, 1, 1, 0, 1, 8, - 1, 1, 1, 10, 1, 1, 1, 1, 1, 3, 5, 5, 5, 11, 14, 10, + 1, 1, 10, 1, 1, 1, 1, 1, 1, 3, 5, 5, 5, 11, 14, 10, 8, 10, 4, 5, 5, 6, 6, 3, 5, 5, 1, 5, 5, 5, 4, 4, 5, 5, 9, 1, 4, 0, 7, 13, 7, 5, 9, 3, 2, 2, 2, 2, 1, 2, 2, 0, 2, 2, 2, 2, 2, 8, 2, 2, 2, 0, 2, 0, 7, 12, 4, 7, 7, 1, 11, 5, 6, 0, 8, 3, 3, 3, 0, 10, - 3, 3, 0, 3, 0, 3, 23, 24, 25, 22, 21, 0, 0, 0, 19, 20, - 14, 17, 16, 13, 18, 10, 12, 11, 15, 0, 0, 0, 0, 11, 10, 0, - 6, 0, 0, 7, 2, 4, 6, 9, 3, 5, 8, 0, 0, 0, 0, 0, + 3, 3, 0, 3, 0, 3, 25, 23, 22, 24, 21, 0, 0, 0, 10, 20, + 15, 18, 11, 13, 19, 17, 12, 14, 16, 0, 0, 0, 0, 10, 11, 6, + 0, 0, 0, 6, 5, 8, 9, 3, 4, 2, 7, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 5, 0, 0, 0, 0, 0, 0, 4, 0, 1, - 1, 1, 1, 1, 1, 1, 18, 12, 11, 1, 7, 1, 6, 1, 6, 2, - 0, 0, 2, 0, 2, 4, 4, 4, 4, 3, 2, 2, 2, 2, 2, 2, - 2, 19, 13, 12, 2, 8, 7, 2, 7, 2, 1, 3, 1, 3, 1, 3, - 6, 6, 5, 5, 0, 1, 0, 3, 0, 3, 0, 3, 13, 7, 7, 1, - 9, 9, 14, 12, 6, 7, 7, 9, 9, 7, 7, 1, 3, 7, 9, 7, + 1, 1, 1, 1, 1, 1, 18, 12, 11, 7, 1, 6, 1, 1, 6, 0, + 2, 2, 0, 0, 2, 4, 4, 4, 4, 3, 2, 2, 2, 2, 2, 2, + 2, 19, 13, 12, 8, 2, 2, 7, 2, 7, 1, 3, 1, 3, 1, 3, + 6, 6, 5, 5, 0, 1, 0, 3, 0, 3, 0, 3, 7, 13, 7, 1, + 9, 9, 12, 14, 6, 7, 7, 9, 9, 7, 7, 1, 3, 7, 9, 7, 6, 12, 6, 1, 0, 7, 7, 7, 3, 3, 8, 0, 5, 11, 13, 3, 6, 6, 8, 8, 6, 6, 0, 0, 8, 6, 6, 0, 6, 6, 3, 4, 3, 3, 6, 2, 2, 0, 9, 9, 11, 10, 4, 7, 2, 2, 2, 1, 4, 11, 8, 8, 10, 0, 6, 3, 4, 0, 0, 0, 0, 1, 10, 4, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 13, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 13, 11, 1, 13, 11, 8, 3, 3, 3, 9, 1, 5, 9, 10, 12, 10, 1, 0, 12, 0, 7, 5, 1, 1, 1, 8, 0, 2, 8, 0, 4, 0, 15, 12, 1, 11, 14, 8, 0, 10, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 4, 4, 5, 5, 4, 4, 4, 4, 4, - 20, 14, 13, 9, 4, 4, 8, 8, 4, 6, 6, 3, 5, 5, 7, 7, - 5, 5, 5, 5, 5, 21, 15, 14, 10, 5, 9, 5, 5, 9, 7, 7, - 0, 5, 4, 3, 9, 6, 7, 8, 2, 3, 7, 5, 6, 4, 2, 9, - 8, 10, 1, 0, 2, 0, 5, 1, 2, 3, 4, 2, 1, 0, 2, 0, - 1, 4, 2, 0, 1, 3, 1, 2, 0, 3, 2, 1, 3, 1, 3, 5, - 2, 0, 4, 2, 0, 1, 4, 5, 3, 0, 5, 1, 3, 2, 4, 0, - 2, 3, 4, 5, 1, 2, 4, 3, 2, 4, 3, 0, 0, 0, 11, 12, - 10, 13, 12, 15, 13, 14, 12, 14, 15, 13, 17, 14, 16, 15, 14, 16, - 15, 17, 1, 2, 0, 3, 0, 1, 0, 1, 0, 1, 3, 5, 0, 2, - 1, 3, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 1, 3, 2, 2, 3, 3, 0, 3, 0, 3, 1, 3, 2, 0, 2, - 0, 1, 1, 0, 1, 0, 2, 2, 2, 0, 1, 3, 0, 1, 2, 0, - 1, 0, 1, 0, 0, 2, 0, 2, 0, 0, 6, 5, 4, 4, 5, 4, + 20, 14, 13, 9, 4, 8, 4, 8, 4, 6, 6, 3, 5, 5, 7, 7, + 5, 5, 5, 5, 5, 21, 15, 14, 10, 5, 5, 9, 5, 9, 7, 7, + 0, 2, 5, 3, 4, 8, 6, 7, 9, 3, 6, 8, 2, 4, 7, 5, + 9, 10, 0, 1, 2, 5, 3, 1, 0, 4, 2, 2, 1, 0, 4, 0, + 2, 1, 0, 3, 1, 2, 3, 1, 0, 2, 3, 2, 1, 2, 4, 3, + 5, 0, 1, 2, 5, 3, 0, 1, 4, 1, 5, 0, 4, 2, 3, 3, + 1, 5, 4, 2, 0, 2, 3, 4, 3, 2, 4, 0, 0, 0, 11, 13, + 12, 10, 14, 15, 12, 13, 13, 12, 14, 15, 16, 14, 17, 15, 14, 15, + 16, 17, 2, 3, 1, 0, 0, 1, 1, 0, 0, 1, 3, 5, 0, 1, + 2, 3, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 1, + 3, 2, 1, 0, 2, 3, 3, 0, 3, 0, 3, 2, 3, 1, 0, 1, + 2, 0, 0, 1, 1, 0, 2, 2, 3, 0, 2, 1, 0, 2, 1, 1, + 0, 1, 0, 0, 0, 2, 0, 2, 0, 0, 6, 5, 4, 4, 5, 4, 3, 3, 4, 3, 2, 2, 7, 5, 4, 4, 6, 4, 3, 3, 5, 3, 2, 2, 4, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1725,51 +1739,51 @@ DECODE_FORM_IDX := [1649]u16{ 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, - 0, 7, 9, 7, 0, 0, 8, 6, 0, 0, 1, 0, 1, 0, 1, 0, - 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 4, 32, + 0, 7, 9, 7, 0, 0, 6, 8, 0, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 4, 32, 31, 3, 2, 1, 0, 2, 2, 0, 1, 0, 1, 0, 0, 0, 0, 5, 26, 0, 1, 1, 0, 0, 0, 3, 3, 2, 2, 2, 0, 1, 0, 1, - 2, 2, 0, 1, 1, 0, 30, 1, 3, 0, 1, 0, 1, 2, 2, 0, + 2, 2, 0, 1, 1, 0, 30, 1, 3, 0, 1, 1, 0, 2, 2, 0, 1, 2, 2, 1, 0, 0, 1, 2, 2, 0, 1, 1, 0, 5, 2, 3, - 3, 2, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, - 0, 1, 0, 1, 1, 0, 2, 0, 1, 1, 0, 4, 0, 1, 19, 18, - 20, 17, 14, 12, 9, 11, 13, 5, 4, 6, 2, 0, 1, 3, 7, 8, - 0, 1, 0, 1, 2, 1, 3, 0, 0, 1, 1, 0, 1, 0, 1, 0, - 0, 15, 16, 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 0, 0, 0, 0, 1, 1, 2, 2, 1, 3, 3, 1, 1, 4, - 4, 4, 4, 4, 3, 5, 4, 7, 5, 11, 10, 8, 10, 9, 8, 7, - 8, 8, 8, 8, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 29, 0, - 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 7, - 27, 28, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 11, 5, - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 15, 8, 8, 2, 10, 10, 12, 12, - 8, 4, 6, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 6, 4, 8, 9, - 7, 0, 0, 7, 8, 7, 6, 7, 7, 7, 7, 4, 3, 1, 2, 2, - 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, - 9, 8, 7, 7, 7, 7, 6, 6, 1, 1, 1, 10, 8, 7, 6, 6, - 6, 6, 5, 5, 2, 1, 2, 2, 1, 2, 5, 5, 5, 4, 1, 1, - 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 2, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 0, 1, 1, 0, 2, 0, 1, 1, 0, 4, 0, 1, 34, 31, + 30, 32, 28, 26, 25, 27, 29, 33, 21, 19, 18, 20, 22, 15, 14, 16, + 12, 9, 11, 13, 17, 23, 5, 4, 6, 2, 0, 1, 3, 7, 24, 8, + 0, 1, 0, 1, 0, 1, 2, 3, 1, 0, 0, 1, 1, 0, 0, 1, + 0, 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 1, 1, 2, 2, 1, 3, 3, 1, 1, 4, 4, 4, + 4, 4, 3, 5, 4, 7, 5, 11, 10, 8, 10, 9, 8, 7, 8, 8, + 8, 8, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, + 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 7, 28, 27, + 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 6, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 11, 5, 5, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 15, 8, 8, 2, 10, 10, 12, 12, 8, 4, + 6, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 6, 4, 8, 9, 7, 0, + 0, 7, 8, 7, 6, 7, 7, 7, 7, 4, 3, 1, 2, 2, 2, 2, + 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 9, 8, + 7, 7, 7, 7, 6, 6, 1, 1, 1, 10, 8, 7, 6, 6, 6, 6, + 5, 5, 2, 1, 2, 2, 1, 2, 5, 5, 5, 4, 1, 1, 2, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 0, 1, - 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4, 1, 1, 1, 1, 1, 0, 1, 0, - 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 11, 11, - 0, 0, 0, 10, 10, 12, 2, 16, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 2, 2, 6, 6, 7, 7, 6, 3, 8, 8, 6, 6, 6, 6, - 3, 4, 3, 6, 6, 6, 3, 3, 3, 2, 0, 2, 1, 2, 0, 0, - 9, 5, 7, 4, 4, 4, 4, 4, 5, 4, 4, 4, 5, 6, 5, 5, - 5, 5, 6, 7, 0, 10, 1, 1, 1, 1, 9, 11, 0, 1, 1, 1, - 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 2, 2, 1, 1, 1, - 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 0, 1, 1, 1, + 1, 1, 1, 2, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, + 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 11, 11, 0, 0, + 0, 10, 10, 12, 2, 16, 6, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 2, 6, 6, 7, 7, 6, 3, 8, 8, 6, 6, 6, 6, 3, 4, + 3, 6, 6, 6, 3, 3, 3, 2, 0, 2, 1, 2, 0, 0, 9, 5, + 7, 4, 4, 4, 4, 4, 5, 4, 4, 4, 5, 6, 5, 5, 5, 5, + 6, 7, 0, 10, 1, 1, 1, 1, 9, 11, 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 1, 0, 1, 2, 2, 1, 1, 1, 2, } @(rodata) -DECODE_BUCKET_LIST := [5335]u16{ +DECODE_BUCKET_LIST := [5363]u16{ 0, 1, 2, 3, 0, 4, 1, 5, 2, 6, 7, 8, 9, 6, 10, 7, 11, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 16, 17, 23, 24, 25, 26, 27, 28, 29, 30, 31, 25, 26, 32, 33, 34, 35, 32, 36, @@ -1905,205 +1919,207 @@ DECODE_BUCKET_LIST := [5335]u16{ 989, 991, 989, 991, 989, 991, 989, 991, 989, 991, 989, 991, 989, 991, 989, 991, 989, 991, 989, 991, 989, 991, 989, 991, 992, 993, 994, 1007, 1008, 995, 996, 1007, 1008, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 995, 996, 1009, - 1007, 1008, 997, 998, 992, 993, 994, 1010, 1011, 1007, 1012, 1008, 995, 1013, 996, 1015, + 1007, 1008, 997, 998, 992, 993, 994, 1011, 1010, 1007, 1012, 1008, 995, 1013, 996, 1015, 1014, 1007, 1016, 1008, 997, 1017, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, - 1008, 995, 996, 1009, 1007, 1008, 997, 998, 1018, 1019, 1021, 1020, 995, 996, 1018, 1019, + 1008, 995, 996, 1009, 1007, 1008, 997, 998, 1018, 1019, 1020, 1021, 995, 996, 1018, 1019, 1022, 1023, 997, 998, 1024, 1025, 1026, 1027, 1028, 1029, 1018, 1019, 1020, 1021, 995, 996, - 1031, 1030, 1018, 1019, 1023, 1022, 997, 998, 1018, 1019, 1021, 1020, 995, 996, 1018, 1019, + 1030, 1031, 1018, 1019, 1022, 1023, 997, 998, 1018, 1019, 1021, 1020, 995, 996, 1018, 1019, 1023, 1022, 997, 998, 1024, 1025, 1026, 1027, 1028, 1029, 1018, 1019, 1020, 1021, 995, 996, 1018, 1019, 1022, 1023, 997, 998, 1007, 1008, 1033, 1032, 1007, 1008, 1035, 1034, 1037, 1036, - 1007, 1008, 1007, 1008, 1007, 1008, 1032, 1033, 1007, 1008, 1035, 1034, 1007, 1008, 1007, 1008, - 1018, 1019, 1033, 1032, 1018, 1019, 1035, 1034, 1018, 1019, 1018, 1019, 1018, 1019, 1033, 1032, + 1007, 1008, 1007, 1008, 1007, 1008, 1033, 1032, 1007, 1008, 1035, 1034, 1007, 1008, 1007, 1008, + 1018, 1019, 1032, 1033, 1018, 1019, 1034, 1035, 1018, 1019, 1018, 1019, 1018, 1019, 1032, 1033, 1018, 1019, 1034, 1035, 1018, 1019, 1018, 1019, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1007, 1047, 1048, 1049, 1050, 1008, 1051, 1052, 1053, 1054, 1055, 1044, 1043, 1056, 1007, 1058, 1057, 1059, 1060, 1008, 1061, 1052, 1062, 1054, 1039, 1040, 1063, 1064, 1065, 1066, 1044, 1043, 1067, 1007, 1068, 1069, 1071, 1070, 1008, 1051, 1052, 1053, 1054, 1043, 1044, 1056, 1072, - 1073, 1007, 1075, 1074, 1077, 1076, 1008, 1061, 1052, 1062, 1054, 1041, 1078, 1042, 1044, 1043, + 1073, 1007, 1075, 1074, 1076, 1077, 1008, 1061, 1052, 1062, 1054, 1041, 1078, 1042, 1044, 1043, 1045, 1046, 1007, 1047, 1048, 1049, 1050, 1008, 1051, 1052, 1053, 1054, 1043, 1044, 1056, 1007, 1058, 1057, 1059, 1060, 1008, 1061, 1052, 1062, 1054, 1063, 1064, 1078, 1065, 1066, 1043, 1044, - 1067, 1007, 1068, 1069, 1071, 1070, 1008, 1051, 1052, 1053, 1054, 1044, 1043, 1056, 1072, 1073, - 1007, 1075, 1074, 1077, 1076, 1008, 1061, 1052, 1062, 1054, 1079, 1080, 1082, 1081, 1083, 1084, - 1085, 1086, 1088, 1087, 1051, 1052, 1053, 1054, 1056, 1089, 1090, 1091, 1092, 1094, 1093, 1061, - 1052, 1062, 1054, 1095, 1096, 1097, 1098, 1099, 1100, 1051, 1052, 1053, 1054, 1101, 1102, 1103, - 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1113, 1112, 1114, 1115, 1117, 1116, 1119, 1118, - 1121, 1120, 1123, 1122, 1125, 1124, 1128, 1127, 1126, 1129, 1130, 1131, 1133, 1132, 1151, 1150, - 1137, 1145, 1142, 1139, 1149, 1143, 1134, 1138, 1144, 1148, 1147, 1141, 1146, 1136, 1135, 1140, - 1153, 1152, 1154, 1155, 1158, 1159, 1156, 1157, 1160, 1161, 1163, 1162, 1165, 1164, 1167, 1166, - 1168, 1169, 1170, 1172, 1171, 1056, 1061, 1052, 1062, 1054, 1079, 1080, 1081, 1082, 1084, 1083, - 1085, 1173, 1086, 1087, 1088, 1051, 1052, 1053, 1054, 1056, 1089, 1090, 1092, 1091, 1094, 1093, - 1061, 1052, 1062, 1054, 1174, 1175, 1095, 1096, 1098, 1097, 1099, 1100, 1051, 1052, 1053, 1054, - 1176, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1111, 1110, 1113, 1112, 1115, 1114, - 1116, 1117, 1119, 1118, 1120, 1121, 1122, 1123, 1124, 1125, 1128, 1127, 1126, 1130, 1131, 1129, - 1133, 1132, 1151, 1136, 1134, 1135, 1137, 1138, 1145, 1144, 1142, 1148, 1149, 1150, 1147, 1139, - 1140, 1141, 1143, 1146, 1152, 1153, 1155, 1154, 1159, 1158, 1157, 1156, 1160, 1161, 1163, 1162, - 1164, 1165, 1166, 1167, 1168, 1170, 1169, 1171, 1172, 1056, 1061, 1052, 1062, 1054, 1007, 1008, - 1177, 1007, 1008, 1177, 1007, 1008, 1177, 1007, 1008, 1177, 1007, 1008, 1177, 1007, 1008, 1177, - 1007, 1008, 1177, 1007, 1008, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1178, 1179, - 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, - 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, - 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, - 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, - 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, - 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, - 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, - 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, - 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, - 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, - 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, - 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, - 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, - 1388, 1389, 1390, 1391, 1392, 1393, 1347, 1348, 1394, 1395, 1396, 1352, 1353, 1397, 1398, 1399, - 1400, 1401, 1362, 1402, 1403, 1372, 1371, 1373, 1347, 1348, 1352, 1353, 1354, 1355, 1356, 1357, - 1359, 1358, 1360, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1372, 1371, 1373, 1404, - 1405, 1406, 1347, 1348, 1352, 1353, 1407, 1362, 1402, 1403, 1372, 1371, 1373, 1408, 1409, 1410, - 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, - 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, - 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, - 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, - 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, - 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, - 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1517, 1516, 1519, 1518, 1521, 1520, 1522, - 1523, 1239, 1240, 1241, 1242, 1243, 1244, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, - 1533, 1534, 1535, 1536, 1537, 1538, 1251, 1252, 1253, 1254, 1255, 1256, 1539, 1540, 1541, 1261, - 1262, 1263, 1542, 1270, 1271, 1272, 1273, 1274, 1275, 1277, 1278, 1543, 1279, 1280, 1544, 1281, - 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1545, 1546, 1547, 1548, 1549, 1550, - 1551, 1552, 1292, 1553, 1293, 1294, 1295, 1296, 1554, 1297, 1298, 1299, 1300, 1301, 1302, 1303, - 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, - 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1555, 1556, 1557, 1558, 1559, - 1560, 1561, 1562, 1333, 1334, 1335, 1336, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1569, 1570, - 1570, 1571, 1571, 1572, 1573, 1574, 1575, 1576, 1576, 1577, 1577, 1578, 1578, 1579, 1579, 1580, - 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, - 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, - 1612, 1612, 1613, 1613, 1614, 1614, 1615, 1615, 1616, 1616, 1617, 1617, 1618, 1618, 1619, 1619, - 1620, 1620, 1621, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, - 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1643, 1644, 1644, 1645, 1645, 1645, - 1646, 1647, 1645, 1648, 1648, 1186, 1187, 1188, 1189, 1194, 1200, 1190, 1199, 1200, 1199, 1196, - 1195, 1196, 1193, 1195, 1183, 1184, 1191, 1200, 1179, 1180, 1181, 1182, 1185, 1199, 1200, 1199, - 1198, 1197, 1192, 1198, 1197, 1200, 1199, 1200, 1178, 1199, 1200, 1199, 1200, 1199, 1213, 1205, - 1212, 1219, 1219, 1201, 1202, 1203, 1204, 1210, 1218, 1209, 1218, 1211, 1211, 1214, 1206, 1214, - 1208, 1216, 1216, 1217, 1217, 1207, 1215, 1215, 1230, 1237, 1238, 1230, 1234, 1236, 1233, 1235, - 1230, 1237, 1238, 1220, 1221, 1222, 1223, 1230, 1234, 1236, 1233, 1235, 1237, 1238, 1234, 1236, - 1233, 1235, 1237, 1238, 1234, 1236, 1233, 1235, 1220, 1221, 1222, 1223, 1227, 1228, 1229, 1232, - 1224, 1225, 1226, 1231, 1227, 1228, 1229, 1232, 1224, 1225, 1226, 1231, 1257, 1261, 1262, 1264, - 1276, 1277, 1278, 1279, 1290, 1291, 1294, 1297, 1298, 1301, 1302, 1303, 1304, 1305, 1306, 1315, - 1316, 1317, 1318, 1341, 1257, 1261, 1262, 1265, 1276, 1277, 1278, 1279, 1291, 1294, 1297, 1298, - 1301, 1302, 1303, 1304, 1305, 1306, 1315, 1316, 1317, 1318, 1341, 1261, 1262, 1264, 1276, 1277, - 1278, 1279, 1291, 1294, 1297, 1298, 1301, 1302, 1303, 1304, 1305, 1306, 1315, 1316, 1317, 1318, - 1341, 1247, 1248, 1249, 1250, 1261, 1262, 1263, 1265, 1276, 1277, 1278, 1279, 1280, 1289, 1291, - 1294, 1297, 1298, 1301, 1302, 1303, 1304, 1305, 1306, 1315, 1316, 1317, 1318, 1341, 1261, 1262, - 1264, 1277, 1278, 1279, 1290, 1291, 1294, 1297, 1298, 1301, 1302, 1303, 1304, 1305, 1306, 1315, - 1316, 1317, 1318, 1337, 1341, 1261, 1262, 1265, 1277, 1278, 1279, 1291, 1294, 1297, 1298, 1301, - 1302, 1303, 1304, 1305, 1306, 1315, 1316, 1317, 1318, 1337, 1341, 1261, 1262, 1264, 1277, 1278, - 1279, 1291, 1294, 1297, 1298, 1301, 1302, 1303, 1304, 1305, 1306, 1315, 1316, 1317, 1318, 1337, - 1341, 1247, 1248, 1249, 1250, 1261, 1262, 1263, 1265, 1277, 1278, 1279, 1280, 1289, 1291, 1294, - 1297, 1298, 1301, 1302, 1303, 1304, 1305, 1306, 1315, 1316, 1317, 1318, 1337, 1341, 1239, 1240, - 1258, 1259, 1260, 1272, 1273, 1274, 1275, 1283, 1284, 1285, 1286, 1299, 1300, 1307, 1308, 1309, - 1310, 1311, 1312, 1313, 1314, 1331, 1332, 1336, 1339, 1342, 1299, 1300, 1307, 1308, 1309, 1310, - 1311, 1312, 1313, 1314, 1339, 1342, 1258, 1299, 1300, 1307, 1308, 1309, 1310, 1311, 1312, 1313, - 1314, 1339, 1342, 1270, 1271, 1281, 1282, 1287, 1288, 1299, 1300, 1307, 1308, 1309, 1310, 1311, - 1312, 1313, 1314, 1339, 1342, 1258, 1259, 1260, 1272, 1273, 1274, 1275, 1283, 1284, 1285, 1286, - 1299, 1300, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1331, 1332, 1336, 1338, 1340, 1342, - 1299, 1300, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1338, 1340, 1342, 1241, 1242, 1243, - 1244, 1253, 1254, 1255, 1256, 1258, 1299, 1300, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, - 1338, 1340, 1342, 1245, 1246, 1251, 1252, 1270, 1271, 1281, 1282, 1287, 1288, 1299, 1300, 1307, - 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1338, 1340, 1342, 1266, 1292, 1295, 1319, 1320, 1321, - 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1267, 1292, 1295, 1319, 1320, 1321, 1322, - 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1268, 1293, 1296, 1319, 1320, 1321, 1322, 1323, - 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1269, 1293, 1296, 1319, 1320, 1321, 1322, 1323, 1324, - 1325, 1326, 1327, 1328, 1329, 1330, 1266, 1292, 1295, 1319, 1320, 1321, 1322, 1323, 1324, 1325, - 1326, 1327, 1328, 1329, 1330, 1267, 1292, 1295, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, - 1327, 1328, 1329, 1330, 1268, 1293, 1296, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, - 1328, 1329, 1330, 1269, 1293, 1296, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, - 1329, 1330, 1333, 1334, 1335, 1333, 1334, 1335, 1333, 1334, 1335, 1333, 1334, 1335, 1333, 1334, - 1335, 1333, 1334, 1335, 1333, 1334, 1335, 1333, 1334, 1335, 1343, 1345, 1346, 1349, 1353, 1361, - 1362, 1363, 1371, 1372, 1373, 1345, 1346, 1350, 1354, 1361, 1362, 1364, 1371, 1372, 1373, 1345, - 1346, 1361, 1362, 1370, 1371, 1372, 1373, 1345, 1346, 1361, 1362, 1370, 1372, 1371, 1373, 1344, - 1351, 1352, 1358, 1369, 1372, 1371, 1373, 1359, 1369, 1371, 1372, 1373, 1347, 1360, 1371, 1372, - 1373, 1348, 1360, 1371, 1372, 1373, 1353, 1362, 1365, 1371, 1372, 1373, 1355, 1362, 1365, 1371, - 1372, 1373, 1362, 1371, 1372, 1373, 1362, 1371, 1372, 1373, 1352, 1372, 1371, 1373, 1371, 1372, - 1373, 1347, 1371, 1372, 1373, 1348, 1372, 1371, 1373, 1346, 1353, 1361, 1362, 1372, 1371, 1373, - 1346, 1357, 1361, 1362, 1372, 1371, 1373, 1346, 1361, 1362, 1372, 1371, 1373, 1346, 1361, 1362, - 1372, 1371, 1373, 1352, 1367, 1371, 1372, 1373, 1367, 1371, 1372, 1373, 1347, 1368, 1372, 1371, - 1373, 1348, 1368, 1372, 1371, 1373, 1353, 1362, 1371, 1372, 1373, 1362, 1372, 1371, 1373, 1362, - 1372, 1371, 1373, 1356, 1362, 1371, 1372, 1373, 1352, 1366, 1371, 1372, 1373, 1366, 1371, 1372, - 1373, 1347, 1371, 1372, 1373, 1348, 1371, 1372, 1373, 1353, 1362, 1371, 1372, 1373, 1362, 1371, - 1372, 1373, 1362, 1371, 1372, 1373, 1362, 1372, 1371, 1373, 1352, 1402, 1371, 1372, 1373, 1371, - 1372, 1373, 1347, 1371, 1372, 1373, 1348, 1371, 1372, 1373, 1353, 1362, 1372, 1371, 1373, 1362, - 1372, 1371, 1373, 1362, 1371, 1372, 1373, 1362, 1371, 1372, 1373, 1352, 1403, 1371, 1372, 1373, - 1371, 1372, 1373, 1347, 1371, 1372, 1373, 1348, 1371, 1372, 1373, 1353, 1400, 1362, 1371, 1372, - 1373, 1362, 1372, 1371, 1373, 1394, 1400, 1362, 1371, 1372, 1373, 1362, 1371, 1372, 1373, 1352, - 1398, 1372, 1371, 1373, 1372, 1371, 1373, 1347, 1396, 1397, 1371, 1372, 1373, 1348, 1372, 1371, - 1373, 1393, 1353, 1401, 1362, 1372, 1371, 1373, 1362, 1372, 1371, 1373, 1374, 1375, 1376, 1377, - 1378, 1380, 1381, 1382, 1383, 1385, 1386, 1387, 1388, 1395, 1401, 1362, 1372, 1371, 1373, 1379, - 1384, 1390, 1391, 1392, 1362, 1371, 1372, 1373, 1352, 1399, 1372, 1371, 1373, 1372, 1371, 1373, - 1389, 1347, 1372, 1371, 1373, 1348, 1372, 1371, 1373, 1353, 1362, 1363, 1372, 1371, 1373, 1354, - 1362, 1364, 1372, 1371, 1373, 1362, 1370, 1371, 1372, 1373, 1362, 1370, 1371, 1372, 1373, 1352, - 1358, 1369, 1372, 1371, 1373, 1359, 1369, 1371, 1372, 1373, 1347, 1360, 1371, 1372, 1373, 1348, - 1360, 1372, 1371, 1373, 1353, 1362, 1365, 1371, 1372, 1373, 1355, 1362, 1365, 1372, 1371, 1373, - 1362, 1371, 1372, 1373, 1362, 1372, 1371, 1373, 1352, 1371, 1372, 1373, 1371, 1372, 1373, 1347, - 1372, 1371, 1373, 1348, 1372, 1371, 1373, 1353, 1362, 1371, 1372, 1373, 1357, 1362, 1372, 1371, - 1373, 1362, 1372, 1371, 1373, 1362, 1372, 1371, 1373, 1352, 1367, 1372, 1371, 1373, 1367, 1372, - 1371, 1373, 1347, 1368, 1372, 1371, 1373, 1348, 1368, 1372, 1371, 1373, 1353, 1362, 1372, 1371, - 1373, 1362, 1371, 1372, 1373, 1362, 1372, 1371, 1373, 1356, 1362, 1372, 1371, 1373, 1352, 1366, - 1371, 1372, 1373, 1366, 1371, 1372, 1373, 1347, 1371, 1372, 1373, 1348, 1372, 1371, 1373, 1353, - 1362, 1371, 1372, 1373, 1362, 1372, 1371, 1373, 1362, 1371, 1372, 1373, 1362, 1371, 1372, 1373, - 1352, 1402, 1372, 1371, 1373, 1371, 1372, 1373, 1347, 1371, 1372, 1373, 1348, 1371, 1372, 1373, - 1353, 1362, 1372, 1371, 1373, 1362, 1372, 1371, 1373, 1362, 1372, 1371, 1373, 1362, 1372, 1371, - 1373, 1352, 1403, 1371, 1372, 1373, 1371, 1372, 1373, 1347, 1372, 1371, 1373, 1348, 1371, 1372, - 1373, 1353, 1362, 1372, 1371, 1373, 1362, 1372, 1371, 1373, 1362, 1372, 1371, 1373, 1362, 1372, - 1371, 1373, 1352, 1371, 1372, 1373, 1372, 1371, 1373, 1347, 1372, 1371, 1373, 1348, 1371, 1372, - 1373, 1404, 1405, 1406, 1353, 1362, 1372, 1371, 1373, 1362, 1372, 1371, 1373, 1362, 1372, 1371, - 1373, 1362, 1372, 1371, 1373, 1352, 1372, 1371, 1373, 1372, 1371, 1373, 1347, 1372, 1371, 1373, - 1348, 1407, 1371, 1372, 1373, 1411, 1410, 1413, 1412, 1417, 1409, 1408, 1419, 1423, 1416, 1422, - 1425, 1424, 1421, 1419, 1420, 1414, 1415, 1418, 1426, 1427, 1430, 1434, 1489, 1433, 1492, 1429, - 1435, 1488, 1432, 1491, 1428, 1436, 1487, 1431, 1490, 1437, 1443, 1444, 1445, 1446, 1447, 1453, - 1459, 1465, 1471, 1477, 1439, 1440, 1441, 1442, 1448, 1454, 1460, 1466, 1472, 1478, 1449, 1455, - 1461, 1467, 1473, 1479, 1438, 1451, 1457, 1463, 1469, 1475, 1481, 1452, 1458, 1464, 1470, 1476, - 1482, 1450, 1456, 1462, 1468, 1474, 1480, 1483, 1493, 1494, 1486, 1497, 1484, 1495, 1485, 1498, - 1496, 1521, 1520, 1511, 1517, 1519, 1511, 1516, 1518, 1521, 1520, 1517, 1519, 1516, 1518, 1505, - 1506, 1507, 1508, 1509, 1510, 1521, 1499, 1500, 1501, 1502, 1503, 1504, 1512, 1513, 1514, 1515, - 1520, 1511, 1517, 1519, 1511, 1516, 1518, 1505, 1506, 1507, 1508, 1509, 1510, 1521, 1499, 1500, - 1501, 1502, 1503, 1504, 1520, 1517, 1519, 1516, 1518, 1511, 1511, 1512, 1513, 1514, 1515, 1511, - 1511, 1538, 1261, 1262, 1277, 1278, 1279, 1544, 1290, 1291, 1549, 1550, 1551, 1552, 1294, 1554, - 1297, 1298, 1301, 1302, 1303, 1304, 1305, 1306, 1315, 1316, 1317, 1318, 1567, 1261, 1262, 1277, - 1278, 1279, 1544, 1291, 1549, 1550, 1551, 1552, 1294, 1554, 1297, 1298, 1301, 1302, 1303, 1304, - 1305, 1306, 1315, 1316, 1317, 1318, 1567, 1261, 1262, 1277, 1278, 1279, 1544, 1291, 1549, 1550, - 1551, 1552, 1294, 1554, 1297, 1298, 1301, 1302, 1303, 1304, 1305, 1306, 1315, 1316, 1317, 1318, - 1567, 1523, 1532, 1533, 1261, 1262, 1263, 1277, 1278, 1279, 1280, 1544, 1289, 1291, 1549, 1550, - 1551, 1552, 1294, 1554, 1297, 1298, 1301, 1302, 1303, 1304, 1305, 1306, 1315, 1316, 1317, 1318, - 1567, 1538, 1261, 1262, 1277, 1278, 1279, 1544, 1290, 1291, 1549, 1550, 1551, 1552, 1294, 1554, - 1297, 1298, 1301, 1302, 1303, 1304, 1305, 1306, 1315, 1316, 1317, 1318, 1563, 1567, 1261, 1262, - 1277, 1278, 1279, 1544, 1291, 1549, 1550, 1551, 1552, 1294, 1554, 1297, 1298, 1301, 1302, 1303, - 1304, 1305, 1306, 1315, 1316, 1317, 1318, 1563, 1567, 1261, 1262, 1277, 1278, 1279, 1544, 1291, - 1549, 1550, 1551, 1552, 1294, 1554, 1297, 1298, 1301, 1302, 1303, 1304, 1305, 1306, 1315, 1316, - 1317, 1318, 1563, 1567, 1522, 1532, 1533, 1261, 1262, 1263, 1277, 1278, 1279, 1280, 1544, 1289, - 1291, 1549, 1550, 1551, 1552, 1294, 1554, 1297, 1298, 1301, 1302, 1303, 1304, 1305, 1306, 1315, - 1316, 1317, 1318, 1563, 1567, 1239, 1240, 1272, 1273, 1274, 1275, 1283, 1284, 1285, 1286, 1545, - 1546, 1547, 1548, 1554, 1299, 1300, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1559, 1560, - 1561, 1562, 1336, 1565, 1568, 1545, 1546, 1547, 1548, 1554, 1299, 1300, 1307, 1308, 1309, 1310, - 1311, 1312, 1313, 1314, 1565, 1568, 1545, 1546, 1547, 1548, 1554, 1299, 1300, 1307, 1308, 1309, - 1310, 1311, 1312, 1313, 1314, 1565, 1568, 1530, 1531, 1270, 1271, 1281, 1282, 1287, 1288, 1545, - 1546, 1547, 1548, 1554, 1299, 1300, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1555, 1556, - 1557, 1558, 1565, 1568, 1272, 1273, 1274, 1275, 1283, 1284, 1285, 1286, 1545, 1546, 1547, 1548, - 1554, 1299, 1300, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1559, 1560, 1561, 1562, 1336, - 1564, 1566, 1568, 1545, 1546, 1547, 1548, 1554, 1299, 1300, 1307, 1308, 1309, 1310, 1311, 1312, - 1313, 1314, 1564, 1566, 1568, 1241, 1242, 1243, 1244, 1253, 1254, 1255, 1256, 1545, 1546, 1547, - 1548, 1554, 1299, 1300, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1564, 1566, 1568, 1530, - 1531, 1251, 1252, 1270, 1271, 1281, 1282, 1287, 1288, 1545, 1546, 1547, 1548, 1554, 1299, 1300, - 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1555, 1556, 1557, 1558, 1564, 1566, 1568, 1542, - 1543, 1544, 1292, 1553, 1295, 1554, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, - 1329, 1330, 1543, 1544, 1292, 1553, 1295, 1554, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, - 1327, 1328, 1329, 1330, 1544, 1553, 1293, 1296, 1554, 1319, 1320, 1321, 1322, 1323, 1324, 1325, - 1326, 1327, 1328, 1329, 1330, 1544, 1293, 1553, 1296, 1554, 1319, 1320, 1321, 1322, 1323, 1324, - 1325, 1326, 1327, 1328, 1329, 1330, 1542, 1543, 1544, 1292, 1553, 1295, 1554, 1319, 1320, 1321, - 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1543, 1544, 1292, 1553, 1295, 1554, 1319, - 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1544, 1553, 1293, 1296, 1554, - 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1544, 1553, 1293, 1296, - 1554, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1554, 1333, 1334, - 1335, 1554, 1333, 1334, 1335, 1554, 1333, 1334, 1335, 1524, 1525, 1526, 1527, 1528, 1529, 1534, - 1535, 1536, 1537, 1539, 1540, 1541, 1554, 1333, 1334, 1335, 1554, 1333, 1334, 1335, 1554, 1333, - 1334, 1335, 1554, 1333, 1334, 1335, 1524, 1525, 1526, 1527, 1528, 1529, 1534, 1535, 1536, 1537, - 1539, 1540, 1541, 1554, 1333, 1334, 1335, + 1067, 1007, 1069, 1068, 1070, 1071, 1008, 1051, 1052, 1053, 1054, 1044, 1043, 1056, 1072, 1073, + 1007, 1075, 1074, 1076, 1077, 1008, 1061, 1052, 1062, 1054, 1079, 1080, 1081, 1082, 1084, 1083, + 1085, 1086, 1088, 1087, 1051, 1052, 1053, 1054, 1056, 1089, 1090, 1091, 1092, 1093, 1094, 1061, + 1052, 1062, 1054, 1095, 1096, 1097, 1098, 1099, 1100, 1051, 1052, 1053, 1054, 1102, 1101, 1103, + 1104, 1105, 1107, 1106, 1109, 1108, 1111, 1110, 1112, 1113, 1115, 1114, 1117, 1116, 1118, 1119, + 1121, 1120, 1122, 1123, 1124, 1125, 1126, 1128, 1127, 1130, 1131, 1129, 1132, 1133, 1137, 1150, + 1144, 1162, 1136, 1157, 1149, 1159, 1166, 1156, 1154, 1146, 1135, 1141, 1165, 1145, 1142, 1167, + 1151, 1140, 1139, 1161, 1163, 1148, 1152, 1153, 1158, 1143, 1164, 1155, 1138, 1134, 1160, 1147, + 1169, 1168, 1171, 1170, 1175, 1174, 1173, 1172, 1177, 1176, 1178, 1179, 1180, 1181, 1182, 1183, + 1184, 1185, 1186, 1056, 1061, 1052, 1062, 1054, 1079, 1080, 1081, 1082, 1084, 1083, 1085, 1187, + 1086, 1087, 1088, 1051, 1052, 1053, 1054, 1056, 1089, 1090, 1092, 1091, 1094, 1093, 1061, 1052, + 1062, 1054, 1188, 1189, 1095, 1096, 1098, 1097, 1099, 1100, 1051, 1052, 1053, 1054, 1190, 1101, + 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1111, 1110, 1113, 1112, 1115, 1114, 1116, 1117, + 1119, 1118, 1120, 1121, 1122, 1123, 1124, 1125, 1128, 1127, 1126, 1130, 1131, 1129, 1133, 1132, + 1159, 1160, 1136, 1134, 1135, 1137, 1138, 1149, 1154, 1155, 1153, 1156, 1157, 1158, 1152, 1150, + 1148, 1147, 1145, 1144, 1142, 1139, 1140, 1141, 1143, 1146, 1151, 1164, 1165, 1166, 1162, 1163, + 1161, 1167, 1169, 1168, 1171, 1170, 1175, 1172, 1173, 1174, 1177, 1176, 1179, 1178, 1181, 1180, + 1182, 1183, 1184, 1186, 1185, 1056, 1061, 1052, 1062, 1054, 1007, 1008, 1191, 1007, 1008, 1191, + 1007, 1008, 1191, 1007, 1008, 1191, 1007, 1008, 1191, 1007, 1008, 1191, 1007, 1008, 1191, 1007, + 1008, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1192, 1193, 1194, 1195, 1196, 1197, + 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, + 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, + 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, + 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, + 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, + 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, + 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, + 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, + 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, + 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, + 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, + 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, + 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, + 1406, 1407, 1361, 1362, 1408, 1409, 1410, 1366, 1367, 1411, 1412, 1413, 1414, 1415, 1376, 1416, + 1417, 1386, 1385, 1387, 1361, 1362, 1366, 1367, 1368, 1369, 1370, 1371, 1373, 1372, 1374, 1376, + 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1386, 1385, 1387, 1418, 1419, 1420, 1361, 1362, + 1366, 1367, 1421, 1376, 1416, 1417, 1386, 1385, 1387, 1422, 1423, 1424, 1425, 1426, 1427, 1428, + 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, + 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, + 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, + 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, + 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, + 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, + 1525, 1526, 1527, 1528, 1529, 1531, 1530, 1533, 1532, 1535, 1534, 1536, 1537, 1253, 1254, 1255, + 1256, 1257, 1258, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, + 1551, 1552, 1265, 1266, 1267, 1268, 1269, 1270, 1553, 1554, 1555, 1275, 1276, 1277, 1556, 1284, + 1285, 1286, 1287, 1288, 1289, 1291, 1292, 1557, 1293, 1294, 1558, 1295, 1296, 1297, 1298, 1299, + 1300, 1301, 1302, 1303, 1304, 1305, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1306, 1567, + 1307, 1308, 1309, 1310, 1568, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, + 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, + 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1347, + 1348, 1349, 1350, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1583, 1584, 1584, 1585, 1585, 1586, + 1587, 1588, 1589, 1590, 1590, 1591, 1591, 1592, 1592, 1593, 1593, 1594, 1595, 1596, 1597, 1598, + 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, + 1615, 1616, 1617, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1626, 1627, 1627, + 1628, 1628, 1629, 1629, 1630, 1630, 1631, 1631, 1632, 1632, 1633, 1633, 1634, 1634, 1635, 1635, + 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, + 1652, 1653, 1654, 1655, 1656, 1657, 1657, 1658, 1658, 1659, 1659, 1659, 1660, 1661, 1659, 1662, + 1662, 1200, 1201, 1202, 1203, 1208, 1214, 1204, 1213, 1214, 1213, 1210, 1209, 1210, 1207, 1209, + 1197, 1198, 1205, 1214, 1193, 1194, 1195, 1196, 1199, 1213, 1214, 1213, 1212, 1211, 1206, 1212, + 1211, 1214, 1213, 1214, 1192, 1213, 1214, 1213, 1214, 1213, 1227, 1219, 1226, 1233, 1233, 1215, + 1216, 1217, 1218, 1224, 1232, 1223, 1232, 1225, 1225, 1228, 1220, 1228, 1222, 1230, 1230, 1231, + 1231, 1221, 1229, 1229, 1244, 1252, 1251, 1244, 1247, 1249, 1248, 1250, 1244, 1252, 1251, 1234, + 1235, 1236, 1237, 1244, 1247, 1249, 1248, 1250, 1252, 1251, 1247, 1249, 1248, 1250, 1252, 1251, + 1247, 1249, 1248, 1250, 1234, 1235, 1236, 1237, 1241, 1242, 1243, 1246, 1238, 1239, 1240, 1245, + 1241, 1242, 1243, 1246, 1238, 1239, 1240, 1245, 1271, 1275, 1276, 1279, 1290, 1291, 1292, 1293, + 1304, 1305, 1308, 1311, 1312, 1315, 1316, 1317, 1318, 1319, 1320, 1329, 1330, 1331, 1332, 1355, + 1271, 1275, 1276, 1278, 1290, 1291, 1292, 1293, 1305, 1308, 1311, 1312, 1315, 1316, 1317, 1318, + 1319, 1320, 1329, 1330, 1331, 1332, 1355, 1275, 1276, 1279, 1290, 1291, 1292, 1293, 1305, 1308, + 1311, 1312, 1315, 1316, 1317, 1318, 1319, 1320, 1329, 1330, 1331, 1332, 1355, 1261, 1262, 1263, + 1264, 1275, 1276, 1277, 1278, 1290, 1291, 1292, 1293, 1294, 1303, 1305, 1308, 1311, 1312, 1315, + 1316, 1317, 1318, 1319, 1320, 1329, 1330, 1331, 1332, 1355, 1275, 1276, 1279, 1291, 1292, 1293, + 1304, 1305, 1308, 1311, 1312, 1315, 1316, 1317, 1318, 1319, 1320, 1329, 1330, 1331, 1332, 1351, + 1355, 1275, 1276, 1278, 1291, 1292, 1293, 1305, 1308, 1311, 1312, 1315, 1316, 1317, 1318, 1319, + 1320, 1329, 1330, 1331, 1332, 1351, 1355, 1275, 1276, 1279, 1291, 1292, 1293, 1305, 1308, 1311, + 1312, 1315, 1316, 1317, 1318, 1319, 1320, 1329, 1330, 1331, 1332, 1351, 1355, 1261, 1262, 1263, + 1264, 1275, 1276, 1277, 1278, 1291, 1292, 1293, 1294, 1303, 1305, 1308, 1311, 1312, 1315, 1316, + 1317, 1318, 1319, 1320, 1329, 1330, 1331, 1332, 1351, 1355, 1253, 1254, 1272, 1273, 1274, 1286, + 1287, 1288, 1289, 1297, 1298, 1299, 1300, 1313, 1314, 1321, 1322, 1323, 1324, 1325, 1326, 1327, + 1328, 1345, 1346, 1350, 1353, 1356, 1313, 1314, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, + 1353, 1356, 1272, 1313, 1314, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1353, 1356, 1284, + 1285, 1295, 1296, 1301, 1302, 1313, 1314, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1353, + 1356, 1272, 1273, 1274, 1286, 1287, 1288, 1289, 1297, 1298, 1299, 1300, 1313, 1314, 1321, 1322, + 1323, 1324, 1325, 1326, 1327, 1328, 1345, 1346, 1350, 1352, 1354, 1356, 1313, 1314, 1321, 1322, + 1323, 1324, 1325, 1326, 1327, 1328, 1352, 1354, 1356, 1255, 1256, 1257, 1258, 1267, 1268, 1269, + 1270, 1272, 1313, 1314, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1352, 1354, 1356, 1259, + 1260, 1265, 1266, 1284, 1285, 1295, 1296, 1301, 1302, 1313, 1314, 1321, 1322, 1323, 1324, 1325, + 1326, 1327, 1328, 1352, 1354, 1356, 1280, 1306, 1309, 1333, 1334, 1335, 1336, 1337, 1338, 1339, + 1340, 1341, 1342, 1343, 1344, 1281, 1306, 1309, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, + 1341, 1342, 1343, 1344, 1282, 1307, 1310, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, + 1342, 1343, 1344, 1283, 1307, 1310, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, + 1343, 1344, 1280, 1306, 1309, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, + 1344, 1281, 1306, 1309, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, + 1282, 1307, 1310, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1283, + 1307, 1310, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1347, 1348, + 1349, 1347, 1348, 1349, 1347, 1348, 1349, 1347, 1348, 1349, 1347, 1348, 1349, 1347, 1348, 1349, + 1347, 1348, 1349, 1347, 1348, 1349, 1357, 1359, 1360, 1363, 1367, 1375, 1376, 1377, 1385, 1386, + 1387, 1359, 1360, 1364, 1368, 1375, 1376, 1378, 1385, 1386, 1387, 1359, 1360, 1375, 1376, 1384, + 1385, 1386, 1387, 1359, 1360, 1375, 1376, 1384, 1386, 1385, 1387, 1358, 1365, 1366, 1372, 1383, + 1386, 1385, 1387, 1373, 1383, 1385, 1386, 1387, 1361, 1374, 1385, 1386, 1387, 1362, 1374, 1386, + 1385, 1387, 1367, 1376, 1379, 1385, 1386, 1387, 1369, 1376, 1379, 1386, 1385, 1387, 1376, 1386, + 1385, 1387, 1376, 1385, 1386, 1387, 1366, 1386, 1385, 1387, 1385, 1386, 1387, 1361, 1385, 1386, + 1387, 1362, 1386, 1385, 1387, 1360, 1367, 1375, 1376, 1386, 1385, 1387, 1360, 1371, 1375, 1376, + 1386, 1385, 1387, 1360, 1375, 1376, 1386, 1385, 1387, 1360, 1375, 1376, 1386, 1385, 1387, 1366, + 1381, 1385, 1386, 1387, 1381, 1385, 1386, 1387, 1361, 1382, 1386, 1385, 1387, 1362, 1382, 1386, + 1385, 1387, 1367, 1376, 1385, 1386, 1387, 1376, 1385, 1386, 1387, 1376, 1386, 1385, 1387, 1370, + 1376, 1385, 1386, 1387, 1366, 1380, 1385, 1386, 1387, 1380, 1385, 1386, 1387, 1361, 1385, 1386, + 1387, 1362, 1385, 1386, 1387, 1367, 1376, 1385, 1386, 1387, 1376, 1385, 1386, 1387, 1376, 1385, + 1386, 1387, 1376, 1386, 1385, 1387, 1366, 1416, 1385, 1386, 1387, 1385, 1386, 1387, 1361, 1385, + 1386, 1387, 1362, 1386, 1385, 1387, 1367, 1376, 1386, 1385, 1387, 1376, 1386, 1385, 1387, 1376, + 1385, 1386, 1387, 1376, 1385, 1386, 1387, 1366, 1417, 1385, 1386, 1387, 1385, 1386, 1387, 1361, + 1385, 1386, 1387, 1362, 1385, 1386, 1387, 1367, 1414, 1376, 1385, 1386, 1387, 1376, 1386, 1385, + 1387, 1408, 1414, 1376, 1385, 1386, 1387, 1376, 1385, 1386, 1387, 1366, 1412, 1386, 1385, 1387, + 1386, 1385, 1387, 1361, 1410, 1411, 1385, 1386, 1387, 1362, 1386, 1385, 1387, 1407, 1367, 1415, + 1376, 1386, 1385, 1387, 1376, 1386, 1385, 1387, 1388, 1389, 1390, 1391, 1392, 1394, 1395, 1396, + 1397, 1399, 1400, 1401, 1402, 1409, 1415, 1376, 1386, 1385, 1387, 1393, 1398, 1404, 1405, 1406, + 1376, 1385, 1386, 1387, 1366, 1413, 1386, 1385, 1387, 1386, 1385, 1387, 1403, 1361, 1386, 1385, + 1387, 1362, 1386, 1385, 1387, 1367, 1376, 1377, 1386, 1385, 1387, 1368, 1376, 1378, 1386, 1385, + 1387, 1376, 1384, 1385, 1386, 1387, 1376, 1384, 1385, 1386, 1387, 1366, 1372, 1383, 1386, 1385, + 1387, 1373, 1383, 1385, 1386, 1387, 1361, 1374, 1385, 1386, 1387, 1362, 1374, 1386, 1385, 1387, + 1367, 1376, 1379, 1385, 1386, 1387, 1369, 1376, 1379, 1386, 1385, 1387, 1376, 1385, 1386, 1387, + 1376, 1386, 1385, 1387, 1366, 1385, 1386, 1387, 1385, 1386, 1387, 1361, 1386, 1385, 1387, 1362, + 1386, 1385, 1387, 1367, 1376, 1385, 1386, 1387, 1371, 1376, 1386, 1385, 1387, 1376, 1386, 1385, + 1387, 1376, 1386, 1385, 1387, 1366, 1381, 1386, 1385, 1387, 1381, 1386, 1385, 1387, 1361, 1382, + 1386, 1385, 1387, 1362, 1382, 1386, 1385, 1387, 1367, 1376, 1386, 1385, 1387, 1376, 1385, 1386, + 1387, 1376, 1386, 1385, 1387, 1370, 1376, 1386, 1385, 1387, 1366, 1380, 1385, 1386, 1387, 1380, + 1385, 1386, 1387, 1361, 1385, 1386, 1387, 1362, 1386, 1385, 1387, 1367, 1376, 1385, 1386, 1387, + 1376, 1386, 1385, 1387, 1376, 1385, 1386, 1387, 1376, 1385, 1386, 1387, 1366, 1416, 1386, 1385, + 1387, 1385, 1386, 1387, 1361, 1385, 1386, 1387, 1362, 1385, 1386, 1387, 1367, 1376, 1386, 1385, + 1387, 1376, 1386, 1385, 1387, 1376, 1386, 1385, 1387, 1376, 1386, 1385, 1387, 1366, 1417, 1385, + 1386, 1387, 1385, 1386, 1387, 1361, 1386, 1385, 1387, 1362, 1385, 1386, 1387, 1367, 1376, 1386, + 1385, 1387, 1376, 1386, 1385, 1387, 1376, 1386, 1385, 1387, 1376, 1386, 1385, 1387, 1366, 1385, + 1386, 1387, 1386, 1385, 1387, 1361, 1386, 1385, 1387, 1362, 1385, 1386, 1387, 1418, 1419, 1420, + 1367, 1376, 1386, 1385, 1387, 1376, 1386, 1385, 1387, 1376, 1386, 1385, 1387, 1376, 1386, 1385, + 1387, 1366, 1386, 1385, 1387, 1386, 1385, 1387, 1361, 1386, 1385, 1387, 1362, 1421, 1385, 1386, + 1387, 1425, 1424, 1427, 1426, 1431, 1423, 1422, 1433, 1437, 1430, 1436, 1439, 1438, 1435, 1433, + 1434, 1428, 1429, 1432, 1440, 1441, 1444, 1448, 1503, 1447, 1506, 1443, 1449, 1502, 1446, 1505, + 1442, 1450, 1501, 1445, 1504, 1451, 1457, 1458, 1459, 1460, 1461, 1467, 1473, 1479, 1485, 1491, + 1453, 1454, 1455, 1456, 1462, 1468, 1474, 1480, 1486, 1492, 1463, 1469, 1475, 1481, 1487, 1493, + 1452, 1465, 1471, 1477, 1483, 1489, 1495, 1466, 1472, 1478, 1484, 1490, 1496, 1464, 1470, 1476, + 1482, 1488, 1494, 1497, 1507, 1508, 1500, 1511, 1498, 1509, 1499, 1512, 1510, 1535, 1534, 1525, + 1530, 1532, 1525, 1531, 1533, 1535, 1534, 1530, 1532, 1531, 1533, 1519, 1520, 1521, 1522, 1523, + 1524, 1535, 1513, 1514, 1515, 1516, 1517, 1518, 1526, 1527, 1528, 1529, 1534, 1525, 1530, 1532, + 1525, 1531, 1533, 1519, 1520, 1521, 1522, 1523, 1524, 1535, 1513, 1514, 1515, 1516, 1517, 1518, + 1534, 1530, 1532, 1531, 1533, 1525, 1525, 1526, 1527, 1528, 1529, 1525, 1525, 1552, 1275, 1276, + 1291, 1292, 1293, 1558, 1304, 1305, 1563, 1564, 1565, 1566, 1308, 1568, 1311, 1312, 1315, 1316, + 1317, 1318, 1319, 1320, 1329, 1330, 1331, 1332, 1581, 1275, 1276, 1291, 1292, 1293, 1558, 1305, + 1563, 1564, 1565, 1566, 1308, 1568, 1311, 1312, 1315, 1316, 1317, 1318, 1319, 1320, 1329, 1330, + 1331, 1332, 1581, 1275, 1276, 1291, 1292, 1293, 1558, 1305, 1563, 1564, 1565, 1566, 1308, 1568, + 1311, 1312, 1315, 1316, 1317, 1318, 1319, 1320, 1329, 1330, 1331, 1332, 1581, 1537, 1546, 1547, + 1275, 1276, 1277, 1291, 1292, 1293, 1294, 1558, 1303, 1305, 1563, 1564, 1565, 1566, 1308, 1568, + 1311, 1312, 1315, 1316, 1317, 1318, 1319, 1320, 1329, 1330, 1331, 1332, 1581, 1552, 1275, 1276, + 1291, 1292, 1293, 1558, 1304, 1305, 1563, 1564, 1565, 1566, 1308, 1568, 1311, 1312, 1315, 1316, + 1317, 1318, 1319, 1320, 1329, 1330, 1331, 1332, 1577, 1581, 1275, 1276, 1291, 1292, 1293, 1558, + 1305, 1563, 1564, 1565, 1566, 1308, 1568, 1311, 1312, 1315, 1316, 1317, 1318, 1319, 1320, 1329, + 1330, 1331, 1332, 1577, 1581, 1275, 1276, 1291, 1292, 1293, 1558, 1305, 1563, 1564, 1565, 1566, + 1308, 1568, 1311, 1312, 1315, 1316, 1317, 1318, 1319, 1320, 1329, 1330, 1331, 1332, 1577, 1581, + 1536, 1546, 1547, 1275, 1276, 1277, 1291, 1292, 1293, 1294, 1558, 1303, 1305, 1563, 1564, 1565, + 1566, 1308, 1568, 1311, 1312, 1315, 1316, 1317, 1318, 1319, 1320, 1329, 1330, 1331, 1332, 1577, + 1581, 1253, 1254, 1286, 1287, 1288, 1289, 1297, 1298, 1299, 1300, 1559, 1560, 1561, 1562, 1568, + 1313, 1314, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1573, 1574, 1575, 1576, 1350, 1579, + 1582, 1559, 1560, 1561, 1562, 1568, 1313, 1314, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, + 1579, 1582, 1559, 1560, 1561, 1562, 1568, 1313, 1314, 1321, 1322, 1323, 1324, 1325, 1326, 1327, + 1328, 1579, 1582, 1544, 1545, 1284, 1285, 1295, 1296, 1301, 1302, 1559, 1560, 1561, 1562, 1568, + 1313, 1314, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1569, 1570, 1571, 1572, 1579, 1582, + 1286, 1287, 1288, 1289, 1297, 1298, 1299, 1300, 1559, 1560, 1561, 1562, 1568, 1313, 1314, 1321, + 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1573, 1574, 1575, 1576, 1350, 1578, 1580, 1582, 1559, + 1560, 1561, 1562, 1568, 1313, 1314, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1578, 1580, + 1582, 1255, 1256, 1257, 1258, 1267, 1268, 1269, 1270, 1559, 1560, 1561, 1562, 1568, 1313, 1314, + 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1578, 1580, 1582, 1544, 1545, 1265, 1266, 1284, + 1285, 1295, 1296, 1301, 1302, 1559, 1560, 1561, 1562, 1568, 1313, 1314, 1321, 1322, 1323, 1324, + 1325, 1326, 1327, 1328, 1569, 1570, 1571, 1572, 1578, 1580, 1582, 1556, 1557, 1558, 1306, 1567, + 1309, 1568, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1557, 1558, + 1306, 1567, 1309, 1568, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, + 1558, 1567, 1307, 1310, 1568, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, + 1344, 1558, 1307, 1567, 1310, 1568, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, + 1343, 1344, 1556, 1557, 1558, 1306, 1567, 1309, 1568, 1333, 1334, 1335, 1336, 1337, 1338, 1339, + 1340, 1341, 1342, 1343, 1344, 1557, 1558, 1306, 1567, 1309, 1568, 1333, 1334, 1335, 1336, 1337, + 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1558, 1567, 1307, 1310, 1568, 1333, 1334, 1335, 1336, + 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1558, 1567, 1307, 1310, 1568, 1333, 1334, 1335, + 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1568, 1347, 1348, 1349, 1568, 1347, 1348, + 1349, 1568, 1347, 1348, 1349, 1538, 1539, 1540, 1541, 1542, 1543, 1548, 1549, 1550, 1551, 1553, + 1554, 1555, 1568, 1347, 1348, 1349, 1568, 1347, 1348, 1349, 1568, 1347, 1348, 1349, 1568, 1347, + 1348, 1349, 1538, 1539, 1540, 1541, 1542, 1543, 1548, 1549, 1550, 1551, 1553, 1554, 1555, 1568, + 1347, 1348, 1349, } DECODE_INDEX_A32 := [256]lib.Decode_Index{ @@ -2335,419 +2351,419 @@ DECODE_INDEX_A32 := [256]lib.Decode_Index{ 0xE8 = { 2442, 14}, 0xE9 = { 2456, 11}, 0xEA = { 2467, 10}, - 0xEB = { 2477, 77}, - 0xEC = { 2554, 15}, - 0xED = { 2569, 11}, - 0xEE = { 2580, 12}, - 0xEF = { 2592, 78}, - 0xF0 = { 2670, 3}, - 0xF1 = { 2673, 3}, - 0xF2 = { 2676, 3}, - 0xF3 = { 2679, 3}, - 0xF4 = { 2682, 3}, - 0xF5 = { 2685, 3}, - 0xF6 = { 2688, 3}, - 0xF7 = { 2691, 3}, - 0xF8 = { 2694, 1}, - 0xF9 = { 2695, 1}, - 0xFA = { 2696, 1}, - 0xFB = { 2697, 1}, - 0xFC = { 2698, 1}, - 0xFD = { 2699, 1}, - 0xFE = { 2700, 1}, - 0xFF = { 2701, 1}, + 0xEB = { 2477, 91}, + 0xEC = { 2568, 15}, + 0xED = { 2583, 11}, + 0xEE = { 2594, 12}, + 0xEF = { 2606, 92}, + 0xF0 = { 2698, 3}, + 0xF1 = { 2701, 3}, + 0xF2 = { 2704, 3}, + 0xF3 = { 2707, 3}, + 0xF4 = { 2710, 3}, + 0xF5 = { 2713, 3}, + 0xF6 = { 2716, 3}, + 0xF7 = { 2719, 3}, + 0xF8 = { 2722, 1}, + 0xF9 = { 2723, 1}, + 0xFA = { 2724, 1}, + 0xFB = { 2725, 1}, + 0xFC = { 2726, 1}, + 0xFD = { 2727, 1}, + 0xFE = { 2728, 1}, + 0xFF = { 2729, 1}, } DECODE_INDEX_T32 := [128]lib.Decode_Index{ - 0x74 = { 2702, 23}, - 0x75 = { 2725, 19}, - 0x76 = { 2744, 19}, - 0x77 = { 2763, 104}, - 0x78 = { 2867, 31}, - 0x79 = { 2898, 38}, - 0x7A = { 2936, 23}, - 0x7B = { 2959, 14}, - 0x7C = { 2973, 20}, - 0x7D = { 2993, 71}, - 0x7E = { 3064, 23}, - 0x7F = { 3087, 126}, + 0x74 = { 2730, 23}, + 0x75 = { 2753, 19}, + 0x76 = { 2772, 19}, + 0x77 = { 2791, 104}, + 0x78 = { 2895, 31}, + 0x79 = { 2926, 38}, + 0x7A = { 2964, 23}, + 0x7B = { 2987, 14}, + 0x7C = { 3001, 20}, + 0x7D = { 3021, 71}, + 0x7E = { 3092, 23}, + 0x7F = { 3115, 126}, } DECODE_INDEX_T16 := [64]lib.Decode_Index{ - 0x00 = { 3213, 1}, - 0x01 = { 3214, 1}, - 0x02 = { 3215, 1}, - 0x03 = { 3216, 1}, - 0x04 = { 3217, 1}, - 0x05 = { 3218, 1}, - 0x06 = { 3219, 2}, - 0x07 = { 3221, 2}, - 0x08 = { 3223, 1}, - 0x09 = { 3224, 1}, - 0x0A = { 3225, 1}, - 0x0B = { 3226, 1}, - 0x0C = { 3227, 1}, - 0x0D = { 3228, 1}, - 0x0E = { 3229, 1}, - 0x0F = { 3230, 1}, - 0x10 = { 3231, 16}, - 0x11 = { 3247, 7}, - 0x12 = { 3254, 1}, - 0x13 = { 3255, 1}, - 0x14 = { 3256, 2}, - 0x15 = { 3258, 2}, - 0x16 = { 3260, 2}, - 0x17 = { 3262, 2}, - 0x18 = { 3264, 1}, - 0x19 = { 3265, 1}, - 0x1A = { 3266, 1}, - 0x1B = { 3267, 1}, - 0x1C = { 3268, 1}, - 0x1D = { 3269, 1}, - 0x1E = { 3270, 1}, - 0x1F = { 3271, 1}, - 0x20 = { 3272, 1}, - 0x21 = { 3273, 1}, - 0x22 = { 3274, 1}, - 0x23 = { 3275, 1}, - 0x24 = { 3276, 1}, - 0x25 = { 3277, 1}, - 0x26 = { 3278, 1}, - 0x27 = { 3279, 1}, - 0x28 = { 3280, 1}, - 0x29 = { 3281, 1}, - 0x2A = { 3282, 1}, - 0x2B = { 3283, 1}, - 0x2C = { 3284, 7}, - 0x2D = { 3291, 2}, - 0x2E = { 3293, 4}, - 0x2F = { 3297, 8}, - 0x30 = { 3305, 1}, - 0x31 = { 3306, 1}, - 0x32 = { 3307, 1}, - 0x33 = { 3308, 1}, - 0x34 = { 3309, 1}, - 0x35 = { 3310, 1}, - 0x36 = { 3311, 1}, - 0x37 = { 3312, 3}, - 0x38 = { 3315, 1}, - 0x39 = { 3316, 1}, + 0x00 = { 3241, 1}, + 0x01 = { 3242, 1}, + 0x02 = { 3243, 1}, + 0x03 = { 3244, 1}, + 0x04 = { 3245, 1}, + 0x05 = { 3246, 1}, + 0x06 = { 3247, 2}, + 0x07 = { 3249, 2}, + 0x08 = { 3251, 1}, + 0x09 = { 3252, 1}, + 0x0A = { 3253, 1}, + 0x0B = { 3254, 1}, + 0x0C = { 3255, 1}, + 0x0D = { 3256, 1}, + 0x0E = { 3257, 1}, + 0x0F = { 3258, 1}, + 0x10 = { 3259, 16}, + 0x11 = { 3275, 7}, + 0x12 = { 3282, 1}, + 0x13 = { 3283, 1}, + 0x14 = { 3284, 2}, + 0x15 = { 3286, 2}, + 0x16 = { 3288, 2}, + 0x17 = { 3290, 2}, + 0x18 = { 3292, 1}, + 0x19 = { 3293, 1}, + 0x1A = { 3294, 1}, + 0x1B = { 3295, 1}, + 0x1C = { 3296, 1}, + 0x1D = { 3297, 1}, + 0x1E = { 3298, 1}, + 0x1F = { 3299, 1}, + 0x20 = { 3300, 1}, + 0x21 = { 3301, 1}, + 0x22 = { 3302, 1}, + 0x23 = { 3303, 1}, + 0x24 = { 3304, 1}, + 0x25 = { 3305, 1}, + 0x26 = { 3306, 1}, + 0x27 = { 3307, 1}, + 0x28 = { 3308, 1}, + 0x29 = { 3309, 1}, + 0x2A = { 3310, 1}, + 0x2B = { 3311, 1}, + 0x2C = { 3312, 7}, + 0x2D = { 3319, 2}, + 0x2E = { 3321, 4}, + 0x2F = { 3325, 8}, + 0x30 = { 3333, 1}, + 0x31 = { 3334, 1}, + 0x32 = { 3335, 1}, + 0x33 = { 3336, 1}, + 0x34 = { 3337, 1}, + 0x35 = { 3338, 1}, + 0x36 = { 3339, 1}, + 0x37 = { 3340, 3}, + 0x38 = { 3343, 1}, + 0x39 = { 3344, 1}, } DECODE_INDEX_T32_SUB := [4096]lib.Decode_Index{ - 0xE84 = { 3317, 6}, - 0xE85 = { 3323, 2}, - 0xE86 = { 3325, 1}, - 0xE87 = { 3326, 1}, - 0xE88 = { 3327, 1}, - 0xE89 = { 3328, 1}, - 0xE8A = { 3329, 1}, - 0xE8B = { 3330, 2}, - 0xE8C = { 3332, 4}, - 0xE8D = { 3336, 6}, - 0xE8E = { 3342, 1}, - 0xE8F = { 3343, 1}, - 0xE90 = { 3344, 1}, - 0xE91 = { 3345, 1}, - 0xE92 = { 3346, 2}, - 0xE93 = { 3348, 1}, - 0xE94 = { 3349, 1}, - 0xE95 = { 3350, 1}, - 0xE96 = { 3351, 1}, - 0xE97 = { 3352, 2}, - 0xE9C = { 3354, 1}, - 0xE9D = { 3355, 1}, - 0xE9E = { 3356, 1}, - 0xE9F = { 3357, 1}, - 0xEA0 = { 3358, 1}, - 0xEA1 = { 3359, 2}, - 0xEA2 = { 3361, 1}, - 0xEA3 = { 3362, 1}, - 0xEA4 = { 3363, 6}, - 0xEA5 = { 3369, 2}, - 0xEA6 = { 3371, 1}, - 0xEA7 = { 3372, 1}, - 0xEA8 = { 3373, 1}, - 0xEA9 = { 3374, 2}, - 0xEB1 = { 3376, 1}, - 0xEB4 = { 3377, 1}, - 0xEB5 = { 3378, 1}, - 0xEB6 = { 3379, 1}, - 0xEB7 = { 3380, 1}, - 0xEBB = { 3381, 1}, - 0xEBC = { 3382, 1}, - 0xEBD = { 3383, 1}, - 0xEC0 = { 3384, 2}, - 0xEC1 = { 3386, 1}, - 0xEC2 = { 3387, 3}, - 0xEC3 = { 3390, 2}, - 0xEC4 = { 3392, 2}, - 0xEC5 = { 3394, 1}, - 0xEC6 = { 3395, 7}, - 0xEC7 = { 3402, 2}, - 0xEC8 = { 3404, 1}, - 0xEC9 = { 3405, 1}, - 0xECA = { 3406, 2}, - 0xECB = { 3408, 2}, - 0xECC = { 3410, 1}, - 0xECD = { 3411, 1}, - 0xECE = { 3412, 2}, - 0xECF = { 3414, 2}, - 0xED6 = { 3416, 4}, - 0xED8 = { 3420, 4}, - 0xED9 = { 3424, 4}, - 0xEDC = { 3428, 4}, - 0xEDD = { 3432, 4}, - 0xEE0 = { 3436, 24}, - 0xEE1 = { 3460, 23}, - 0xEE2 = { 3483, 22}, - 0xEE3 = { 3505, 29}, - 0xEE4 = { 3534, 23}, - 0xEE5 = { 3557, 22}, - 0xEE6 = { 3579, 22}, - 0xEE7 = { 3601, 29}, - 0xEE8 = { 3630, 28}, - 0xEE9 = { 3658, 12}, - 0xEEA = { 3670, 13}, - 0xEEB = { 3683, 18}, - 0xEEC = { 3701, 27}, - 0xEED = { 3728, 13}, - 0xEEE = { 3741, 22}, - 0xEEF = { 3763, 23}, - 0xEF0 = { 3786, 15}, - 0xEF1 = { 3801, 15}, - 0xEF2 = { 3816, 15}, - 0xEF3 = { 3831, 15}, - 0xEF4 = { 3846, 15}, - 0xEF5 = { 3861, 15}, - 0xEF6 = { 3876, 15}, - 0xEF7 = { 3891, 15}, - 0xEF8 = { 3906, 3}, - 0xEF9 = { 3909, 3}, - 0xEFA = { 3912, 3}, - 0xEFB = { 3915, 3}, - 0xEFC = { 3918, 3}, - 0xEFD = { 3921, 3}, - 0xEFE = { 3924, 3}, - 0xEFF = { 3927, 3}, - 0xF00 = { 3930, 11}, - 0xF01 = { 3941, 10}, - 0xF02 = { 3951, 8}, - 0xF03 = { 3959, 8}, - 0xF04 = { 3967, 8}, - 0xF05 = { 3975, 5}, - 0xF06 = { 3980, 5}, - 0xF07 = { 3985, 5}, - 0xF08 = { 3990, 6}, - 0xF09 = { 3996, 6}, - 0xF0A = { 4002, 4}, - 0xF0B = { 4006, 4}, - 0xF0C = { 4010, 4}, - 0xF0D = { 4014, 3}, - 0xF0E = { 4017, 4}, - 0xF0F = { 4021, 4}, - 0xF10 = { 4025, 7}, - 0xF11 = { 4032, 7}, - 0xF12 = { 4039, 6}, - 0xF13 = { 4045, 6}, - 0xF14 = { 4051, 5}, - 0xF15 = { 4056, 4}, - 0xF16 = { 4060, 5}, - 0xF17 = { 4065, 5}, - 0xF18 = { 4070, 5}, - 0xF19 = { 4075, 4}, - 0xF1A = { 4079, 4}, - 0xF1B = { 4083, 5}, - 0xF1C = { 4088, 5}, - 0xF1D = { 4093, 4}, - 0xF1E = { 4097, 4}, - 0xF1F = { 4101, 4}, - 0xF20 = { 4105, 5}, - 0xF21 = { 4110, 4}, - 0xF22 = { 4114, 4}, - 0xF23 = { 4118, 4}, - 0xF24 = { 4122, 5}, - 0xF25 = { 4127, 3}, - 0xF26 = { 4130, 4}, - 0xF27 = { 4134, 4}, - 0xF28 = { 4138, 5}, - 0xF29 = { 4143, 4}, - 0xF2A = { 4147, 4}, - 0xF2B = { 4151, 4}, - 0xF2C = { 4155, 5}, - 0xF2D = { 4160, 3}, - 0xF2E = { 4163, 4}, - 0xF2F = { 4167, 4}, - 0xF30 = { 4171, 6}, - 0xF31 = { 4177, 4}, - 0xF32 = { 4181, 6}, - 0xF33 = { 4187, 4}, - 0xF34 = { 4191, 5}, - 0xF35 = { 4196, 3}, - 0xF36 = { 4199, 6}, - 0xF37 = { 4205, 4}, - 0xF38 = { 4209, 7}, - 0xF39 = { 4216, 4}, - 0xF3A = { 4220, 19}, - 0xF3B = { 4239, 9}, - 0xF3C = { 4248, 5}, - 0xF3D = { 4253, 3}, - 0xF3E = { 4256, 5}, - 0xF3F = { 4261, 4}, - 0xF40 = { 4265, 6}, - 0xF41 = { 4271, 6}, - 0xF42 = { 4277, 5}, - 0xF43 = { 4282, 5}, - 0xF44 = { 4287, 6}, - 0xF45 = { 4293, 5}, - 0xF46 = { 4298, 5}, - 0xF47 = { 4303, 5}, - 0xF48 = { 4308, 6}, - 0xF49 = { 4314, 6}, - 0xF4A = { 4320, 4}, - 0xF4B = { 4324, 4}, - 0xF4C = { 4328, 4}, - 0xF4D = { 4332, 3}, - 0xF4E = { 4335, 4}, - 0xF4F = { 4339, 4}, - 0xF50 = { 4343, 5}, - 0xF51 = { 4348, 5}, - 0xF52 = { 4353, 4}, - 0xF53 = { 4357, 4}, - 0xF54 = { 4361, 5}, - 0xF55 = { 4366, 4}, - 0xF56 = { 4370, 5}, - 0xF57 = { 4375, 5}, - 0xF58 = { 4380, 5}, - 0xF59 = { 4385, 4}, - 0xF5A = { 4389, 4}, - 0xF5B = { 4393, 5}, - 0xF5C = { 4398, 5}, - 0xF5D = { 4403, 4}, - 0xF5E = { 4407, 4}, - 0xF5F = { 4411, 4}, - 0xF60 = { 4415, 5}, - 0xF61 = { 4420, 4}, - 0xF62 = { 4424, 4}, - 0xF63 = { 4428, 4}, - 0xF64 = { 4432, 5}, - 0xF65 = { 4437, 3}, - 0xF66 = { 4440, 4}, - 0xF67 = { 4444, 4}, - 0xF68 = { 4448, 5}, - 0xF69 = { 4453, 4}, - 0xF6A = { 4457, 4}, - 0xF6B = { 4461, 4}, - 0xF6C = { 4465, 5}, - 0xF6D = { 4470, 3}, - 0xF6E = { 4473, 4}, - 0xF6F = { 4477, 4}, - 0xF70 = { 4481, 5}, - 0xF71 = { 4486, 4}, - 0xF72 = { 4490, 4}, - 0xF73 = { 4494, 4}, - 0xF74 = { 4498, 4}, - 0xF75 = { 4502, 3}, - 0xF76 = { 4505, 4}, - 0xF77 = { 4509, 4}, - 0xF78 = { 4513, 8}, - 0xF79 = { 4521, 4}, - 0xF7A = { 4525, 4}, - 0xF7B = { 4529, 4}, - 0xF7C = { 4533, 4}, - 0xF7D = { 4537, 3}, - 0xF7E = { 4540, 4}, - 0xF7F = { 4544, 5}, - 0xF80 = { 4549, 1}, - 0xF81 = { 4550, 1}, - 0xF82 = { 4551, 1}, - 0xF83 = { 4552, 2}, - 0xF84 = { 4554, 1}, - 0xF85 = { 4555, 2}, - 0xF88 = { 4557, 1}, - 0xF89 = { 4558, 2}, - 0xF8A = { 4560, 1}, - 0xF8B = { 4561, 1}, - 0xF8C = { 4562, 1}, - 0xF8D = { 4563, 2}, - 0xF91 = { 4565, 1}, - 0xF93 = { 4566, 1}, - 0xF99 = { 4567, 2}, - 0xF9B = { 4569, 1}, - 0xFA0 = { 4570, 3}, - 0xFA1 = { 4573, 2}, - 0xFA2 = { 4575, 3}, - 0xFA3 = { 4578, 2}, - 0xFA4 = { 4580, 3}, - 0xFA5 = { 4583, 2}, - 0xFA6 = { 4585, 1}, - 0xFA8 = { 4586, 10}, - 0xFA9 = { 4596, 10}, - 0xFAA = { 4606, 6}, - 0xFAB = { 4612, 1}, - 0xFAC = { 4613, 6}, - 0xFAD = { 4619, 6}, - 0xFAE = { 4625, 6}, - 0xFB0 = { 4631, 3}, - 0xFB5 = { 4634, 1}, - 0xFB8 = { 4635, 1}, - 0xFB9 = { 4636, 1}, - 0xFBA = { 4637, 1}, - 0xFBB = { 4638, 1}, - 0xFBC = { 4639, 1}, - 0xFBE = { 4640, 1}, - 0xFC0 = { 4641, 1}, - 0xFC1 = { 4642, 1}, - 0xFC2 = { 4643, 3}, - 0xFC3 = { 4646, 3}, - 0xFC4 = { 4649, 1}, - 0xFC5 = { 4650, 1}, - 0xFC6 = { 4651, 2}, - 0xFC7 = { 4653, 2}, - 0xFC8 = { 4655, 7}, - 0xFC9 = { 4662, 11}, - 0xFCA = { 4673, 3}, - 0xFCB = { 4676, 3}, - 0xFCC = { 4679, 7}, - 0xFCD = { 4686, 7}, - 0xFCE = { 4693, 2}, - 0xFCF = { 4695, 2}, - 0xFD2 = { 4697, 1}, - 0xFD3 = { 4698, 1}, - 0xFD9 = { 4699, 4}, - 0xFDA = { 4703, 1}, - 0xFDB = { 4704, 1}, - 0xFE0 = { 4705, 28}, - 0xFE1 = { 4733, 26}, - 0xFE2 = { 4759, 26}, - 0xFE3 = { 4785, 32}, - 0xFE4 = { 4817, 29}, - 0xFE5 = { 4846, 27}, - 0xFE6 = { 4873, 27}, - 0xFE7 = { 4900, 33}, - 0xFE8 = { 4933, 32}, - 0xFE9 = { 4965, 17}, - 0xFEA = { 4982, 17}, - 0xFEB = { 4999, 29}, - 0xFEC = { 5028, 31}, - 0xFED = { 5059, 18}, - 0xFEE = { 5077, 26}, - 0xFEF = { 5103, 32}, - 0xFF0 = { 5135, 19}, - 0xFF1 = { 5154, 18}, - 0xFF2 = { 5172, 17}, - 0xFF3 = { 5189, 17}, - 0xFF4 = { 5206, 19}, - 0xFF5 = { 5225, 18}, - 0xFF6 = { 5243, 17}, - 0xFF7 = { 5260, 17}, - 0xFF8 = { 5277, 4}, - 0xFF9 = { 5281, 4}, - 0xFFA = { 5285, 4}, - 0xFFB = { 5289, 17}, - 0xFFC = { 5306, 4}, - 0xFFD = { 5310, 4}, - 0xFFE = { 5314, 4}, - 0xFFF = { 5318, 17}, + 0xE84 = { 3345, 6}, + 0xE85 = { 3351, 2}, + 0xE86 = { 3353, 1}, + 0xE87 = { 3354, 1}, + 0xE88 = { 3355, 1}, + 0xE89 = { 3356, 1}, + 0xE8A = { 3357, 1}, + 0xE8B = { 3358, 2}, + 0xE8C = { 3360, 4}, + 0xE8D = { 3364, 6}, + 0xE8E = { 3370, 1}, + 0xE8F = { 3371, 1}, + 0xE90 = { 3372, 1}, + 0xE91 = { 3373, 1}, + 0xE92 = { 3374, 2}, + 0xE93 = { 3376, 1}, + 0xE94 = { 3377, 1}, + 0xE95 = { 3378, 1}, + 0xE96 = { 3379, 1}, + 0xE97 = { 3380, 2}, + 0xE9C = { 3382, 1}, + 0xE9D = { 3383, 1}, + 0xE9E = { 3384, 1}, + 0xE9F = { 3385, 1}, + 0xEA0 = { 3386, 1}, + 0xEA1 = { 3387, 2}, + 0xEA2 = { 3389, 1}, + 0xEA3 = { 3390, 1}, + 0xEA4 = { 3391, 6}, + 0xEA5 = { 3397, 2}, + 0xEA6 = { 3399, 1}, + 0xEA7 = { 3400, 1}, + 0xEA8 = { 3401, 1}, + 0xEA9 = { 3402, 2}, + 0xEB1 = { 3404, 1}, + 0xEB4 = { 3405, 1}, + 0xEB5 = { 3406, 1}, + 0xEB6 = { 3407, 1}, + 0xEB7 = { 3408, 1}, + 0xEBB = { 3409, 1}, + 0xEBC = { 3410, 1}, + 0xEBD = { 3411, 1}, + 0xEC0 = { 3412, 2}, + 0xEC1 = { 3414, 1}, + 0xEC2 = { 3415, 3}, + 0xEC3 = { 3418, 2}, + 0xEC4 = { 3420, 2}, + 0xEC5 = { 3422, 1}, + 0xEC6 = { 3423, 7}, + 0xEC7 = { 3430, 2}, + 0xEC8 = { 3432, 1}, + 0xEC9 = { 3433, 1}, + 0xECA = { 3434, 2}, + 0xECB = { 3436, 2}, + 0xECC = { 3438, 1}, + 0xECD = { 3439, 1}, + 0xECE = { 3440, 2}, + 0xECF = { 3442, 2}, + 0xED6 = { 3444, 4}, + 0xED8 = { 3448, 4}, + 0xED9 = { 3452, 4}, + 0xEDC = { 3456, 4}, + 0xEDD = { 3460, 4}, + 0xEE0 = { 3464, 24}, + 0xEE1 = { 3488, 23}, + 0xEE2 = { 3511, 22}, + 0xEE3 = { 3533, 29}, + 0xEE4 = { 3562, 23}, + 0xEE5 = { 3585, 22}, + 0xEE6 = { 3607, 22}, + 0xEE7 = { 3629, 29}, + 0xEE8 = { 3658, 28}, + 0xEE9 = { 3686, 12}, + 0xEEA = { 3698, 13}, + 0xEEB = { 3711, 18}, + 0xEEC = { 3729, 27}, + 0xEED = { 3756, 13}, + 0xEEE = { 3769, 22}, + 0xEEF = { 3791, 23}, + 0xEF0 = { 3814, 15}, + 0xEF1 = { 3829, 15}, + 0xEF2 = { 3844, 15}, + 0xEF3 = { 3859, 15}, + 0xEF4 = { 3874, 15}, + 0xEF5 = { 3889, 15}, + 0xEF6 = { 3904, 15}, + 0xEF7 = { 3919, 15}, + 0xEF8 = { 3934, 3}, + 0xEF9 = { 3937, 3}, + 0xEFA = { 3940, 3}, + 0xEFB = { 3943, 3}, + 0xEFC = { 3946, 3}, + 0xEFD = { 3949, 3}, + 0xEFE = { 3952, 3}, + 0xEFF = { 3955, 3}, + 0xF00 = { 3958, 11}, + 0xF01 = { 3969, 10}, + 0xF02 = { 3979, 8}, + 0xF03 = { 3987, 8}, + 0xF04 = { 3995, 8}, + 0xF05 = { 4003, 5}, + 0xF06 = { 4008, 5}, + 0xF07 = { 4013, 5}, + 0xF08 = { 4018, 6}, + 0xF09 = { 4024, 6}, + 0xF0A = { 4030, 4}, + 0xF0B = { 4034, 4}, + 0xF0C = { 4038, 4}, + 0xF0D = { 4042, 3}, + 0xF0E = { 4045, 4}, + 0xF0F = { 4049, 4}, + 0xF10 = { 4053, 7}, + 0xF11 = { 4060, 7}, + 0xF12 = { 4067, 6}, + 0xF13 = { 4073, 6}, + 0xF14 = { 4079, 5}, + 0xF15 = { 4084, 4}, + 0xF16 = { 4088, 5}, + 0xF17 = { 4093, 5}, + 0xF18 = { 4098, 5}, + 0xF19 = { 4103, 4}, + 0xF1A = { 4107, 4}, + 0xF1B = { 4111, 5}, + 0xF1C = { 4116, 5}, + 0xF1D = { 4121, 4}, + 0xF1E = { 4125, 4}, + 0xF1F = { 4129, 4}, + 0xF20 = { 4133, 5}, + 0xF21 = { 4138, 4}, + 0xF22 = { 4142, 4}, + 0xF23 = { 4146, 4}, + 0xF24 = { 4150, 5}, + 0xF25 = { 4155, 3}, + 0xF26 = { 4158, 4}, + 0xF27 = { 4162, 4}, + 0xF28 = { 4166, 5}, + 0xF29 = { 4171, 4}, + 0xF2A = { 4175, 4}, + 0xF2B = { 4179, 4}, + 0xF2C = { 4183, 5}, + 0xF2D = { 4188, 3}, + 0xF2E = { 4191, 4}, + 0xF2F = { 4195, 4}, + 0xF30 = { 4199, 6}, + 0xF31 = { 4205, 4}, + 0xF32 = { 4209, 6}, + 0xF33 = { 4215, 4}, + 0xF34 = { 4219, 5}, + 0xF35 = { 4224, 3}, + 0xF36 = { 4227, 6}, + 0xF37 = { 4233, 4}, + 0xF38 = { 4237, 7}, + 0xF39 = { 4244, 4}, + 0xF3A = { 4248, 19}, + 0xF3B = { 4267, 9}, + 0xF3C = { 4276, 5}, + 0xF3D = { 4281, 3}, + 0xF3E = { 4284, 5}, + 0xF3F = { 4289, 4}, + 0xF40 = { 4293, 6}, + 0xF41 = { 4299, 6}, + 0xF42 = { 4305, 5}, + 0xF43 = { 4310, 5}, + 0xF44 = { 4315, 6}, + 0xF45 = { 4321, 5}, + 0xF46 = { 4326, 5}, + 0xF47 = { 4331, 5}, + 0xF48 = { 4336, 6}, + 0xF49 = { 4342, 6}, + 0xF4A = { 4348, 4}, + 0xF4B = { 4352, 4}, + 0xF4C = { 4356, 4}, + 0xF4D = { 4360, 3}, + 0xF4E = { 4363, 4}, + 0xF4F = { 4367, 4}, + 0xF50 = { 4371, 5}, + 0xF51 = { 4376, 5}, + 0xF52 = { 4381, 4}, + 0xF53 = { 4385, 4}, + 0xF54 = { 4389, 5}, + 0xF55 = { 4394, 4}, + 0xF56 = { 4398, 5}, + 0xF57 = { 4403, 5}, + 0xF58 = { 4408, 5}, + 0xF59 = { 4413, 4}, + 0xF5A = { 4417, 4}, + 0xF5B = { 4421, 5}, + 0xF5C = { 4426, 5}, + 0xF5D = { 4431, 4}, + 0xF5E = { 4435, 4}, + 0xF5F = { 4439, 4}, + 0xF60 = { 4443, 5}, + 0xF61 = { 4448, 4}, + 0xF62 = { 4452, 4}, + 0xF63 = { 4456, 4}, + 0xF64 = { 4460, 5}, + 0xF65 = { 4465, 3}, + 0xF66 = { 4468, 4}, + 0xF67 = { 4472, 4}, + 0xF68 = { 4476, 5}, + 0xF69 = { 4481, 4}, + 0xF6A = { 4485, 4}, + 0xF6B = { 4489, 4}, + 0xF6C = { 4493, 5}, + 0xF6D = { 4498, 3}, + 0xF6E = { 4501, 4}, + 0xF6F = { 4505, 4}, + 0xF70 = { 4509, 5}, + 0xF71 = { 4514, 4}, + 0xF72 = { 4518, 4}, + 0xF73 = { 4522, 4}, + 0xF74 = { 4526, 4}, + 0xF75 = { 4530, 3}, + 0xF76 = { 4533, 4}, + 0xF77 = { 4537, 4}, + 0xF78 = { 4541, 8}, + 0xF79 = { 4549, 4}, + 0xF7A = { 4553, 4}, + 0xF7B = { 4557, 4}, + 0xF7C = { 4561, 4}, + 0xF7D = { 4565, 3}, + 0xF7E = { 4568, 4}, + 0xF7F = { 4572, 5}, + 0xF80 = { 4577, 1}, + 0xF81 = { 4578, 1}, + 0xF82 = { 4579, 1}, + 0xF83 = { 4580, 2}, + 0xF84 = { 4582, 1}, + 0xF85 = { 4583, 2}, + 0xF88 = { 4585, 1}, + 0xF89 = { 4586, 2}, + 0xF8A = { 4588, 1}, + 0xF8B = { 4589, 1}, + 0xF8C = { 4590, 1}, + 0xF8D = { 4591, 2}, + 0xF91 = { 4593, 1}, + 0xF93 = { 4594, 1}, + 0xF99 = { 4595, 2}, + 0xF9B = { 4597, 1}, + 0xFA0 = { 4598, 3}, + 0xFA1 = { 4601, 2}, + 0xFA2 = { 4603, 3}, + 0xFA3 = { 4606, 2}, + 0xFA4 = { 4608, 3}, + 0xFA5 = { 4611, 2}, + 0xFA6 = { 4613, 1}, + 0xFA8 = { 4614, 10}, + 0xFA9 = { 4624, 10}, + 0xFAA = { 4634, 6}, + 0xFAB = { 4640, 1}, + 0xFAC = { 4641, 6}, + 0xFAD = { 4647, 6}, + 0xFAE = { 4653, 6}, + 0xFB0 = { 4659, 3}, + 0xFB5 = { 4662, 1}, + 0xFB8 = { 4663, 1}, + 0xFB9 = { 4664, 1}, + 0xFBA = { 4665, 1}, + 0xFBB = { 4666, 1}, + 0xFBC = { 4667, 1}, + 0xFBE = { 4668, 1}, + 0xFC0 = { 4669, 1}, + 0xFC1 = { 4670, 1}, + 0xFC2 = { 4671, 3}, + 0xFC3 = { 4674, 3}, + 0xFC4 = { 4677, 1}, + 0xFC5 = { 4678, 1}, + 0xFC6 = { 4679, 2}, + 0xFC7 = { 4681, 2}, + 0xFC8 = { 4683, 7}, + 0xFC9 = { 4690, 11}, + 0xFCA = { 4701, 3}, + 0xFCB = { 4704, 3}, + 0xFCC = { 4707, 7}, + 0xFCD = { 4714, 7}, + 0xFCE = { 4721, 2}, + 0xFCF = { 4723, 2}, + 0xFD2 = { 4725, 1}, + 0xFD3 = { 4726, 1}, + 0xFD9 = { 4727, 4}, + 0xFDA = { 4731, 1}, + 0xFDB = { 4732, 1}, + 0xFE0 = { 4733, 28}, + 0xFE1 = { 4761, 26}, + 0xFE2 = { 4787, 26}, + 0xFE3 = { 4813, 32}, + 0xFE4 = { 4845, 29}, + 0xFE5 = { 4874, 27}, + 0xFE6 = { 4901, 27}, + 0xFE7 = { 4928, 33}, + 0xFE8 = { 4961, 32}, + 0xFE9 = { 4993, 17}, + 0xFEA = { 5010, 17}, + 0xFEB = { 5027, 29}, + 0xFEC = { 5056, 31}, + 0xFED = { 5087, 18}, + 0xFEE = { 5105, 26}, + 0xFEF = { 5131, 32}, + 0xFF0 = { 5163, 19}, + 0xFF1 = { 5182, 18}, + 0xFF2 = { 5200, 17}, + 0xFF3 = { 5217, 17}, + 0xFF4 = { 5234, 19}, + 0xFF5 = { 5253, 18}, + 0xFF6 = { 5271, 17}, + 0xFF7 = { 5288, 17}, + 0xFF8 = { 5305, 4}, + 0xFF9 = { 5309, 4}, + 0xFFA = { 5313, 4}, + 0xFFB = { 5317, 17}, + 0xFFC = { 5334, 4}, + 0xFFD = { 5338, 4}, + 0xFFE = { 5342, 4}, + 0xFFF = { 5346, 17}, } diff --git a/core/rexcode/isa/arm32/tablegen/generated/encode_tables.odin b/core/rexcode/isa/arm32/tablegen/generated/encode_tables.odin index b6f98c6fc..f8d26009b 100644 --- a/core/rexcode/isa/arm32/tablegen/generated/encode_tables.odin +++ b/core/rexcode/isa/arm32/tablegen/generated/encode_tables.odin @@ -8,7 +8,7 @@ package rexcode_arm32_generated import lib "../.." @(rodata) -ENCODE_FORMS := [1649]lib.Encoding{ +ENCODE_FORMS := [1663]lib.Encoding{ // .AND { .AND, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02000000, 0x0FE00000, .BASE, .A32, {}, {.NONE,.NONE} }, { .AND, {.GPR,.GPR,.GPR_SHIFTED,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000000, 0x0FE00010, .BASE, .A32, {}, {.NONE,.NONE} }, @@ -171,14 +171,14 @@ ENCODE_FORMS := [1649]lib.Encoding{ { .LSL, {.GPR,.GPR,.IMM5,.NONE}, {.RD_T32,.RM_T32,.NONE,.NONE}, 0xEA4F0000, 0xFFFF8030, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, { .LSL, {.GPR,.GPR,.GPR,.NONE}, {.RD_T32,.RN_T32,.RM_T32,.NONE}, 0xFA00F000, 0xFFF0F0F0, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, // .LSR - { .LSR, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RM_A32,.A32_IMM_SHIFT,.NONE}, 0x01A00020, 0x0FFF0070, .BASE, .A32, {}, {.NONE,.NONE} }, + { .LSR, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RM_A32,.A32_IMM_SHIFT_32,.NONE}, 0x01A00020, 0x0FFF0070, .BASE, .A32, {}, {.NONE,.NONE} }, { .LSR, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RM_A32,.RS_A32,.NONE}, 0x01A00030, 0x0FFF00F0, .BASE, .A32, {}, {.NONE,.NONE} }, { .LSR, {.GPR_LOW,.GPR_LOW,.IMM5,.NONE}, {.RD_T16_LO,.RM_T16_LO,.NONE,.NONE}, 0x00000800, 0x0000F800, .THUMB, .T32, {}, {.NONE,.NONE} }, { .LSR, {.GPR_LOW,.GPR_LOW,.NONE,.NONE}, {.RD_T16_LO,.RM_T16_LO,.NONE,.NONE}, 0x000040C0, 0x0000FFC0, .THUMB, .T32, {}, {.NONE,.NONE} }, { .LSR, {.GPR,.GPR,.IMM5,.NONE}, {.RD_T32,.RM_T32,.NONE,.NONE}, 0xEA4F0010, 0xFFFF8030, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, { .LSR, {.GPR,.GPR,.GPR,.NONE}, {.RD_T32,.RN_T32,.RM_T32,.NONE}, 0xFA20F000, 0xFFF0F0F0, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, // .ASR - { .ASR, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RM_A32,.A32_IMM_SHIFT,.NONE}, 0x01A00040, 0x0FFF0070, .BASE, .A32, {}, {.NONE,.NONE} }, + { .ASR, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RM_A32,.A32_IMM_SHIFT_32,.NONE}, 0x01A00040, 0x0FFF0070, .BASE, .A32, {}, {.NONE,.NONE} }, { .ASR, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RM_A32,.RS_A32,.NONE}, 0x01A00050, 0x0FFF00F0, .BASE, .A32, {}, {.NONE,.NONE} }, { .ASR, {.GPR_LOW,.GPR_LOW,.IMM5,.NONE}, {.RD_T16_LO,.RM_T16_LO,.NONE,.NONE}, 0x00001000, 0x0000F800, .THUMB, .T32, {}, {.NONE,.NONE} }, { .ASR, {.GPR_LOW,.GPR_LOW,.NONE,.NONE}, {.RD_T16_LO,.RM_T16_LO,.NONE,.NONE}, 0x00004100, 0x0000FFC0, .THUMB, .T32, {}, {.NONE,.NONE} }, @@ -286,14 +286,14 @@ ENCODE_FORMS := [1649]lib.Encoding{ { .SSAT, {.GPR,.IMM4_SAT,.GPR_SHIFTED,.NONE}, {.RD,.SAT_IMM5,.RM_A32,.NONE}, 0x06A00010, 0x0FE00030, .V6, .A32, {}, {.NONE,.NONE} }, { .SSAT, {.GPR,.IMM4_SAT,.GPR_SHIFTED,.NONE}, {.RD_T32,.SAT_IMM5_T32,.RN_T32,.NONE}, 0xF3000000, 0xFFD08020, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, // .USAT - { .USAT, {.GPR,.IMM4_SAT,.GPR_SHIFTED,.NONE}, {.RD,.SAT_IMM5,.RM_A32,.NONE}, 0x06E00010, 0x0FE00030, .V6, .A32, {}, {.NONE,.NONE} }, - { .USAT, {.GPR,.IMM4_SAT,.GPR_SHIFTED,.NONE}, {.RD_T32,.SAT_IMM5_T32,.RN_T32,.NONE}, 0xF3800000, 0xFFD08020, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, + { .USAT, {.GPR,.IMM4_SAT,.GPR_SHIFTED,.NONE}, {.RD,.SAT_IMM5_U,.RM_A32,.NONE}, 0x06E00010, 0x0FE00030, .V6, .A32, {}, {.NONE,.NONE} }, + { .USAT, {.GPR,.IMM4_SAT,.GPR_SHIFTED,.NONE}, {.RD_T32,.SAT_IMM5_U_T32,.RN_T32,.NONE}, 0xF3800000, 0xFFD08020, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, // .SSAT16 { .SSAT16, {.GPR,.IMM4_SAT,.GPR,.NONE}, {.RD,.SAT_IMM5,.RM_A32,.NONE}, 0x06A00F30, 0x0FF00FF0, .V6, .A32, {}, {.NONE,.NONE} }, { .SSAT16, {.GPR,.IMM4_SAT,.GPR,.NONE}, {.RD_T32,.SAT_IMM5_T32,.RN_T32,.NONE}, 0xF3200000, 0xFFF0F0F0, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, // .USAT16 - { .USAT16, {.GPR,.IMM4_SAT,.GPR,.NONE}, {.RD,.SAT_IMM5,.RM_A32,.NONE}, 0x06E00F30, 0x0FF00FF0, .V6, .A32, {}, {.NONE,.NONE} }, - { .USAT16, {.GPR,.IMM4_SAT,.GPR,.NONE}, {.RD_T32,.SAT_IMM5_T32,.RN_T32,.NONE}, 0xF3A00000, 0xFFF0F0F0, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, + { .USAT16, {.GPR,.IMM4_SAT,.GPR,.NONE}, {.RD,.SAT_IMM5_U,.RM_A32,.NONE}, 0x06E00F30, 0x0FF00FF0, .V6, .A32, {}, {.NONE,.NONE} }, + { .USAT16, {.GPR,.IMM4_SAT,.GPR,.NONE}, {.RD_T32,.SAT_IMM5_U_T32,.RN_T32,.NONE}, 0xF3A00000, 0xFFF0F0F0, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, // .QADD { .QADD, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RM_A32,.RN_A32,.NONE}, 0x01000050, 0x0FF000F0, .V5TE, .A32, {}, {.NONE,.NONE} }, { .QADD, {.GPR,.GPR,.GPR,.NONE}, {.RD_T32,.RM_T32,.RN_T32,.NONE}, 0xFA80F080, 0xFFF0F0F0, .V6T2, .T32, {thumb32=true}, {.NONE,.NONE} }, @@ -1065,16 +1065,30 @@ ENCODE_FORMS := [1649]lib.Encoding{ { .VCVT, {.DPR,.SPR,.NONE,.NONE}, {.VD_D,.VM_S,.NONE,.NONE}, 0x0EB80BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.S32} }, { .VCVT, {.DPR,.SPR,.NONE,.NONE}, {.VD_D,.VM_S,.NONE,.NONE}, 0x0EB80B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.U32} }, { .VCVT, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60600, 0xFFBF0FD0, .BF16, .A32, {}, {.F16,.F32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBF0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U16,.F32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.S16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBB0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.U16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0A40, 0x0FBF0FC0, .VFPV3, .A32, {}, {.S16,.F32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0A40, 0x0FBF0FC0, .VFPV3, .A32, {}, {.F32,.S16} }, - { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBE0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F64} }, - { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBA0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.S16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.S16,.F16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.S16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.S16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.U16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.S16,.F16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.U16,.F16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.S32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.U32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.S32,.F16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.U32,.F16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.S16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.U16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U16,.F32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.S32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.U32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S32,.F32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U32,.F32} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBA0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.S16} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBB0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.U16} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBE0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F64} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBF0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U16,.F64} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBA0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.S32} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBB0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.U32} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBE0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S32,.F64} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBF0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U32,.F64} }, // .VCVTB { .VCVTB, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB20A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.F16} }, { .VCVTB, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB30A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F16,.F32} }, @@ -1838,33 +1852,33 @@ ENCODE_FORMS := [1649]lib.Encoding{ { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_LANE_D_16_4,.RN_A32,.NONE,.NONE}, 0xF480070F, 0xFFB00F3F, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_LANE_D_32_4,.RN_A32,.NONE,.NONE}, 0xF4800B0F, 0xFFB00F7F, .NEON, .A32, {}, {.SZ32,.NONE} }, // .AESE - { .AESE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00300, 0xFFB30FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .AESE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00300, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, // .AESD - { .AESD, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00340, 0xFFB30FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .AESD, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00340, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, // .AESMC - { .AESMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00380, 0xFFB30FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .AESMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00380, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, // .AESIMC - { .AESIMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B003C0, 0xFFB30FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .AESIMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B003C0, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, // .SHA1H - { .SHA1H, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B902C0, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA1H, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B902C0, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, // .SHA1SU0 - { .SHA1SU0, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2300C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA1SU0, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2300C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, // .SHA1SU1 - { .SHA1SU1, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0380, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA1SU1, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0380, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, // .SHA1C - { .SHA1C, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA1C, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, // .SHA1M - { .SHA1M, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA1M, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, // .SHA1P - { .SHA1P, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA1P, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, // .SHA256H - { .SHA256H, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA256H, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, // .SHA256H2 - { .SHA256H2, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3100C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA256H2, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3100C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, // .SHA256SU0 - { .SHA256SU0, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA03C0, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA256SU0, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA03C0, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, // .SHA256SU1 - { .SHA256SU1, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3200C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .SHA256SU1, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3200C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, // .VJCVT { .VJCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EB90BC0, 0x0FBF0FD0, .V8, .A32, {}, {.NONE,.NONE} }, // .VSDOT @@ -2521,314 +2535,314 @@ ENCODE_RUNS := [lib.Mnemonic]lib.Encode_Run{ .VSQRT = { 754, 3}, .VCMP = { 757, 8}, .VCMPE = { 765, 4}, - .VCVT = { 769, 21}, - .VCVTB = { 790, 2}, - .VCVTT = { 792, 2}, - .VCVTA = { 794, 2}, - .VCVTN = { 796, 2}, - .VCVTP = { 798, 2}, - .VCVTM = { 800, 2}, - .VCVTR = { 802, 4}, - .VMOV = { 806, 33}, - .VMRS = { 839, 1}, - .VMSR = { 840, 1}, - .VLDR = { 841, 2}, - .VSTR = { 843, 2}, - .VLDM = { 845, 2}, - .VSTM = { 847, 2}, - .VPUSH = { 849, 2}, - .VPOP = { 851, 2}, - .VSEL = { 853, 2}, - .VMAXNM = { 855, 2}, - .VMINNM = { 857, 2}, - .VRINTA = { 859, 3}, - .VRINTN = { 862, 3}, - .VRINTP = { 865, 3}, - .VRINTM = { 868, 3}, - .VRINTR = { 871, 2}, - .VRINTZ = { 873, 3}, - .VRINTX = { 876, 3}, - .VADDL = { 879, 6}, - .VADDW = { 885, 6}, - .VSUBL = { 891, 6}, - .VSUBW = { 897, 6}, - .VHADD = { 903, 9}, - .VHSUB = { 912, 9}, - .VRHADD = { 921, 3}, - .VQADD = { 924, 11}, - .VQSUB = { 935, 11}, - .VMULL = { 946, 11}, - .VMLAL = { 957, 10}, - .VMLSL = { 967, 10}, - .VQDMULL = { 977, 4}, - .VQDMLAL = { 981, 4}, - .VQDMLSL = { 985, 4}, - .VQDMULH = { 989, 8}, - .VQRDMULH = { 997, 8}, - .VQRDMLAH = { 1005, 8}, - .VQRDMLSH = { 1013, 8}, - .VABA = { 1021, 8}, - .VABAL = { 1029, 6}, - .VABD = { 1035, 10}, - .VABDL = { 1045, 6}, - .VAND = { 1051, 3}, - .VBIC = { 1054, 3}, - .VORR = { 1057, 3}, - .VORN = { 1060, 3}, - .VEOR = { 1063, 3}, - .VBSL = { 1066, 2}, - .VBIT = { 1068, 2}, - .VBIF = { 1070, 2}, - .VMVN = { 1072, 13}, - .VMOVN = { 1085, 3}, - .VQMOVN = { 1088, 6}, - .VQMOVUN = { 1094, 3}, - .VMOVL = { 1097, 6}, - .VTST = { 1103, 6}, - .VCEQ = { 1109, 14}, - .VCGE = { 1123, 16}, - .VCGT = { 1139, 16}, - .VCLE = { 1155, 18}, - .VCLT = { 1173, 18}, - .VACGE = { 1191, 2}, - .VACGT = { 1193, 2}, - .VACLE = { 1195, 2}, - .VACLT = { 1197, 2}, - .VMAX = { 1199, 13}, - .VMIN = { 1212, 13}, - .VPMAX = { 1225, 5}, - .VPMIN = { 1230, 5}, - .VPADD = { 1235, 5}, - .VPADDL = { 1240, 6}, - .VPADAL = { 1246, 4}, - .VRECPE = { 1250, 4}, - .VRECPS = { 1254, 2}, - .VRSQRTE = { 1256, 4}, - .VRSQRTS = { 1260, 2}, - .VSHL = { 1262, 9}, - .VSHR = { 1271, 3}, - .VSRA = { 1274, 3}, - .VRSHL = { 1277, 5}, - .VRSHR = { 1282, 3}, - .VRSRA = { 1285, 2}, - .VSLI = { 1287, 2}, - .VSRI = { 1289, 2}, - .VQSHL = { 1291, 7}, - .VQSHRN = { 1298, 1}, - .VQSHRUN = { 1299, 1}, - .VQRSHL = { 1300, 16}, - .VQRSHRN = { 1316, 1}, - .VQRSHRUN = { 1317, 1}, - .VSHRN = { 1318, 1}, - .VRSHRN = { 1319, 1}, - .VSHLL = { 1320, 4}, - .VCLS = { 1324, 6}, - .VCLZ = { 1330, 6}, - .VCNT = { 1336, 2}, - .VREV16 = { 1338, 2}, - .VREV32 = { 1340, 4}, - .VREV64 = { 1344, 6}, - .VEXT = { 1350, 2}, - .VTBL = { 1352, 4}, - .VTBX = { 1356, 4}, - .VTRN = { 1360, 6}, - .VUZP = { 1366, 5}, - .VZIP = { 1371, 5}, - .VDUP = { 1376, 5}, - .VSWP = { 1381, 2}, - .VLD1 = { 1383, 8}, - .VLD2 = { 1391, 6}, - .VLD3 = { 1397, 5}, - .VLD4 = { 1402, 5}, - .VST1 = { 1407, 7}, - .VST2 = { 1414, 6}, - .VST3 = { 1420, 5}, - .VST4 = { 1425, 5}, - .AESE = { 1430, 1}, - .AESD = { 1431, 1}, - .AESMC = { 1432, 1}, - .AESIMC = { 1433, 1}, - .SHA1H = { 1434, 1}, - .SHA1SU0 = { 1435, 1}, - .SHA1SU1 = { 1436, 1}, - .SHA1C = { 1437, 1}, - .SHA1M = { 1438, 1}, - .SHA1P = { 1439, 1}, - .SHA256H = { 1440, 1}, - .SHA256H2 = { 1441, 1}, - .SHA256SU0 = { 1442, 1}, - .SHA256SU1 = { 1443, 1}, - .VJCVT = { 1444, 1}, - .VSDOT = { 1445, 4}, - .VUDOT = { 1449, 4}, - .VDOT = { 1453, 2}, - .VMMLA = { 1455, 1}, - .VFMAL = { 1456, 2}, - .VFMSL = { 1458, 2}, - .VCMLA = { 1460, 5}, - .VCADD = { 1465, 2}, - .VSMMLA = { 1467, 1}, - .VUMMLA = { 1468, 1}, - .VUSMMLA = { 1469, 1}, - .VSUDOT = { 1470, 2}, - .VUSDOT = { 1472, 4}, - .VQABS = { 1476, 1}, - .VQNEG = { 1477, 1}, - .VMOVX = { 1478, 1}, - .VINS = { 1479, 1}, - .VLD2R = { 1480, 1}, - .VLD3R = { 1481, 1}, - .VLD4R = { 1482, 1}, - .IT = { 1483, 1}, - .TT = { 1484, 1}, - .TTT = { 1485, 1}, - .TTA = { 1486, 1}, - .TTAT = { 1487, 1}, - .SG = { 1488, 1}, - .BXNS = { 1489, 1}, - .BLXNS = { 1490, 1}, - .PAC = { 1491, 1}, - .PACBTI = { 1492, 1}, - .AUT = { 1493, 1}, - .AUTG = { 1494, 1}, - .BTI = { 1495, 1}, - .WLS = { 1496, 1}, - .WLSTP = { 1497, 1}, - .DLS = { 1498, 1}, - .DLSTP = { 1499, 1}, - .LE = { 1500, 1}, - .LETP = { 1501, 1}, - .LCTP = { 1502, 1}, - .BF = { 1503, 1}, - .BFX = { 1504, 1}, - .BFL = { 1505, 1}, - .BFLX = { 1506, 1}, - .BFCSEL = { 1507, 1}, - .CX1 = { 1508, 1}, - .CX1A = { 1509, 1}, - .CX1D = { 1510, 1}, - .CX1DA = { 1511, 1}, - .CX2 = { 1512, 1}, - .CX2A = { 1513, 1}, - .CX2D = { 1514, 1}, - .CX2DA = { 1515, 1}, - .CX3 = { 1516, 1}, - .CX3A = { 1517, 1}, - .CX3D = { 1518, 1}, - .CX3DA = { 1519, 1}, - .VCX1 = { 1520, 2}, - .VCX1A = { 1522, 2}, - .VCX2 = { 1524, 2}, - .VCX2A = { 1526, 2}, - .VCX3 = { 1528, 2}, - .VCX3A = { 1530, 2}, - .VPT = { 1532, 1}, - .VPST = { 1533, 1}, - .VPSEL = { 1534, 1}, - .VPNOT = { 1535, 1}, - .VCTP = { 1536, 1}, - .VADDV = { 1537, 1}, - .VADDVA = { 1538, 1}, - .VADDLV = { 1539, 1}, - .VADDLVA = { 1540, 1}, - .VMAXV = { 1541, 1}, - .VMAXAV = { 1542, 1}, - .VMINV = { 1543, 1}, - .VMINAV = { 1544, 1}, - .VMAXNMV = { 1545, 1}, - .VMAXNMAV = { 1546, 1}, - .VMINNMV = { 1547, 1}, - .VMINNMAV = { 1548, 1}, - .VABAV = { 1549, 1}, - .VMLADAV = { 1550, 1}, - .VMLADAVA = { 1551, 1}, - .VMLADAVX = { 1552, 1}, - .VMLADAVAX = { 1553, 1}, - .VMLALDAV = { 1554, 1}, - .VMLALDAVA = { 1555, 1}, - .VMLALDAVX = { 1556, 1}, - .VMLALDAVAX = { 1557, 1}, - .VMLSDAV = { 1558, 1}, - .VMLSDAVA = { 1559, 1}, - .VMLSDAVX = { 1560, 1}, - .VMLSDAVAX = { 1561, 1}, - .VMLSLDAV = { 1562, 1}, - .VMLSLDAVA = { 1563, 1}, - .VMLSLDAVX = { 1564, 1}, - .VMLSLDAVAX = { 1565, 1}, - .VRMLALDAVH = { 1566, 1}, - .VRMLALDAVHA = { 1567, 1}, - .VRMLALDAVHX = { 1568, 1}, - .VRMLALDAVHAX = { 1569, 1}, - .VRMLSLDAVH = { 1570, 1}, - .VRMLSLDAVHA = { 1571, 1}, - .VRMLSLDAVHX = { 1572, 1}, - .VRMLSLDAVHAX = { 1573, 1}, - .VMLAV = { 1574, 1}, - .VMLAVA = { 1575, 1}, - .VMLSV = { 1576, 1}, - .VMLSVA = { 1577, 1}, - .VCMUL = { 1578, 1}, - .VHCADD = { 1579, 2}, - .VBRSR = { 1581, 1}, - .VSHLC = { 1582, 1}, - .VDDUP = { 1583, 1}, - .VIDUP = { 1584, 1}, - .VDWDUP = { 1585, 1}, - .VIWDUP = { 1586, 1}, - .VMOVNB = { 1587, 1}, - .VMOVNT = { 1588, 1}, - .VQMOVNB = { 1589, 1}, - .VQMOVNT = { 1590, 1}, - .VQMOVUNB = { 1591, 1}, - .VQMOVUNT = { 1592, 1}, - .VSHLLB = { 1593, 1}, - .VSHLLT = { 1594, 1}, - .VMULLB = { 1595, 1}, - .VMULLT = { 1596, 1}, - .VMLALB = { 1597, 1}, - .VMLALT = { 1598, 1}, - .VMLSLB = { 1599, 1}, - .VMLSLT = { 1600, 1}, - .VSHRNB = { 1601, 1}, - .VSHRNT = { 1602, 1}, - .VRSHRNB = { 1603, 1}, - .VRSHRNT = { 1604, 1}, - .VQSHRNB = { 1605, 1}, - .VQSHRNT = { 1606, 1}, - .VQRSHRNB = { 1607, 1}, - .VQRSHRNT = { 1608, 1}, - .VQSHRUNB = { 1609, 1}, - .VQSHRUNT = { 1610, 1}, - .VQRSHRUNB = { 1611, 1}, - .VQRSHRUNT = { 1612, 1}, - .VQDMLADH = { 1613, 1}, - .VQDMLADHX = { 1614, 1}, - .VQDMLSDH = { 1615, 1}, - .VQDMLSDHX = { 1616, 1}, - .VQRDMLADH = { 1617, 1}, - .VQRDMLADHX = { 1618, 1}, - .VQRDMLSDH = { 1619, 1}, - .VQRDMLSDHX = { 1620, 1}, - .VLDRB = { 1621, 2}, - .VLDRH = { 1623, 2}, - .VLDRW = { 1625, 2}, - .VLDRD = { 1627, 2}, - .VSTRB = { 1629, 2}, - .VSTRH = { 1631, 2}, - .VSTRW = { 1633, 2}, - .VSTRD = { 1635, 2}, - .VLD20 = { 1637, 1}, - .VLD21 = { 1638, 1}, - .VLD40 = { 1639, 1}, - .VLD41 = { 1640, 1}, - .VLD42 = { 1641, 1}, - .VLD43 = { 1642, 1}, - .VST20 = { 1643, 1}, - .VST21 = { 1644, 1}, - .VST40 = { 1645, 1}, - .VST41 = { 1646, 1}, - .VST42 = { 1647, 1}, - .VST43 = { 1648, 1}, - ._COUNT = { 1649, 0}, + .VCVT = { 769, 35}, + .VCVTB = { 804, 2}, + .VCVTT = { 806, 2}, + .VCVTA = { 808, 2}, + .VCVTN = { 810, 2}, + .VCVTP = { 812, 2}, + .VCVTM = { 814, 2}, + .VCVTR = { 816, 4}, + .VMOV = { 820, 33}, + .VMRS = { 853, 1}, + .VMSR = { 854, 1}, + .VLDR = { 855, 2}, + .VSTR = { 857, 2}, + .VLDM = { 859, 2}, + .VSTM = { 861, 2}, + .VPUSH = { 863, 2}, + .VPOP = { 865, 2}, + .VSEL = { 867, 2}, + .VMAXNM = { 869, 2}, + .VMINNM = { 871, 2}, + .VRINTA = { 873, 3}, + .VRINTN = { 876, 3}, + .VRINTP = { 879, 3}, + .VRINTM = { 882, 3}, + .VRINTR = { 885, 2}, + .VRINTZ = { 887, 3}, + .VRINTX = { 890, 3}, + .VADDL = { 893, 6}, + .VADDW = { 899, 6}, + .VSUBL = { 905, 6}, + .VSUBW = { 911, 6}, + .VHADD = { 917, 9}, + .VHSUB = { 926, 9}, + .VRHADD = { 935, 3}, + .VQADD = { 938, 11}, + .VQSUB = { 949, 11}, + .VMULL = { 960, 11}, + .VMLAL = { 971, 10}, + .VMLSL = { 981, 10}, + .VQDMULL = { 991, 4}, + .VQDMLAL = { 995, 4}, + .VQDMLSL = { 999, 4}, + .VQDMULH = { 1003, 8}, + .VQRDMULH = { 1011, 8}, + .VQRDMLAH = { 1019, 8}, + .VQRDMLSH = { 1027, 8}, + .VABA = { 1035, 8}, + .VABAL = { 1043, 6}, + .VABD = { 1049, 10}, + .VABDL = { 1059, 6}, + .VAND = { 1065, 3}, + .VBIC = { 1068, 3}, + .VORR = { 1071, 3}, + .VORN = { 1074, 3}, + .VEOR = { 1077, 3}, + .VBSL = { 1080, 2}, + .VBIT = { 1082, 2}, + .VBIF = { 1084, 2}, + .VMVN = { 1086, 13}, + .VMOVN = { 1099, 3}, + .VQMOVN = { 1102, 6}, + .VQMOVUN = { 1108, 3}, + .VMOVL = { 1111, 6}, + .VTST = { 1117, 6}, + .VCEQ = { 1123, 14}, + .VCGE = { 1137, 16}, + .VCGT = { 1153, 16}, + .VCLE = { 1169, 18}, + .VCLT = { 1187, 18}, + .VACGE = { 1205, 2}, + .VACGT = { 1207, 2}, + .VACLE = { 1209, 2}, + .VACLT = { 1211, 2}, + .VMAX = { 1213, 13}, + .VMIN = { 1226, 13}, + .VPMAX = { 1239, 5}, + .VPMIN = { 1244, 5}, + .VPADD = { 1249, 5}, + .VPADDL = { 1254, 6}, + .VPADAL = { 1260, 4}, + .VRECPE = { 1264, 4}, + .VRECPS = { 1268, 2}, + .VRSQRTE = { 1270, 4}, + .VRSQRTS = { 1274, 2}, + .VSHL = { 1276, 9}, + .VSHR = { 1285, 3}, + .VSRA = { 1288, 3}, + .VRSHL = { 1291, 5}, + .VRSHR = { 1296, 3}, + .VRSRA = { 1299, 2}, + .VSLI = { 1301, 2}, + .VSRI = { 1303, 2}, + .VQSHL = { 1305, 7}, + .VQSHRN = { 1312, 1}, + .VQSHRUN = { 1313, 1}, + .VQRSHL = { 1314, 16}, + .VQRSHRN = { 1330, 1}, + .VQRSHRUN = { 1331, 1}, + .VSHRN = { 1332, 1}, + .VRSHRN = { 1333, 1}, + .VSHLL = { 1334, 4}, + .VCLS = { 1338, 6}, + .VCLZ = { 1344, 6}, + .VCNT = { 1350, 2}, + .VREV16 = { 1352, 2}, + .VREV32 = { 1354, 4}, + .VREV64 = { 1358, 6}, + .VEXT = { 1364, 2}, + .VTBL = { 1366, 4}, + .VTBX = { 1370, 4}, + .VTRN = { 1374, 6}, + .VUZP = { 1380, 5}, + .VZIP = { 1385, 5}, + .VDUP = { 1390, 5}, + .VSWP = { 1395, 2}, + .VLD1 = { 1397, 8}, + .VLD2 = { 1405, 6}, + .VLD3 = { 1411, 5}, + .VLD4 = { 1416, 5}, + .VST1 = { 1421, 7}, + .VST2 = { 1428, 6}, + .VST3 = { 1434, 5}, + .VST4 = { 1439, 5}, + .AESE = { 1444, 1}, + .AESD = { 1445, 1}, + .AESMC = { 1446, 1}, + .AESIMC = { 1447, 1}, + .SHA1H = { 1448, 1}, + .SHA1SU0 = { 1449, 1}, + .SHA1SU1 = { 1450, 1}, + .SHA1C = { 1451, 1}, + .SHA1M = { 1452, 1}, + .SHA1P = { 1453, 1}, + .SHA256H = { 1454, 1}, + .SHA256H2 = { 1455, 1}, + .SHA256SU0 = { 1456, 1}, + .SHA256SU1 = { 1457, 1}, + .VJCVT = { 1458, 1}, + .VSDOT = { 1459, 4}, + .VUDOT = { 1463, 4}, + .VDOT = { 1467, 2}, + .VMMLA = { 1469, 1}, + .VFMAL = { 1470, 2}, + .VFMSL = { 1472, 2}, + .VCMLA = { 1474, 5}, + .VCADD = { 1479, 2}, + .VSMMLA = { 1481, 1}, + .VUMMLA = { 1482, 1}, + .VUSMMLA = { 1483, 1}, + .VSUDOT = { 1484, 2}, + .VUSDOT = { 1486, 4}, + .VQABS = { 1490, 1}, + .VQNEG = { 1491, 1}, + .VMOVX = { 1492, 1}, + .VINS = { 1493, 1}, + .VLD2R = { 1494, 1}, + .VLD3R = { 1495, 1}, + .VLD4R = { 1496, 1}, + .IT = { 1497, 1}, + .TT = { 1498, 1}, + .TTT = { 1499, 1}, + .TTA = { 1500, 1}, + .TTAT = { 1501, 1}, + .SG = { 1502, 1}, + .BXNS = { 1503, 1}, + .BLXNS = { 1504, 1}, + .PAC = { 1505, 1}, + .PACBTI = { 1506, 1}, + .AUT = { 1507, 1}, + .AUTG = { 1508, 1}, + .BTI = { 1509, 1}, + .WLS = { 1510, 1}, + .WLSTP = { 1511, 1}, + .DLS = { 1512, 1}, + .DLSTP = { 1513, 1}, + .LE = { 1514, 1}, + .LETP = { 1515, 1}, + .LCTP = { 1516, 1}, + .BF = { 1517, 1}, + .BFX = { 1518, 1}, + .BFL = { 1519, 1}, + .BFLX = { 1520, 1}, + .BFCSEL = { 1521, 1}, + .CX1 = { 1522, 1}, + .CX1A = { 1523, 1}, + .CX1D = { 1524, 1}, + .CX1DA = { 1525, 1}, + .CX2 = { 1526, 1}, + .CX2A = { 1527, 1}, + .CX2D = { 1528, 1}, + .CX2DA = { 1529, 1}, + .CX3 = { 1530, 1}, + .CX3A = { 1531, 1}, + .CX3D = { 1532, 1}, + .CX3DA = { 1533, 1}, + .VCX1 = { 1534, 2}, + .VCX1A = { 1536, 2}, + .VCX2 = { 1538, 2}, + .VCX2A = { 1540, 2}, + .VCX3 = { 1542, 2}, + .VCX3A = { 1544, 2}, + .VPT = { 1546, 1}, + .VPST = { 1547, 1}, + .VPSEL = { 1548, 1}, + .VPNOT = { 1549, 1}, + .VCTP = { 1550, 1}, + .VADDV = { 1551, 1}, + .VADDVA = { 1552, 1}, + .VADDLV = { 1553, 1}, + .VADDLVA = { 1554, 1}, + .VMAXV = { 1555, 1}, + .VMAXAV = { 1556, 1}, + .VMINV = { 1557, 1}, + .VMINAV = { 1558, 1}, + .VMAXNMV = { 1559, 1}, + .VMAXNMAV = { 1560, 1}, + .VMINNMV = { 1561, 1}, + .VMINNMAV = { 1562, 1}, + .VABAV = { 1563, 1}, + .VMLADAV = { 1564, 1}, + .VMLADAVA = { 1565, 1}, + .VMLADAVX = { 1566, 1}, + .VMLADAVAX = { 1567, 1}, + .VMLALDAV = { 1568, 1}, + .VMLALDAVA = { 1569, 1}, + .VMLALDAVX = { 1570, 1}, + .VMLALDAVAX = { 1571, 1}, + .VMLSDAV = { 1572, 1}, + .VMLSDAVA = { 1573, 1}, + .VMLSDAVX = { 1574, 1}, + .VMLSDAVAX = { 1575, 1}, + .VMLSLDAV = { 1576, 1}, + .VMLSLDAVA = { 1577, 1}, + .VMLSLDAVX = { 1578, 1}, + .VMLSLDAVAX = { 1579, 1}, + .VRMLALDAVH = { 1580, 1}, + .VRMLALDAVHA = { 1581, 1}, + .VRMLALDAVHX = { 1582, 1}, + .VRMLALDAVHAX = { 1583, 1}, + .VRMLSLDAVH = { 1584, 1}, + .VRMLSLDAVHA = { 1585, 1}, + .VRMLSLDAVHX = { 1586, 1}, + .VRMLSLDAVHAX = { 1587, 1}, + .VMLAV = { 1588, 1}, + .VMLAVA = { 1589, 1}, + .VMLSV = { 1590, 1}, + .VMLSVA = { 1591, 1}, + .VCMUL = { 1592, 1}, + .VHCADD = { 1593, 2}, + .VBRSR = { 1595, 1}, + .VSHLC = { 1596, 1}, + .VDDUP = { 1597, 1}, + .VIDUP = { 1598, 1}, + .VDWDUP = { 1599, 1}, + .VIWDUP = { 1600, 1}, + .VMOVNB = { 1601, 1}, + .VMOVNT = { 1602, 1}, + .VQMOVNB = { 1603, 1}, + .VQMOVNT = { 1604, 1}, + .VQMOVUNB = { 1605, 1}, + .VQMOVUNT = { 1606, 1}, + .VSHLLB = { 1607, 1}, + .VSHLLT = { 1608, 1}, + .VMULLB = { 1609, 1}, + .VMULLT = { 1610, 1}, + .VMLALB = { 1611, 1}, + .VMLALT = { 1612, 1}, + .VMLSLB = { 1613, 1}, + .VMLSLT = { 1614, 1}, + .VSHRNB = { 1615, 1}, + .VSHRNT = { 1616, 1}, + .VRSHRNB = { 1617, 1}, + .VRSHRNT = { 1618, 1}, + .VQSHRNB = { 1619, 1}, + .VQSHRNT = { 1620, 1}, + .VQRSHRNB = { 1621, 1}, + .VQRSHRNT = { 1622, 1}, + .VQSHRUNB = { 1623, 1}, + .VQSHRUNT = { 1624, 1}, + .VQRSHRUNB = { 1625, 1}, + .VQRSHRUNT = { 1626, 1}, + .VQDMLADH = { 1627, 1}, + .VQDMLADHX = { 1628, 1}, + .VQDMLSDH = { 1629, 1}, + .VQDMLSDHX = { 1630, 1}, + .VQRDMLADH = { 1631, 1}, + .VQRDMLADHX = { 1632, 1}, + .VQRDMLSDH = { 1633, 1}, + .VQRDMLSDHX = { 1634, 1}, + .VLDRB = { 1635, 2}, + .VLDRH = { 1637, 2}, + .VLDRW = { 1639, 2}, + .VLDRD = { 1641, 2}, + .VSTRB = { 1643, 2}, + .VSTRH = { 1645, 2}, + .VSTRW = { 1647, 2}, + .VSTRD = { 1649, 2}, + .VLD20 = { 1651, 1}, + .VLD21 = { 1652, 1}, + .VLD40 = { 1653, 1}, + .VLD41 = { 1654, 1}, + .VLD42 = { 1655, 1}, + .VLD43 = { 1656, 1}, + .VST20 = { 1657, 1}, + .VST21 = { 1658, 1}, + .VST40 = { 1659, 1}, + .VST41 = { 1660, 1}, + .VST42 = { 1661, 1}, + .VST43 = { 1662, 1}, + ._COUNT = { 1663, 0}, } diff --git a/core/rexcode/isa/arm32/tables/arm32.bucket_list.bin b/core/rexcode/isa/arm32/tables/arm32.bucket_list.bin index 9e0ba06bb08c7c8f906630f993b6310934f36442..2b5b56c08924a10970d550a66a8549ac144bf5e2 100644 GIT binary patch delta 5032 zcmZ1%{499GI|1g;%%3KI6mVw#!~A!$xu7OD8w)$jFXrFO|Cs+z&K68$=49cRd|psg znuCQCEY8Kk4W>bAK$wGtbMk+|PG%Dp)5+aJk?guGIxKoD`jcM^NlTirn6i9eR%MZ4 zQDc!~F=w%0v1GAgv0<^EEH5n0?8@Rc*;ZJ#-jBtX#h)dBC6FbUC5R=IC4?oMC5$D4 zC6XnYC5k1MC59!AC7vabC4nW0C7C6KC6y(OC4(iMC5t7SC6gtGC6}d;rH-Y7rHiG2 zrIn?YrJbdZrG=%5rHUn=rIe+YrIMwLrJtpqrG%xJrIV$brG}+}rIDqLrJSXQrJ1G3 zjU|tzgQc2fBFhAp$t;strn5|AnaVPSWhToEmRT&bS>~|JWtqn^pJf5dLY74=3M^Q> z!(z*_crvqys^k)ur7Z3&9xPrgo-E!hJ}lBKGAyzzaxBXxJBm2hx3hGx6tLv6S%X*`SQ}ZJSi@MuS({l~SX)`!Sld|> zSUXrdS+iI(S+l`vK(Z06k*ray(X6qoF|2W{39N~%Nvz4NDXgiiX{_n28Bo<-tlg|V za6P@O30w%HCWnget$)M%mh~O$d)5!EA6Y-KerEl``jzz?>vz^4tUp|s|2egt2mnkn3pYn=G3gn-r@&n>4Eot1PP=s{-5P za}pYp{lsMI71@;7l-X3+RN2(n)Y&xHoLOC1U0K~&HQBV-wApmnblLRS^x5>;4A>0V z4A~6XjM$9XOxR4>%-GD>%-PJ@EZ8jAEZHpCtk|sCY}jns?AYwt9M~M$oY+h*%H~3*pk?iCm)m)uFql1Wy@pBXDeVUWGiATW-DPU zWh-MVXRBbVWUFMWVyj}S2E!V*TDEGoI<`8t4J;d3HnD7G*}<}pWedw*mVGRHS$47P zWZA{ConT9$PzTUqw8tYlfmvYKTL%X+AaJuJIfwy}UnkotWrDL z!t$8q4$FO(hb#|R9zpq+ST3_%VY!MV4pIeEgUp7gtiQ@~ljRo6ZI*j1*I2Hz++ewj z!T-(zN;dylxIjsTl^2{MWLV`{655C#RAK@u#Bq6s>G_vs>Q0!s>7iC&YQXBq z>cr~C>dETEicJ%`h&= zy_oDU)>No5FglPm4QgNzoCR_q#8Q}3U`~r-g^7f*ra(=C(x4g|qA3U}fz23*3Yc+W ztQ}Cb5OH)rf=qyT0;U6IJ&X=x?Sz_8k8T8nAI{nacQee81{5)fx-ixjXgEMD3}kI$ zZH5{R3-Wr_aBzbIq5@`G4r?xJ9&3I*YXK{){Q_&fG$JW4WG#cXWe{#}MX|D)H4w^& zSqSofB2+AbHGwq=%1&T~B}D|QK8y+p5E2$JpM^pF4-v)YIEYL%YXWOlJ-7u1(+ZtxnRtkYThS^HRLvd(3l#yW>}KI=Tz*{m~JXR%IUoyt0cbph)_)+MYfSnsngXMM!F zm~|!VJ=SHc4_Oznu428*x|H<+>uT1GteaRjvuq*x0tXEmru#Vz253n9%J;Qp5 z^#)_tr;SWmHDV7uXj>GrbhJHnA*Mrys;1)TgnIXmoYHGup z*fOjNY&e=&^{l!m+9X+t&_t#lMsSw`)Oh*}ZQ<~-){C)$T3f_fN|p~O`) zxlx4QP*{fzq?353*Mr)Z2)Apo=@4{1L=Aci55MCedO#jRYw6X)`=i*y0p=@+0U~Uo zY+~RZt1PPmn<=Xqt2wI$t0k)yt2L_)t1YV?t39g&D=})s*g(BrIo5jI#)z>=v&yr9 zI>opwqJnekp>Bq`2cL5wF2=1w0oqANr;!I1U;_$}Ap`|B2T02oT?>qlPb)+x0N?KV Ac>n+a delta 4983 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 diff --git a/core/rexcode/isa/arm32/tables/arm32.encode_forms.bin b/core/rexcode/isa/arm32/tables/arm32.encode_forms.bin index f92d9332841f8601dc7d105b881c54b820c97c1e..3960c23748a4c5fbd4cb7ccdcf30328a53a57293 100644 GIT binary patch literal 38249 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 literal 37927 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 diff --git a/core/rexcode/isa/arm32/tables/arm32.encode_runs.bin b/core/rexcode/isa/arm32/tables/arm32.encode_runs.bin index 9a5a78adf3a63c34dd8d7a1667ceb8d6a04661cf..9d9f8e1a37191a6e18b70da179c2907b69e46204 100644 GIT binary patch delta 1574 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 literal 37927 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 D>5wYY diff --git a/core/rexcode/isa/arm32/tables/arm32.idx_a32.bin b/core/rexcode/isa/arm32/tables/arm32.idx_a32.bin index 8f0df6fffd87e3b923a509e517b73e83d7f6936c..73c0caa9f53cffd6673d72318cbc79d5f0013d41 100644 GIT binary patch delta 90 zcmZqRXyDkejyWirfrE>mL7a=5L5YipL60kjp^J-|p_hx9VFDL3!(=XIhG|^P3^Tcy v8Rl>?GtB2=W?00<$gr4;kzolJBg0ZIMuufvj10@U7#UV@F*2;=Vq^dSwfYXo delta 90 zcmZqRXyDkejycGe;TI=A11A?Zg9sN7g94WyLmn41Lm?M4LkSl%Lpc{SLlqY@LoF9G tLjxBxLo*jMLmL+(Lpv8ELkAZlLnjv_Ll+k#LpK*ALk|}tLoXL20|2q(4YL3M diff --git a/core/rexcode/isa/arm32/tables/arm32.idx_t16.bin b/core/rexcode/isa/arm32/tables/arm32.idx_t16.bin index f3926cc60de2479be9dcd0498d401cc763ef30bc..f10236a73860ea54d34c1c19389790777d32da54 100644 GIT binary patch delta 235 zcmZo*YGA5g$-~I7iieS5H4h`h8XiW5wLFXr>v$L$*7GniY~*2L*v!Mou!V<_VJiBg17LMusaqObpj}m>6#GFfrWX zVPd$$!^m)#hmqkP4VPxpzVPxp%VPu%V!^kj^hmm0t4My0Bf~KsMuy`&j0`7u7#U9TFfyFtVPrVX!^m)khmqkd z4KtHV+fST^<&Ohddk%FL@XlUhyz8 nyyjtKc*DcU@Ro;>;T;bn!+Rb^h7UZ<44-)z8NTo^GT;IL{jDyS diff --git a/core/rexcode/isa/arm32/tables/arm32.idx_t32.bin b/core/rexcode/isa/arm32/tables/arm32.idx_t32.bin index b9bed8116907c7214f813bb9028c2d2251d34477..28f1b50c54e60bff81239e07af538df341fdf9b2 100644 GIT binary patch literal 512 zcmZP=1;Z)?R&j|l9OM#axWXmO@SH1y!Jk{6A&*;)VG6f6!)k6mhMn9Z3}?CB8AN!* J8MJxo7ytlQ326WT literal 512 zcmZP=1;Z)?`nbdymU0O*?BEh+IL(#8V9YJg5X7ymcfhF~P|5MCyRFkVK6a9(DHC|)Lp7+xlZI9^7EcwTmfG+ri#3|>ZtOkPHYEM6vt z99|}dJYGhId|pO|0$wJDB0TOY;bj3?$xy+|!cYTcg9I9QSr}T7_#M0w3=4S08MgC^ zF`VU%TUiJ#4wRhnqdteFT+kgF^2Pe z;tbFD_!++P@iVaS^D_wZ^D`*%^D`Lo^D{W`^E3GK^E1TpGczReGc%;{Gc%;~Gc#oI zGc)A!Gcy$MGcy$PGc%O&b2BvZb1`)Db1+Qi=U|x4&%v;mpOs++KP$spepZG}{A>(6 z_}Lit@v|@-;%8wv#?QiVil3R`EI$jwMSd2BtNiQ?clg;E9`my?yyRzNc+bzu@P(g+ z;Rin}!(V<@1||Vk26h1!25tcs27Uon1`z>P21x-H23Y|X21NlD22}x81}y;=20Z~5 z1|tC$1~UOx25SLk20H;31}6a)1~&m#25$it27dt-hF}2}hHwE^h8O{6hIj!MhGYR2 zhI9cohFk#_hC%^0hH?QGhH3#;h6VvDUfR*9304u`>0XBwj z0&EO_1Xvgt1X&nZ1X&n31eqDQ1z8yQ1z8w`1z8y+1X&qm1z8vr1z8wW1z8!i1X&pL z1X&r31z8y^1X&qu1z8vz1z8we1z8!q1X&sU1z8w^1z8xv1z8xP1z8yq1X&nT1X&m| z1X&nz1X&ph1(_L21X&m=1X&nr1X&px1z8wc1z8w61z8w+1z8y;2{JQG6=Y$UDagVw zSCExqksu4hGC>xGRe~%G>jYUCHVHB_Y!zf-*eS@uuvd_S;iw=B!%0CFhO>e!3>O7i z7_JI3Gu#klVYnm6%J5K-k>QabBg11sMusPXObpKi85y1nBJ%A^K}LpGf=mo=1Q{9L z3NkXh6J%s~k0cLD(;o#P`R@~y28ki#&rtPWvB-ZDWM=p&$i(nlkeT5hNSzQf1G5kl z1FI0kOg14d1_2>11}Pyn1_dET21Ow@26Z7e23;XGuocEa%wQUsFoWs^iJ1#AGFS*P zGFS>RGFS;QGFU_9Y@oEQ5F>+~5F>-V5Ho|55Ho|T5F>+|5F>-T5EFx^5EFy95IaMV z5H~}t5Hmx95Hmxv5IaMb5IaMm5EDbO5F(sPg%}yipk{*XMaJbqEDY5`j0`ncDr+VmK?L!0=W`mVrxHnn6`qn!!O>ks(o7fuT`YkYSRrAj4u|S%w3`@(lNd zg%~~xOEGYZC@^S?2s7A;2r&eR2r?v!2r?9j2s5;b2r*0-5oA~)BFL~)goRPx# literal 16384 zcmZP=1*0J_8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0)sjPzVfg!{N`a| z_{+n{@Q;U);Xe-}0|PH310ydZ0~0S30}C$;0|ze~10OFV13xb#g8(lhgCH*>gAgwh zg9tApgD5W}gBUL(gE%iEg9I-VhF_(485yK`85v}F85v}G85!hw85!hxnHUs#85xv# z85xv$*%&l=nHaQr85wkV85wkW85#7jn1gJv0WTw*YskyUV8qMFV9d+NV1gtLQeeu< z$Y93H$Y72nZo$jMV8zSGV9m?SV8_eE;K0ko;Ka+w;LOX;;Kj?t;KR$v;LFR%;K$3v z5WvgC5X8&K5X{TS5W>sE5QfKH5xguQD;Z*VSr`(aY>+?-FAGBk58~Irnw(_$u?Br)>IKa=&aGalw;VeHJ!)1O}h8z4W z40rfh86NVpGCbpFWq8fc!tkD-h2b+lE5i?dR))X)EDVeSEDWpyEDW3itPFetEDS;d zEDT}-EDTZttPJu3%nV8bEDUM_EDTx#tPJ`BEDXj1EDYuXEDY8HtPBnU%nZ%~EDY`f zEDYWPYz%<{EDWInYz)x?EDZ4itPCjv%na!QYz(;qEDVJL>W0|6F>Cju-CF9cW^-Uu)=ycb|$_$1D_xZ zgODIAgSa3ogNz_6gQ6e{gQ_44gQg%WgPtHOgRvkBgSj9JgS8+FgS{XtgNq;wgNGms zgO4B!Lx3PFL#QA#Lxdm;LyRB`LxLbHL#iMPL#7}LL#`kTL!lrmLzy5mL!}@KL#-eS zL!%%oLz^HALzf^6L!TfE!z4i#hG~M#3^N5;80HGHFf0`0U|1>0!mw75g<+#03&U1H z7KWXI%nW-3Sr`rovN9YMWMnud$jES9kdfhpAQQtWK}Lqtf{1*3R*;e5oFEg!1wlrJ zi-L>{mjoFZE+ff<()3k9NdCJ9r9ooI_&QYmO)T=a1eqD`3NkU=7i4C5B*?_@M39-` zxgZn6OQ_mcf?Nz=1i2Xg39>P;2r)9S3b8S83$ZZ>3bBE$5Eo(w)5wIB5X3zoF=-)2 z1{onn23a9S200-{26?EQ0+d!1Vq{PfVq{PjVrEbiVrI}3Vr0+~Vr0-3Vq(x0Vq(x2 zVrMWD;%0CZVrFm=VrFm`VrTFZVrK{yVqypvLWEPK5FyHL#>b$!*n4jhK)iB3>SrD8Quv=GjIw^GpGnFGPnvWFr*3#GL#7mGPDcJGAt36 zXE-b@#Bfzuis8Mm0t3H@FoTka5QB+`AcL!jAVZjlFhiz@5JR