From a63fb51fdd030448301c8df01df479c6a60f9e44 Mon Sep 17 00:00:00 2001 From: Brendan Punsky Date: Thu, 18 Jun 2026 01:58:19 -0400 Subject: [PATCH] rexcode/arm32: MVE VMLSV/VMLSVA (correct 3-bit Q regs); drop placeholders Implement VMLSV/VMLSVA (MVE multiply-subtract reduce) properly: new VN_Q_MVE (Qn at 19:17) and VM_Q_MVE (Qm at 3:1) encodings -- the actual 3-bit MVE Q fields -- with Rd at 15:12 (RDLO_A32). The earlier collision was from reusing the 4-bit VN_Q (19:16) and RD_T32 (11:8), which place the fields wrong; byte-exact vs llvm-mc now with distinct Qn/Qm/Rd. Drop three placeholder/redundant enum entries: VRINT and VPRINT (not real instructions -- llvm rejects bare 'vrint'; VPRINT is a printf-like debug pseudo-op), and VRSHL_MVE (the author's own comment marks it a placeholder; 'vrshl q,q,q' already decodes via VRSHL's MVE form). 600 tests green, verify matches llvm-mc. --- core/rexcode/arm32/decoder.odin | 4 + core/rexcode/arm32/encoder.odin | 4 + core/rexcode/arm32/encoding_types.odin | 3 + core/rexcode/arm32/mnemonic_builders.odin | 8 + core/rexcode/arm32/mnemonics.odin | 4 +- .../arm32/tablegen/encoding_table.odin | 4 + .../tablegen/generated/decode_tables.odin | 1336 +++++++++-------- .../tablegen/generated/encode_tables.odin | 149 +- .../arm32/tables/arm32.bucket_list.bin | Bin 10834 -> 10842 bytes .../arm32/tables/arm32.encode_forms.bin | Bin 35133 -> 35175 bytes .../arm32/tables/arm32.encode_runs.bin | Bin 5088 -> 5064 bytes core/rexcode/arm32/tables/arm32.entries.bin | Bin 35133 -> 35175 bytes core/rexcode/arm32/tables/arm32.form_idx.bin | Bin 3346 -> 3350 bytes core/rexcode/arm32/tables/arm32.idx_t16.bin | Bin 256 -> 256 bytes core/rexcode/arm32/tables/arm32.idx_t32.bin | Bin 512 -> 512 bytes .../arm32/tables/arm32.idx_t32_sub.bin | Bin 16384 -> 16384 bytes 16 files changed, 768 insertions(+), 744 deletions(-) diff --git a/core/rexcode/arm32/decoder.odin b/core/rexcode/arm32/decoder.odin index bec18c8f9..c7b5a11d0 100644 --- a/core/rexcode/arm32/decoder.odin +++ b/core/rexcode/arm32/decoder.odin @@ -356,6 +356,10 @@ unpack_operand :: proc(word: u32, enc: Operand_Encoding, ot: Operand_Type) -> Op return op_imm(((word >> 12) & 1) == 1 ? 270 : 90) case .MVE_ROT_CMLA: return op_imm(i64((word >> 23) & 0x3) * 90) + case .VN_Q_MVE: + return op_reg(Register(REG_QPR | u16((word >> 17) & 0x7))) + case .VM_Q_MVE: + return op_reg(Register(REG_QPR | u16((word >> 1) & 0x7))) case .VD_Q: n := (((word >> 22) & 1) << 4 | ((word >> 12) & 0xF)) >> 1 return op_reg(Register(REG_QPR | u16(n))) diff --git a/core/rexcode/arm32/encoder.odin b/core/rexcode/arm32/encoder.odin index a1951ee37..4ba1e846d 100644 --- a/core/rexcode/arm32/encoder.odin +++ b/core/rexcode/arm32/encoder.odin @@ -440,6 +440,10 @@ pack_operand_inline :: #force_inline proc( return (u32(op.immediate) == 270 ? 1 : 0) << 12 case .MVE_ROT_CMLA: return ((u32(op.immediate) / 90) & 0x3) << 23 + case .VN_Q_MVE: + return (u32(reg_hw(op.reg)) & 0x7) << 17 + case .VM_Q_MVE: + return (u32(reg_hw(op.reg)) & 0x7) << 1 case .VFP_IMM8: // Run the VFP 8-bit float encoder; the user supplies the wire-format // 32-bit float bit pattern (for F32). The encoder finds the abcdefgh. diff --git a/core/rexcode/arm32/encoding_types.odin b/core/rexcode/arm32/encoding_types.odin index 2353ba4f6..421385f6b 100644 --- a/core/rexcode/arm32/encoding_types.odin +++ b/core/rexcode/arm32/encoding_types.odin @@ -316,6 +316,9 @@ Operand_Encoding :: enum u8 { // MVE_ROT_HCADD: #90/#270 -> bit 12; MVE_ROT_CMLA: #0/90/180/270 -> bits 24:23 MVE_ROT_HCADD, MVE_ROT_CMLA, + // MVE 3-bit Q registers (Q0..Q7): Qn at bits 19:17, Qm at bits 3:1. + VN_Q_MVE, + VM_Q_MVE, VFP_IMM8, // VFP immediate (VMOV.F32/F64 #imm) NEON_IMM8_ABCDEFGH, // bits 18-16 (abc) + bits 3-0 (defgh) NEON_CMODE, // bits 11-8 (cmode for VMOV/VMVN immediate) diff --git a/core/rexcode/arm32/mnemonic_builders.odin b/core/rexcode/arm32/mnemonic_builders.odin index 74f5930df..053881f91 100644 --- a/core/rexcode/arm32/mnemonic_builders.odin +++ b/core/rexcode/arm32/mnemonic_builders.odin @@ -1298,6 +1298,10 @@ inst_vmlav_r_q_q :: #force_inline proc "contextless" (dst: Regis emit_vmlav_r_q_q :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vmlav_r_q_q(dst, src, src2)) } inst_vmlava_r_q_q :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VMLAVA, operand_count = 3, mode = .T32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } emit_vmlava_r_q_q :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vmlava_r_q_q(dst, src, src2)) } +inst_vmlsv_r_q_q :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VMLSV, operand_count = 3, mode = .T32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } +emit_vmlsv_r_q_q :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vmlsv_r_q_q(dst, src, src2)) } +inst_vmlsva_r_q_q :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VMLSVA, operand_count = 3, mode = .T32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } +emit_vmlsva_r_q_q :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vmlsva_r_q_q(dst, src, src2)) } inst_vcmul_q_q_q :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VCMUL, operand_count = 3, mode = .T32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } emit_vcmul_q_q_q :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vcmul_q_q_q(dst, src, src2)) } inst_vhcadd_q_q_q :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VHCADD, operand_count = 3, mode = .T32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } @@ -2551,6 +2555,10 @@ inst_vmlav :: inst_vmlav_r_q_q emit_vmlav :: emit_vmlav_r_q_q inst_vmlava :: inst_vmlava_r_q_q emit_vmlava :: emit_vmlava_r_q_q +inst_vmlsv :: inst_vmlsv_r_q_q +emit_vmlsv :: emit_vmlsv_r_q_q +inst_vmlsva :: inst_vmlsva_r_q_q +emit_vmlsva :: emit_vmlsva_r_q_q inst_vcmul :: inst_vcmul_q_q_q emit_vcmul :: emit_vcmul_q_q_q inst_vhcadd :: inst_vhcadd_q_q_q diff --git a/core/rexcode/arm32/mnemonics.odin b/core/rexcode/arm32/mnemonics.odin index ce5401f19..ba4b8529a 100644 --- a/core/rexcode/arm32/mnemonics.odin +++ b/core/rexcode/arm32/mnemonics.odin @@ -306,7 +306,7 @@ Mnemonic :: enum u16 { SHA256H, SHA256H2, SHA256SU0, SHA256SU1, // -- VFP rounding (ARMv8 FEAT_FP) ---------------------------------------- - VRINT, VJCVT, // VJCVT: F64-to-S32 with FPSCR.RM rounding + VJCVT, // VJCVT: F64-to-S32 with FPSCR.RM rounding // -- Dot Product (FEAT_DotProd) ------------------------------------------ VSDOT, VUDOT, @@ -465,7 +465,6 @@ Mnemonic :: enum u16 { // Bit reverse + shifts unique to MVE VBRSR, // bit reverse with shift right VSHLC, // shift left with carry - VRSHL_MVE, // (placeholder if needed; usually VRSHL) VDDUP, // decrement and duplicate VIDUP, // increment and duplicate VDWDUP, // decrement-wrap and duplicate @@ -501,7 +500,6 @@ Mnemonic :: enum u16 { VQRDMLSDH, VQRDMLSDHX, // Misc - VPRINT, // printf-like debug op (rare) VHCADD_SAT, // (rarely used) VCMLA_MVE, // (MVE form; VCMLA already exists) diff --git a/core/rexcode/arm32/tablegen/encoding_table.odin b/core/rexcode/arm32/tablegen/encoding_table.odin index 252359cc7..adb65c1bc 100644 --- a/core/rexcode/arm32/tablegen/encoding_table.odin +++ b/core/rexcode/arm32/tablegen/encoding_table.odin @@ -3695,6 +3695,10 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ // mask (the MVE convention); the complex ops encode the rotation immediate. .VHCADD_SAT = { {.VHCADD_SAT, {.QPR, .QPR, .QPR, .IMM}, {.VD_Q, .VN_Q, .VM_Q, .MVE_ROT_HCADD}, 0xEE000F00, 0xFFE10FF1, .MVE_INT, .T32, {thumb32=true, cond_in_28=false}} }, .VCMLA_MVE = { {.VCMLA_MVE, {.QPR, .QPR, .QPR, .IMM}, {.VD_Q, .VN_Q, .VM_Q, .MVE_ROT_CMLA}, 0xFC200840, 0xFE611FF1, .MVE_FP, .T32, {thumb32=true, cond_in_28=false}} }, + // MVE multiply-subtract reduce (Rd at 15:12, Qn at 19:17, Qm at 3:1 -- the + // proper 3-bit MVE Q fields, .s16 form). VMLSVA accumulates (bit 5). + .VMLSV = { {.VMLSV, {.GPR, .QPR, .QPR, .NONE}, {.RDLO_A32, .VN_Q_MVE, .VM_Q_MVE, .NONE}, 0xEEF00E01, 0xFFF10FF1, .MVE_INT, .T32, {thumb32=true, cond_in_28=false}} }, + .VMLSVA = { {.VMLSVA, {.GPR, .QPR, .QPR, .NONE}, {.RDLO_A32, .VN_Q_MVE, .VM_Q_MVE, .NONE}, 0xEEF00E21, 0xFFF10FF1, .MVE_INT, .T32, {thumb32=true, cond_in_28=false}} }, // SPECGEN:BEGIN .VADDL = { diff --git a/core/rexcode/arm32/tablegen/generated/decode_tables.odin b/core/rexcode/arm32/tablegen/generated/decode_tables.odin index 79bdc6746..ee43a144a 100644 --- a/core/rexcode/arm32/tablegen/generated/decode_tables.odin +++ b/core/rexcode/arm32/tablegen/generated/decode_tables.odin @@ -8,7 +8,7 @@ package rexcode_arm32_generated import lib "../.." @(rodata) -DECODE_ENTRIES := [1673]lib.Decode_Entry{ +DECODE_ENTRIES := [1675]lib.Decode_Entry{ { .MUL, {.GPR,.GPR,.GPR,.NONE}, {.RN_A32,.RM_A32,.RS_A32,.NONE}, 0x00000090, 0x0FE000F0, .BASE, .A32, {} }, { .AND, {.GPR,.GPR,.GPR_RSR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000010, 0x0FE00090, .BASE, .A32, {} }, { .AND, {.GPR,.GPR,.GPR_SHIFTED,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000000, 0x0FE00010, .BASE, .A32, {} }, @@ -183,11 +183,11 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2000350, 0xFFB11F51, .NEON, .A32, {} }, { .VCLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2000340, 0xFFB11F51, .NEON, .A32, {} }, { .VQRSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2000550, 0xFFB11F51, .NEON, .A32, {} }, - { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000840, 0xFFB00F50, .NEON, .A32, {} }, { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000D40, 0xFFB00F50, .NEON, .A32, {} }, + { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000840, 0xFFB00F50, .NEON, .A32, {} }, { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000950, 0xFFB00F50, .NEON, .A32, {} }, - { .VMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000D50, 0xFFB00F50, .NEON, .A32, {} }, { .VMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000940, 0xFFB00F50, .NEON, .A32, {} }, + { .VMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000D50, 0xFFB00F50, .NEON, .A32, {} }, { .VFMA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000C50, 0xFFB00F50, .NEON, .A32, {} }, { .VHADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000040, 0xFFB00F50, .NEON, .A32, {} }, { .VHSUB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000240, 0xFFB00F50, .NEON, .A32, {} }, @@ -212,8 +212,8 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .VQSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2000450, 0xFFB00F50, .NEON, .A32, {} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2000510, 0xFFB00F50, .NEON, .A32, {} }, { .SHA1C, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000C40, 0xFFB00F50, .CRYPTO, .A32, {} }, - { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D00, 0xFFB00F10, .NEON, .A32, {} }, { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000800, 0xFFB00F10, .NEON, .A32, {} }, + { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D00, 0xFFB00F10, .NEON, .A32, {} }, { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000910, 0xFFB00F10, .NEON, .A32, {} }, { .VMLA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000900, 0xFFB00F10, .NEON, .A32, {} }, { .VMLA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D10, 0xFFB00F10, .NEON, .A32, {} }, @@ -267,8 +267,8 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100650, 0xFFB00F50, .NEON, .A32, {} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2100510, 0xFFB00F50, .NEON, .A32, {} }, { .SHA1P, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100C40, 0xFFB00F50, .CRYPTO, .A32, {} }, - { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100D00, 0xFFB00F10, .NEON_HALF_FP, .A32, {} }, { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100800, 0xFFB00F10, .NEON, .A32, {} }, + { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100D00, 0xFFB00F10, .NEON_HALF_FP, .A32, {} }, { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100910, 0xFFB00F10, .NEON, .A32, {} }, { .VMLA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100900, 0xFFB00F10, .NEON, .A32, {} }, { .VHADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100000, 0xFFB00F10, .NEON, .A32, {} }, @@ -314,8 +314,8 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2200310, 0xFFB00F50, .NEON, .A32, {} }, { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2200300, 0xFFB00F50, .NEON, .A32, {} }, { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200640, 0xFFB00F50, .NEON, .A32, {} }, - { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200F40, 0xFFB00F50, .NEON, .A32, {} }, { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200650, 0xFFB00F50, .NEON, .A32, {} }, + { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200F40, 0xFFB00F50, .NEON, .A32, {} }, { .VRSQRTS, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200F50, 0xFFB00F50, .NEON, .A32, {} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2200510, 0xFFB00F50, .NEON, .A32, {} }, { .SHA1M, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200C40, 0xFFB00F50, .CRYPTO, .A32, {} }, @@ -370,40 +370,40 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .VADDW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF2800100, 0xFFB11F50, .NEON, .A32, {} }, { .VSUBW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF2800300, 0xFFB11F50, .NEON, .A32, {} }, { .VMOVL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF2880A10, 0xFFB80FD0, .NEON, .A32, {} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800E70, 0xFEB80FD0, .NEON, .A32, {} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800F50, 0xFEB80FD0, .NEON, .A32, {} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800050, 0xFEB80FD0, .NEON, .A32, {} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800850, 0xFEB80FD0, .NEON, .A32, {} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800E70, 0xFEB80FD0, .NEON, .A32, {} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800E50, 0xFEB80FD0, .NEON, .A32, {} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800050, 0xFEB80FD0, .NEON, .A32, {} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800F50, 0xFEB80FD0, .NEON, .A32, {} }, { .VADDL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800000, 0xFFB01F50, .NEON, .A32, {} }, { .VSUBL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800200, 0xFFB01F50, .NEON, .A32, {} }, { .VABAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800500, 0xFFB01F50, .NEON, .A32, {} }, { .VABDL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800700, 0xFFB01F50, .NEON, .A32, {} }, { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800070, 0xFEB80FD0, .NEON, .A32, {} }, { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800870, 0xFEB80FD0, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800410, 0xFEB80F90, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D10, 0xFEB80F90, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800610, 0xFEB80F90, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800E30, 0xFEB80F90, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800F10, 0xFEB80F90, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800210, 0xFEB80F90, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800810, 0xFEB80F90, .NEON, .A32, {} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800010, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D10, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800E30, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800810, 0xFEB80F90, .NEON, .A32, {} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800C10, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800F10, 0xFEB80F90, .NEON, .A32, {} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800A10, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800410, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800210, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800610, 0xFEB80F90, .NEON, .A32, {} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800E10, 0xFEB80F90, .NEON, .A32, {} }, - { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800E00, 0xFFB00F50, .NEON, .A32, {} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800C00, 0xFFB00F50, .NEON, .A32, {} }, + { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800E00, 0xFFB00F50, .NEON, .A32, {} }, { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800800, 0xFFB00F50, .NEON, .A32, {} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800A00, 0xFFB00F50, .NEON, .A32, {} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D30, 0xFEB80F90, .NEON, .A32, {} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800430, 0xFEB80F90, .NEON, .A32, {} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800C30, 0xFEB80F90, .NEON, .A32, {} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800030, 0xFEB80F90, .NEON, .A32, {} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800630, 0xFEB80F90, .NEON, .A32, {} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800A30, 0xFEB80F90, .NEON, .A32, {} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800230, 0xFEB80F90, .NEON, .A32, {} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800830, 0xFEB80F90, .NEON, .A32, {} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D30, 0xFEB80F90, .NEON, .A32, {} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800A30, 0xFEB80F90, .NEON, .A32, {} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800630, 0xFEB80F90, .NEON, .A32, {} }, { .VQSHRN, {.DPR,.QPR,.IMM,.NONE}, {.VD_D,.VM_Q,.NEON_SHIFT_IMM6,.NONE}, 0xF2800910, 0xFE800FD0, .NEON, .A32, {} }, { .VQRSHRN, {.DPR,.QPR,.IMM,.NONE}, {.VD_D,.VM_Q,.NEON_SHIFT_IMM6,.NONE}, 0xF2800950, 0xFE800FD0, .NEON, .A32, {} }, { .VSHRN, {.DPR,.QPR,.IMM,.NONE}, {.VD_D,.VM_Q,.NEON_SHIFT_IMM6,.NONE}, 0xF2800810, 0xFE800FD0, .NEON, .A32, {} }, @@ -466,8 +466,8 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .VMUL_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A008C0, 0xFFB00F50, .NEON, .A32, {} }, { .VMLA_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A00040, 0xFFB00F50, .NEON, .A32, {} }, { .VMLA_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A000C0, 0xFFB00F50, .NEON, .A32, {} }, - { .VMLS_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A004C0, 0xFFB00F50, .NEON, .A32, {} }, { .VMLS_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A00440, 0xFFB00F50, .NEON, .A32, {} }, + { .VMLS_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A004C0, 0xFFB00F50, .NEON, .A32, {} }, { .VMULL_LANE, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00A40, 0xFFB00F50, .NEON, .A32, {} }, { .VMLAL_LANE, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00240, 0xFFB00F50, .NEON, .A32, {} }, { .VMLSL_LANE, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00640, 0xFFB00F50, .NEON, .A32, {} }, @@ -486,8 +486,8 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .SBC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02D00000, 0x0FF00000, .BASE, .A32, {sets_flags=true} }, { .RSC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02E00000, 0x0FE00000, .BASE, .A32, {} }, { .RSC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02F00000, 0x0FF00000, .BASE, .A32, {sets_flags=true} }, - { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000E40, 0xFFB11F51, .NEON, .A32, {} }, { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000350, 0xFFB11F51, .NEON, .A32, {} }, + { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000E40, 0xFFB11F51, .NEON, .A32, {} }, { .VCLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000340, 0xFFB11F51, .NEON, .A32, {} }, { .VACLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000E50, 0xFFB11F51, .NEON, .A32, {} }, { .VQRSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000550, 0xFFB11F51, .NEON, .A32, {} }, @@ -503,8 +503,8 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .VABD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000740, 0xFFB00F50, .NEON, .A32, {} }, { .VEOR, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000150, 0xFFB00F50, .NEON, .A32, {} }, { .VCEQ, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000850, 0xFFB00F50, .NEON, .A32, {} }, - { .VCGE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000E40, 0xFFB00F50, .NEON, .A32, {} }, { .VCGE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000350, 0xFFB00F50, .NEON, .A32, {} }, + { .VCGE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000E40, 0xFFB00F50, .NEON, .A32, {} }, { .VCGT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000340, 0xFFB00F50, .NEON, .A32, {} }, { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000310, 0xFFB00F50, .NEON, .A32, {} }, { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000E00, 0xFFB00F50, .NEON, .A32, {} }, @@ -530,8 +530,8 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .VABD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000700, 0xFFB00F10, .NEON, .A32, {} }, { .VEOR, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000110, 0xFFB00F10, .NEON, .A32, {} }, { .VCEQ, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000810, 0xFFB00F10, .NEON, .A32, {} }, - { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000E00, 0xFFB00F10, .NEON, .A32, {} }, { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000310, 0xFFB00F10, .NEON, .A32, {} }, + { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000E00, 0xFFB00F10, .NEON, .A32, {} }, { .VCGT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000300, 0xFFB00F10, .NEON, .A32, {} }, { .VACGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000E10, 0xFFB00F10, .NEON, .A32, {} }, { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000600, 0xFFB00F10, .NEON, .A32, {} }, @@ -690,10 +690,10 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00A00, 0xFFB00F50, .NEON, .A32, {} }, { .VMUL_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A008C0, 0xFFB00F50, .NEON, .A32, {} }, { .VMUL_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00840, 0xFFB00F50, .NEON, .A32, {} }, - { .VMLA_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00040, 0xFFB00F50, .NEON, .A32, {} }, { .VMLA_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A000C0, 0xFFB00F50, .NEON, .A32, {} }, - { .VMLS_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A004C0, 0xFFB00F50, .NEON, .A32, {} }, + { .VMLA_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00040, 0xFFB00F50, .NEON, .A32, {} }, { .VMLS_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00440, 0xFFB00F50, .NEON, .A32, {} }, + { .VMLS_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A004C0, 0xFFB00F50, .NEON, .A32, {} }, { .VMULL_LANE, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00A40, 0xFFB00F50, .NEON, .A32, {} }, { .VMLAL_LANE, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00240, 0xFFB00F50, .NEON, .A32, {} }, { .VMLSL_LANE, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00640, 0xFFB00F50, .NEON, .A32, {} }, @@ -704,23 +704,23 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .MOV, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03A00000, 0x0FEF0000, .BASE, .A32, {} }, { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {} }, { .VRECPE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0540, 0xFFBF0FD0, .NEON, .A32, {} }, - { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0400, 0xFFBF0FD0, .NEON, .A32, {} }, { .VRECPE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0440, 0xFFBF0FD0, .NEON, .A32, {} }, + { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0400, 0xFFBF0FD0, .NEON, .A32, {} }, { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {} }, - { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB05C0, 0xFFBF0FD0, .NEON, .A32, {} }, { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0480, 0xFFBF0FD0, .NEON, .A32, {} }, + { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB05C0, 0xFFBF0FD0, .NEON, .A32, {} }, { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB04C0, 0xFFBF0FD0, .NEON, .A32, {} }, - { .VRECPE_F, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {} }, { .VRECPE_F, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0540, 0xFFBF0FD0, .NEON, .A32, {} }, + { .VRECPE_F, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {} }, { .VRSQRTE_F, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB05C0, 0xFFBF0FD0, .NEON, .A32, {} }, { .VRSQRTE_F, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {} }, { .SHA1H, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B902C0, 0xFFBF0FD0, .CRYPTO, .A32, {} }, { .SHA1SU1, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0380, 0xFFBF0FD0, .CRYPTO, .A32, {} }, { .SHA256SU0, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA03C0, 0xFFBF0FD0, .CRYPTO, .A32, {} }, { .VCVT_BF16, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60600, 0xFFBF0FD0, .BF16, .A32, {} }, - { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50300, 0xFFB30FD0, .NEON, .A32, {} }, { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B50340, 0xFFB30FD0, .NEON, .A32, {} }, { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10340, 0xFFB30FD0, .NEON, .A32, {} }, + { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50300, 0xFFB30FD0, .NEON, .A32, {} }, { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90300, 0xFFB30FD0, .NEON, .A32, {} }, { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90740, 0xFFB30FD0, .NEON, .A32, {} }, { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90700, 0xFFB30FD0, .NEON, .A32, {} }, @@ -728,115 +728,115 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10300, 0xFFB30FD0, .NEON, .A32, {} }, { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90380, 0xFFB30FD0, .NEON, .A32, {} }, { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B907C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B903C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10380, 0xFFB30FD0, .NEON, .A32, {} }, { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90780, 0xFFB30FD0, .NEON, .A32, {} }, { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B503C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10380, 0xFFB30FD0, .NEON, .A32, {} }, { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B103C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B903C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50380, 0xFFB30FD0, .NEON, .A32, {} }, { .VMVN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B005C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VMVN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00580, 0xFFB30FD0, .NEON, .A32, {} }, + { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20200, 0xFFB30FD0, .NEON, .A32, {} }, { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60200, 0xFFB30FD0, .NEON, .A32, {} }, { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0200, 0xFFB30FD0, .NEON, .A32, {} }, - { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20200, 0xFFB30FD0, .NEON, .A32, {} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20280, 0xFFB30FD0, .NEON, .A32, {} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B202C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0280, 0xFFB30FD0, .NEON, .A32, {} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B202C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA02C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20280, 0xFFB30FD0, .NEON, .A32, {} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B602C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60280, 0xFFB30FD0, .NEON, .A32, {} }, - { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60240, 0xFFB30FD0, .NEON, .A32, {} }, - { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20240, 0xFFB30FD0, .NEON, .A32, {} }, { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0240, 0xFFB30FD0, .NEON, .A32, {} }, - { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00280, 0xFFB30FD0, .NEON, .A32, {} }, + { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20240, 0xFFB30FD0, .NEON, .A32, {} }, + { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60240, 0xFFB30FD0, .NEON, .A32, {} }, + { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80200, 0xFFB30FD0, .NEON, .A32, {} }, { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00200, 0xFFB30FD0, .NEON, .A32, {} }, { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B002C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80200, 0xFFB30FD0, .NEON, .A32, {} }, { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40200, 0xFFB30FD0, .NEON, .A32, {} }, + { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00280, 0xFFB30FD0, .NEON, .A32, {} }, { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00240, 0xFFB30FD0, .NEON, .A32, {} }, - { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B006C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00600, 0xFFB30FD0, .NEON, .A32, {} }, - { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00640, 0xFFB30FD0, .NEON, .A32, {} }, { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00680, 0xFFB30FD0, .NEON, .A32, {} }, + { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B006C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00640, 0xFFB30FD0, .NEON, .A32, {} }, + { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00600, 0xFFB30FD0, .NEON, .A32, {} }, { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3B20300, 0xFFB30FD0, .NEON, .A32, {} }, - { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3B60300, 0xFFB30FD0, .NEON, .A32, {} }, { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3BA0300, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80440, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80400, 0xFFB30FD0, .NEON, .A32, {} }, + { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3B60300, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00400, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40440, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00440, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80440, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80400, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40400, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B404C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B004C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B804C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40480, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80480, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00480, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCNT, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00500, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40480, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B404C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B804C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VCNT, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00540, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCNT, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00500, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV16, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00140, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV16, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00100, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV32, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B000C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40080, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV32, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B400C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40080, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00080, 0xFFB30FD0, .NEON, .A32, {} }, - { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80000, 0xFFB30FD0, .NEON, .A32, {} }, + { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40040, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80040, 0xFFB30FD0, .NEON, .A32, {} }, + { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00000, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40000, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00040, 0xFFB30FD0, .NEON, .A32, {} }, - { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00000, 0xFFB30FD0, .NEON, .A32, {} }, - { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40040, 0xFFB30FD0, .NEON, .A32, {} }, + { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80000, 0xFFB30FD0, .NEON, .A32, {} }, + { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BA0080, 0xFFB30FD0, .NEON, .A32, {} }, + { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B200C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B600C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20080, 0xFFB30FD0, .NEON, .A32, {} }, { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA00C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BA0080, 0xFFB30FD0, .NEON, .A32, {} }, { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60080, 0xFFB30FD0, .NEON, .A32, {} }, - { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B200C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60100, 0xFFB30FD0, .NEON, .A32, {} }, + { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B60140, 0xFFB30FD0, .NEON, .A32, {} }, + { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20140, 0xFFB30FD0, .NEON, .A32, {} }, { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20100, 0xFFB30FD0, .NEON, .A32, {} }, { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0140, 0xFFB30FD0, .NEON, .A32, {} }, - { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60100, 0xFFB30FD0, .NEON, .A32, {} }, - { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20140, 0xFFB30FD0, .NEON, .A32, {} }, - { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B60140, 0xFFB30FD0, .NEON, .A32, {} }, + { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B601C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60180, 0xFFB30FD0, .NEON, .A32, {} }, { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA01C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B201C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B601C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20180, 0xFFB30FD0, .NEON, .A32, {} }, - { .VSWP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20040, 0xFFB30FD0, .NEON, .A32, {} }, { .VSWP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20000, 0xFFB30FD0, .NEON, .A32, {} }, + { .VSWP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20040, 0xFFB30FD0, .NEON, .A32, {} }, { .AESE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00300, 0xFFB30FD0, .CRYPTO, .A32, {} }, { .AESD, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00340, 0xFFB30FD0, .CRYPTO, .A32, {} }, { .AESMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00380, 0xFFB30FD0, .CRYPTO, .A32, {} }, { .AESIMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B003C0, 0xFFB30FD0, .CRYPTO, .A32, {} }, - { .VCEQ_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10140, 0xFFB30FD0, .NEON, .A32, {} }, { .VCEQ_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10100, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCEQ_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10140, 0xFFB30FD0, .NEON, .A32, {} }, { .VCEQ_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90540, 0xFFB30FD0, .NEON, .A32, {} }, { .VCEQ_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90500, 0xFFB30FD0, .NEON, .A32, {} }, { .VCGE_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90480, 0xFFB30FD0, .NEON, .A32, {} }, { .VCGE_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B904C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCGE_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10080, 0xFFB30FD0, .NEON, .A32, {} }, { .VCGE_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B100C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCGE_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10080, 0xFFB30FD0, .NEON, .A32, {} }, { .VCGT_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90400, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCGT_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10040, 0xFFB30FD0, .NEON, .A32, {} }, { .VCGT_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90440, 0xFFB30FD0, .NEON, .A32, {} }, { .VCGT_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10000, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCGT_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10040, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLE_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90580, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLE_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B905C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLE_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B101C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLE_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90580, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLE_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10180, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLT_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90600, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLT_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10240, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLT_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10200, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLT_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90640, 0xFFB30FD0, .NEON, .A32, {} }, - { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00A00, 0xFFB00F70, .NEON, .A32, {} }, - { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00B00, 0xFFB00F70, .NEON, .A32, {} }, + { .VCLT_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10200, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLT_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10240, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLT_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90600, 0xFFB30FD0, .NEON, .A32, {} }, { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00900, 0xFFB00F70, .NEON, .A32, {} }, + { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00A00, 0xFFB00F70, .NEON, .A32, {} }, { .VTBL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00800, 0xFFB00F70, .NEON, .A32, {} }, - { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00A40, 0xFFB00F70, .NEON, .A32, {} }, + { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00B00, 0xFFB00F70, .NEON, .A32, {} }, { .VTBX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00840, 0xFFB00F70, .NEON, .A32, {} }, - { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00B40, 0xFFB00F70, .NEON, .A32, {} }, { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00940, 0xFFB00F70, .NEON, .A32, {} }, + { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00A40, 0xFFB00F70, .NEON, .A32, {} }, + { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00B40, 0xFFB00F70, .NEON, .A32, {} }, { .VDUP, {.QPR,.DPR_ELEM,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3B00C40, 0xFFB00FD0, .NEON, .A32, {} }, { .VDUP, {.DPR,.DPR_ELEM,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00C00, 0xFFB00FD0, .NEON, .A32, {} }, { .MOV, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03B00000, 0x0FFF0000, .BASE, .A32, {sets_flags=true} }, @@ -845,39 +845,39 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .MVN, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03E00000, 0x0FEF0000, .BASE, .A32, {} }, { .MVN, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03F00000, 0x0FFF0000, .BASE, .A32, {sets_flags=true} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000600, 0xFFF00F00, .NEON, .A32, {} }, - { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000700, 0xFFF00F00, .NEON, .A32, {} }, - { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000A00, 0xFFF00F00, .NEON, .A32, {} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000200, 0xFFF00F00, .NEON, .A32, {} }, + { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000A00, 0xFFF00F00, .NEON, .A32, {} }, + { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000700, 0xFFF00F00, .NEON, .A32, {} }, { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000300, 0xFFF00F00, .NEON, .A32, {} }, - { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000900, 0xFFF00F00, .NEON, .A32, {} }, { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000800, 0xFFF00F00, .NEON, .A32, {} }, - { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000500, 0xFFF00F00, .NEON, .A32, {} }, + { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000900, 0xFFF00F00, .NEON, .A32, {} }, { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000400, 0xFFF00F00, .NEON, .A32, {} }, - { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000100, 0xFFF00F00, .NEON, .A32, {} }, + { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000500, 0xFFF00F00, .NEON, .A32, {} }, { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000000, 0xFFF00F00, .NEON, .A32, {} }, - { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200600, 0xFFF00F00, .NEON, .A32, {} }, - { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200A00, 0xFFF00F00, .NEON, .A32, {} }, + { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000100, 0xFFF00F00, .NEON, .A32, {} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200200, 0xFFF00F00, .NEON, .A32, {} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200700, 0xFFF00F00, .NEON, .A32, {} }, + { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200600, 0xFFF00F00, .NEON, .A32, {} }, + { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200A00, 0xFFF00F00, .NEON, .A32, {} }, + { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200900, 0xFFF00F00, .NEON, .A32, {} }, { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200300, 0xFFF00F00, .NEON, .A32, {} }, { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200800, 0xFFF00F00, .NEON, .A32, {} }, - { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200900, 0xFFF00F00, .NEON, .A32, {} }, { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200500, 0xFFF00F00, .NEON, .A32, {} }, { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200400, 0xFFF00F00, .NEON, .A32, {} }, - { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200100, 0xFFF00F00, .NEON, .A32, {} }, { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200000, 0xFFF00F00, .NEON, .A32, {} }, + { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200100, 0xFFF00F00, .NEON, .A32, {} }, { .VST1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800800, 0xFFB00F00, .NEON, .A32, {} }, { .VST1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800000, 0xFFB00F00, .NEON, .A32, {} }, { .VST1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800400, 0xFFB00F00, .NEON, .A32, {} }, - { .VST2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800100, 0xFFB00D00, .NEON, .A32, {} }, { .VST2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800500, 0xFFB00D00, .NEON, .A32, {} }, { .VST2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800900, 0xFFB00D00, .NEON, .A32, {} }, + { .VST2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800100, 0xFFB00D00, .NEON, .A32, {} }, { .VST3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800A00, 0xFFB00D00, .NEON, .A32, {} }, { .VST3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800200, 0xFFB00D00, .NEON, .A32, {} }, { .VST3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800600, 0xFFB00D00, .NEON, .A32, {} }, { .VST4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800300, 0xFFB00D00, .NEON, .A32, {} }, - { .VST4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800B00, 0xFFB00D00, .NEON, .A32, {} }, { .VST4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800700, 0xFFB00D00, .NEON, .A32, {} }, + { .VST4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800B00, 0xFFB00D00, .NEON, .A32, {} }, { .VST1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800800, 0xFFB00C00, .NEON, .A32, {} }, { .VST1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800400, 0xFFB00C00, .NEON, .A32, {} }, { .VST1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800000, 0xFFB00C00, .NEON, .A32, {} }, @@ -893,8 +893,8 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .VLD2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00500, 0xFFB00D00, .NEON, .A32, {} }, { .VLD2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00900, 0xFFB00D00, .NEON, .A32, {} }, { .VLD2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00100, 0xFFB00D00, .NEON, .A32, {} }, - { .VLD3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00200, 0xFFB00D00, .NEON, .A32, {} }, { .VLD3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00A00, 0xFFB00D00, .NEON, .A32, {} }, + { .VLD3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00200, 0xFFB00D00, .NEON, .A32, {} }, { .VLD3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00600, 0xFFB00D00, .NEON, .A32, {} }, { .VLD4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00300, 0xFFB00D00, .NEON, .A32, {} }, { .VLD4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00B00, 0xFFB00D00, .NEON, .A32, {} }, @@ -1196,21 +1196,21 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .VRINTX, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB70B40, 0x0FBF0FD0, .V8, .A32, {} }, { .VRINTX, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB70A40, 0x0FBF0FD0, .V8, .A32, {} }, { .VJCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EB90BC0, 0x0FBF0FD0, .V8, .A32, {} }, - { .VCVT_FIXED, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBE0B40, 0x0FBF0FD0, .VFPV3, .A32, {} }, - { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0A40, 0x0FBF0FD0, .VFPV3, .A32, {} }, { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBB0A40, 0x0FBF0FD0, .VFPV3, .A32, {} }, - { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0940, 0x0FBF0FD0, .HALF_FP, .A32, {} }, + { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0A40, 0x0FBF0FD0, .VFPV3, .A32, {} }, + { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBF0A40, 0x0FBF0FD0, .VFPV3, .A32, {} }, { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0A40, 0x0FBF0FD0, .VFPV3, .A32, {} }, { .VCVT_FIXED, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBA0B40, 0x0FBF0FD0, .VFPV3, .A32, {} }, { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0940, 0x0FBF0FD0, .HALF_FP, .A32, {} }, - { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBF0A40, 0x0FBF0FD0, .VFPV3, .A32, {} }, + { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0940, 0x0FBF0FD0, .HALF_FP, .A32, {} }, + { .VCVT_FIXED, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBE0B40, 0x0FBF0FD0, .VFPV3, .A32, {} }, { .VCMP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40A40, 0x0FBF0F50, .VFPV2, .A32, {} }, { .VCMP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB40B40, 0x0FBF0F50, .VFPV2, .A32, {} }, { .VCMP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40940, 0x0FBF0F50, .HALF_FP, .A32, {} }, { .VCMPE, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40AC0, 0x0FBF0F50, .VFPV2, .A32, {} }, { .VCMPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB40BC0, 0x0FBF0F50, .VFPV2, .A32, {} }, - { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0A40, 0x0FBF0FC0, .VFPV3, .A32, {} }, { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0A40, 0x0FBF0FC0, .VFPV3, .A32, {} }, + { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0A40, 0x0FBF0FC0, .VFPV3, .A32, {} }, { .VMOV, {.SPR,.IMM8,.NONE,.NONE}, {.VD_S,.VFP_IMM8,.NONE,.NONE}, 0x0EB00A00, 0x0FB00FF0, .VFPV3, .A32, {} }, { .VMOV, {.DPR,.IMM8,.NONE,.NONE}, {.VD_D,.VFP_IMM8,.NONE,.NONE}, 0x0EB00B00, 0x0FB00FF0, .VFPV3, .A32, {} }, { .VDUP, {.DPR,.GPR,.NONE,.NONE}, {.VD_D,.RT_A32,.NONE,.NONE}, 0x0EC00B10, 0x0FF00FD0, .NEON, .A32, {} }, @@ -1273,18 +1273,20 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .VMOV_2GPR_Q, {.QPR_ELEM,.QPR_ELEM,.GPR,.GPR}, {.VD_Q,.VD_Q,.RT_T32,.RT2_T32}, 0xEC000F00, 0xFF900F11, .MVE_INT, .T32, {thumb32=true} }, { .VLDRB, {.QPR,.MEM,.NONE,.NONE}, {.VD_Q,.MEM_IMM12_OFFSET,.NONE,.NONE}, 0xED901E00, 0xFFB01F00, .MVE_INT, .T32, {thumb32=true} }, { .VSTRB, {.QPR,.MEM,.NONE,.NONE}, {.VD_Q,.MEM_IMM12_OFFSET,.NONE,.NONE}, 0xED801E00, 0xFFB01F00, .MVE_INT, .T32, {thumb32=true} }, - { .VCX1, {.IMM_COPROC,.SPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_S,.CDE_IMM_FIELD,.NONE}, 0xEC200000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VCX1, {.IMM_COPROC,.DPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_D,.CDE_IMM_FIELD,.NONE}, 0xEC300000, 0xFF300000, .CDE, .T32, {thumb32=true} }, + { .VCX1, {.IMM_COPROC,.SPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_S,.CDE_IMM_FIELD,.NONE}, 0xEC200000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VCX2, {.IMM_COPROC,.SPR,.SPR,.IMM}, {.CDE_COPROC_FIELD,.VD_S,.VM_S,.CDE_IMM_FIELD}, 0xEC600000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VCX2, {.IMM_COPROC,.DPR,.DPR,.IMM}, {.CDE_COPROC_FIELD,.VD_D,.VM_D,.CDE_IMM_FIELD}, 0xEC700000, 0xFF300000, .CDE, .T32, {thumb32=true} }, - { .VCX3, {.IMM_COPROC,.SPR,.SPR,.SPR}, {.CDE_COPROC_FIELD,.VD_S,.VN_S,.VM_S}, 0xEC800000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VCX3, {.IMM_COPROC,.DPR,.DPR,.DPR}, {.CDE_COPROC_FIELD,.VD_D,.VN_D,.VM_D}, 0xEC900000, 0xFF300000, .CDE, .T32, {thumb32=true} }, + { .VCX3, {.IMM_COPROC,.SPR,.SPR,.SPR}, {.CDE_COPROC_FIELD,.VD_S,.VN_S,.VM_S}, 0xEC800000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VADDLV, {.GPR,.GPR,.QPR,.NONE}, {.RD_T32,.RN_T32,.VM_Q,.NONE}, 0xEE890F00, 0xEFFF0FD1, .MVE_INT, .T32, {thumb32=true} }, { .VADDLVA, {.GPR,.GPR,.QPR,.NONE}, {.RD_T32,.RN_T32,.VM_Q,.NONE}, 0xEE890F20, 0xEFFF0FD1, .MVE_INT, .T32, {thumb32=true} }, { .VMAXNMV, {.GPR,.QPR,.NONE,.NONE}, {.RD_T32,.VM_Q,.NONE,.NONE}, 0xEEEE0F00, 0xEFFF0FD1, .MVE_FP, .T32, {thumb32=true} }, { .VMAXNMAV, {.GPR,.QPR,.NONE,.NONE}, {.RD_T32,.VM_Q,.NONE,.NONE}, 0xEEEC0F00, 0xEFFF0FD1, .MVE_FP, .T32, {thumb32=true} }, { .VMINNMV, {.GPR,.QPR,.NONE,.NONE}, {.RD_T32,.VM_Q,.NONE,.NONE}, 0xEEEE0F80, 0xEFFF0FD1, .MVE_FP, .T32, {thumb32=true} }, { .VMINNMAV, {.GPR,.QPR,.NONE,.NONE}, {.RD_T32,.VM_Q,.NONE,.NONE}, 0xEEEC0F80, 0xEFFF0FD1, .MVE_FP, .T32, {thumb32=true} }, + { .VMLSV, {.GPR,.QPR,.QPR,.NONE}, {.RDLO_A32,.VN_Q_MVE,.VM_Q_MVE,.NONE}, 0xEEF00E01, 0xFFF10FF1, .MVE_INT, .T32, {thumb32=true} }, + { .VMLSVA, {.GPR,.QPR,.QPR,.NONE}, {.RDLO_A32,.VN_Q_MVE,.VM_Q_MVE,.NONE}, 0xEEF00E21, 0xFFF10FF1, .MVE_INT, .T32, {thumb32=true} }, { .VQMOVNB, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xEE330E01, 0xFFB31FD1, .MVE_INT, .T32, {thumb32=true} }, { .VQMOVNT, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xEE331E01, 0xFFB31FD1, .MVE_INT, .T32, {thumb32=true} }, { .VQMOVUNB, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xEE310E81, 0xFFB31FD1, .MVE_INT, .T32, {thumb32=true} }, @@ -1549,10 +1551,10 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ { .VLDRD_GATHER, {.QPR,.MEM,.QPR,.NONE}, {.VD_Q,.RN_T32,.VM_Q,.NONE}, 0xFC900FD0, 0xFEF00FF1, .MVE_INT, .T32, {thumb32=true} }, { .VCMLA_MVE, {.QPR,.QPR,.QPR,.IMM}, {.VD_Q,.VN_Q,.VM_Q,.MVE_ROT_CMLA}, 0xFC200840, 0xFE611FF1, .MVE_FP, .T32, {thumb32=true} }, { .VLDRB_GATHER, {.QPR,.MEM,.QPR,.NONE}, {.VD_Q,.RN_T32,.VM_Q,.NONE}, 0xFC900E00, 0xFEF00FD1, .MVE_INT, .T32, {thumb32=true} }, - { .VCX1A, {.IMM_COPROC,.DPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_D,.CDE_IMM_FIELD,.NONE}, 0xFC300000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VCX1A, {.IMM_COPROC,.SPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_S,.CDE_IMM_FIELD,.NONE}, 0xFC200000, 0xFF300000, .CDE, .T32, {thumb32=true} }, - { .VCX2A, {.IMM_COPROC,.SPR,.SPR,.IMM}, {.CDE_COPROC_FIELD,.VD_S,.VM_S,.CDE_IMM_FIELD}, 0xFC600000, 0xFF300000, .CDE, .T32, {thumb32=true} }, + { .VCX1A, {.IMM_COPROC,.DPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_D,.CDE_IMM_FIELD,.NONE}, 0xFC300000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VCX2A, {.IMM_COPROC,.DPR,.DPR,.IMM}, {.CDE_COPROC_FIELD,.VD_D,.VM_D,.CDE_IMM_FIELD}, 0xFC700000, 0xFF300000, .CDE, .T32, {thumb32=true} }, + { .VCX2A, {.IMM_COPROC,.SPR,.SPR,.IMM}, {.CDE_COPROC_FIELD,.VD_S,.VM_S,.CDE_IMM_FIELD}, 0xFC600000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VCX3A, {.IMM_COPROC,.DPR,.DPR,.DPR}, {.CDE_COPROC_FIELD,.VD_D,.VN_D,.VM_D}, 0xFC900000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VCX3A, {.IMM_COPROC,.SPR,.SPR,.SPR}, {.CDE_COPROC_FIELD,.VD_S,.VN_S,.VM_S}, 0xFC800000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VPST, {.MVE_VPT_MASK,.NONE,.NONE,.NONE}, {.MVE_VPT_MASK_FIELD,.NONE,.NONE,.NONE}, 0xFE710F4D, 0xFFFFFFFF, .MVE_INT, .T32, {thumb32=true} }, @@ -1685,7 +1687,7 @@ DECODE_ENTRIES := [1673]lib.Decode_Entry{ } @(rodata) -DECODE_FORM_IDX := [1673]u16{ +DECODE_FORM_IDX := [1675]u16{ 0, 2, 1, 1, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 1, 5, 4, 0, 2, 1, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 2, 2, 2, 1, 1, 2, 2, 2, 5, 4, 0, 0, @@ -1696,29 +1698,29 @@ DECODE_FORM_IDX := [1673]u16{ 2, 1, 0, 0, 0, 3, 3, 3, 5, 4, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 2, 1, - 1, 1, 1, 0, 0, 0, 5, 4, 1, 1, 1, 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, 3, 9, + 1, 1, 1, 0, 0, 0, 5, 4, 1, 1, 1, 1, 1, 1, 14, 9, + 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, 0, 8, 0, 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, + 2, 0, 6, 3, 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, 8, 10, 4, 5, 5, 6, 6, 3, 5, 5, 1, 5, 5, 5, 4, 4, - 5, 9, 5, 1, 4, 0, 7, 13, 7, 5, 9, 3, 2, 2, 2, 2, + 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, 0, 0, 0, 25, 24, 21, 22, 23, 0, 0, - 0, 0, 10, 11, 12, 17, 13, 20, 19, 11, 14, 10, 16, 15, 18, 6, - 0, 0, 0, 4, 8, 2, 3, 6, 9, 7, 5, 0, 0, 0, 0, 0, + 3, 3, 0, 3, 0, 3, 0, 0, 0, 22, 25, 23, 21, 24, 0, 0, + 0, 0, 10, 11, 10, 17, 20, 14, 16, 19, 15, 12, 11, 13, 18, 0, + 6, 0, 0, 9, 4, 8, 2, 5, 7, 3, 6, 0, 0, 0, 0, 0, 1, 1, 1, 1, 5, 0, 0, 0, 0, 4, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 1, 1, 2, 2, 1, 4, 1, 4, 4, 1, 1, 1, 1, 1, 1, - 1, 0, 0, 1, 1, 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, 9, 7, + 1, 1, 1, 2, 2, 1, 4, 1, 4, 1, 4, 1, 1, 1, 1, 1, + 1, 0, 0, 1, 1, 0, 1, 0, 3, 0, 3, 0, 3, 7, 13, 7, + 1, 9, 9, 14, 12, 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, 13, 11, - 3, 6, 6, 8, 8, 6, 6, 0, 0, 8, 6, 6, 0, 6, 6, 4, + 3, 6, 6, 8, 8, 6, 6, 0, 0, 6, 8, 6, 0, 6, 6, 4, 3, 3, 3, 6, 2, 2, 0, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, @@ -1728,20 +1730,20 @@ DECODE_FORM_IDX := [1673]u16{ 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 3, 3, 3, 1, 1, 2, 2, 2, 0, 0, 0, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 3, 5, 5, 3, 3, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 5, 5, 3, 3, 3, 3, - 1, 1, 3, 3, 0, 2, 3, 0, 1, 2, 3, 0, 1, 0, 1, 1, - 0, 0, 0, 0, 0, 3, 6, 5, 4, 9, 8, 7, 2, 4, 9, 7, - 8, 6, 2, 5, 3, 1, 0, 1, 2, 0, 0, 3, 2, 5, 4, 1, - 1, 0, 2, 4, 0, 5, 2, 1, 3, 3, 0, 1, 2, 2, 3, 4, - 5, 2, 0, 4, 3, 1, 4, 3, 5, 1, 2, 0, 0, 1, 1, 0, - 2, 1, 3, 0, 2, 5, 1, 3, 0, 4, 4, 0, 5, 2, 1, 3, - 0, 4, 1, 2, 3, 1, 4, 2, 3, 0, 1, 0, 0, 0, 0, 0, - 1, 0, 3, 2, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 1, 0, - 2, 1, 0, 3, 2, 3, 1, 0, 2, 0, 3, 1, 3, 2, 3, 0, - 3, 0, 3, 2, 0, 1, 3, 2, 1, 0, 1, 0, 1, 0, 2, 1, - 3, 0, 2, 0, 1, 1, 0, 1, 0, 6, 4, 5, 0, 1, 2, 2, - 0, 1, 0, 2, 1, 2, 1, 0, 2, 2, 0, 0, 0, 5, 7, 4, - 6, 1, 2, 0, 0, 2, 1, 0, 2, 1, 1, 2, 0, 0, 0, 2, + 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 3, 3, 5, 3, 3, 3, + 1, 1, 3, 3, 0, 2, 3, 1, 0, 2, 0, 3, 1, 1, 0, 1, + 0, 0, 0, 0, 0, 6, 5, 3, 4, 9, 8, 7, 2, 4, 9, 2, + 8, 6, 5, 7, 3, 1, 0, 0, 1, 2, 2, 3, 5, 0, 4, 1, + 2, 0, 1, 2, 0, 5, 1, 4, 3, 2, 3, 1, 0, 2, 4, 3, + 0, 4, 3, 5, 2, 1, 3, 2, 0, 1, 4, 5, 1, 0, 1, 0, + 2, 3, 1, 0, 4, 5, 0, 1, 3, 2, 2, 3, 4, 0, 5, 1, + 1, 3, 2, 0, 4, 3, 1, 4, 2, 0, 0, 1, 0, 0, 0, 0, + 0, 1, 3, 2, 2, 3, 1, 0, 2, 1, 3, 0, 3, 1, 2, 0, + 3, 0, 1, 2, 1, 2, 0, 3, 0, 1, 2, 3, 3, 2, 3, 0, + 3, 0, 3, 2, 3, 1, 0, 2, 0, 1, 0, 1, 0, 1, 3, 0, + 2, 1, 1, 2, 0, 1, 0, 0, 1, 6, 4, 5, 1, 2, 0, 2, + 0, 1, 0, 1, 2, 2, 1, 0, 2, 2, 0, 0, 0, 5, 7, 4, + 6, 1, 2, 0, 2, 0, 1, 0, 2, 1, 1, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1760,41 +1762,41 @@ DECODE_FORM_IDX := [1673]u16{ 3, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 2, 1, 0, 9, 7, 6, 8, 3, 2, 4, 0, 1, 5, 0, 1, 1, 0, 3, 1, 0, 2, 1, 0, 0, 1, 1, 0, - 1, 0, 0, 6, 0, 3, 9, 2, 7, 8, 1, 0, 1, 4, 0, 1, - 5, 4, 2, 3, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 1, 0, 0, 3, 0, 1, 2, 7, 8, 9, 6, 0, 1, 4, 0, 1, + 4, 5, 2, 3, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 2, 2, 1, 6, 7, 6, 7, 4, 4, 4, 4, 4, 3, 5, 4, 7, 5, 11, 10, 8, 10, 9, 8, 7, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 7, 2, 2, 2, - 2, 0, 0, 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, + 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 7, 2, + 2, 2, 2, 0, 0, 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, 15, 15, 8, 8, 2, 10, 10, 12, 12, 8, 4, 6, - 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 3, 6, 4, 8, 9, 7, 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, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 15, 15, 8, 8, 2, 10, 10, 12, 12, 8, + 4, 6, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 3, 6, 4, 8, 9, 7, 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, 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, 3, - 1, 1, 0, 5, 5, 5, 4, 1, 1, 1, 1, 1, 1, 2, 1, 2, - 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 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, 5, 5, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 1, 1, 0, 5, 5, 5, 4, 1, 1, 1, 1, 1, 1, 2, + 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 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, 5, 5, 1, 1, 1, 2, } @(rodata) -DECODE_BUCKET_LIST := [5417]u16{ +DECODE_BUCKET_LIST := [5421]u16{ 0, 1, 2, 3, 0, 4, 1, 5, 2, 6, 7, 8, 9, 6, 10, 7, 11, 8, 12, 35, 36, 37, 13, 14, 41, 42, 43, 15, 13, 16, 14, 17, 47, 18, 19, 51, 52, 53, 20, 21, 18, 19, 22, 23, 24, 25, 22, 26, @@ -1987,153 +1989,153 @@ DECODE_BUCKET_LIST := [5417]u16{ 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, 1388, 1387, 1389, 1390, 1391, 1392, 1393, 1394, 1396, 1395, - 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, - 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1396, - 1395, 1397, 1379, 1380, 1381, 1382, 1384, 1383, 1385, 1388, 1387, 1389, 1390, 1391, 1392, 1393, - 1394, 1395, 1396, 1397, 1428, 1429, 1430, 1431, 1426, 1427, 1395, 1396, 1397, 1432, 1433, 1434, + 1381, 1382, 1383, 1384, 1386, 1385, 1387, 1388, 1390, 1389, 1391, 1392, 1393, 1394, 1395, 1396, + 1398, 1397, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, + 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, + 1429, 1398, 1397, 1399, 1381, 1382, 1383, 1384, 1386, 1385, 1387, 1389, 1390, 1391, 1392, 1393, + 1394, 1395, 1396, 1397, 1398, 1399, 1430, 1431, 1432, 1433, 1428, 1429, 1398, 1397, 1399, 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, 1530, - 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, - 1547, 1270, 1271, 1272, 1273, 1274, 1275, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, - 1557, 1558, 1559, 1560, 1561, 1562, 1280, 1281, 1282, 1283, 1284, 1285, 1563, 1564, 1565, 1290, - 1291, 1292, 1566, 1297, 1298, 1299, 1300, 1301, 1302, 1306, 1307, 1567, 1308, 1309, 1568, 1310, - 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1569, 1570, 1571, 1572, 1573, 1574, - 1575, 1576, 1321, 1577, 1322, 1323, 1324, 1325, 1578, 1326, 1327, 1328, 1329, 1330, 1331, 1332, + 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1543, 1542, 1544, 1545, 1547, + 1546, 1548, 1549, 1270, 1271, 1272, 1273, 1274, 1275, 1550, 1551, 1552, 1553, 1554, 1555, 1556, + 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1282, 1283, 1284, 1285, 1286, 1287, 1565, 1566, + 1567, 1292, 1293, 1294, 1568, 1299, 1300, 1301, 1302, 1303, 1304, 1308, 1309, 1569, 1310, 1311, + 1570, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1571, 1572, 1573, 1574, + 1575, 1576, 1577, 1578, 1323, 1579, 1324, 1325, 1326, 1327, 1580, 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, 1579, 1580, 1581, 1582, 1583, - 1584, 1585, 1586, 1362, 1363, 1364, 1365, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1593, 1594, - 1594, 1595, 1595, 1596, 1597, 1598, 1599, 1600, 1600, 1601, 1601, 1602, 1602, 1603, 1603, 1604, + 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1581, 1582, 1583, + 1584, 1585, 1586, 1587, 1588, 1364, 1365, 1366, 1367, 1589, 1590, 1591, 1592, 1593, 1594, 1595, + 1595, 1596, 1596, 1597, 1597, 1598, 1599, 1600, 1601, 1602, 1602, 1603, 1603, 1604, 1604, 1605, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, - 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, - 1636, 1636, 1637, 1637, 1638, 1638, 1639, 1639, 1640, 1640, 1641, 1641, 1642, 1642, 1643, 1643, - 1644, 1644, 1645, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, - 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1667, 1668, 1668, 1669, 1669, 1669, - 1670, 1671, 1669, 1672, 1672, 1217, 1218, 1219, 1220, 1225, 1231, 1221, 1230, 1231, 1230, 1228, - 1226, 1228, 1224, 1226, 1214, 1215, 1222, 1231, 1210, 1211, 1212, 1213, 1216, 1230, 1231, 1230, - 1229, 1227, 1223, 1229, 1227, 1231, 1230, 1231, 1209, 1230, 1231, 1230, 1231, 1230, 1244, 1243, - 1236, 1244, 1243, 1250, 1250, 1232, 1233, 1234, 1235, 1241, 1240, 1249, 1232, 1233, 1234, 1235, - 1240, 1241, 1249, 1242, 1242, 1245, 1237, 1245, 1239, 1247, 1247, 1248, 1248, 1238, 1246, 1246, - 1261, 1268, 1269, 1261, 1264, 1266, 1265, 1267, 1261, 1268, 1269, 1251, 1252, 1253, 1254, 1261, - 1264, 1266, 1265, 1267, 1268, 1269, 1264, 1266, 1265, 1267, 1268, 1269, 1264, 1266, 1265, 1267, - 1251, 1252, 1253, 1254, 1258, 1259, 1260, 1263, 1255, 1256, 1257, 1262, 1258, 1259, 1260, 1263, - 1255, 1256, 1257, 1262, 1286, 1290, 1291, 1303, 1304, 1306, 1307, 1308, 1319, 1320, 1323, 1326, - 1327, 1330, 1331, 1332, 1333, 1334, 1335, 1344, 1345, 1346, 1347, 1370, 1286, 1290, 1291, 1303, - 1305, 1306, 1307, 1308, 1320, 1323, 1326, 1327, 1330, 1331, 1332, 1333, 1334, 1335, 1344, 1345, - 1346, 1347, 1370, 1290, 1291, 1303, 1304, 1306, 1307, 1308, 1320, 1323, 1326, 1327, 1330, 1331, - 1332, 1333, 1334, 1335, 1344, 1345, 1346, 1347, 1370, 1276, 1277, 1278, 1279, 1290, 1291, 1292, - 1303, 1305, 1306, 1307, 1308, 1309, 1318, 1320, 1323, 1326, 1327, 1330, 1331, 1332, 1333, 1334, - 1335, 1344, 1345, 1346, 1347, 1370, 1290, 1291, 1304, 1306, 1307, 1308, 1319, 1320, 1323, 1326, - 1327, 1330, 1331, 1332, 1333, 1334, 1335, 1344, 1345, 1346, 1347, 1366, 1370, 1290, 1291, 1305, - 1306, 1307, 1308, 1320, 1323, 1326, 1327, 1330, 1331, 1332, 1333, 1334, 1335, 1344, 1345, 1346, - 1347, 1366, 1370, 1290, 1291, 1304, 1306, 1307, 1308, 1320, 1323, 1326, 1327, 1330, 1331, 1332, - 1333, 1334, 1335, 1344, 1345, 1346, 1347, 1366, 1370, 1276, 1277, 1278, 1279, 1290, 1291, 1292, - 1305, 1306, 1307, 1308, 1309, 1318, 1320, 1323, 1326, 1327, 1330, 1331, 1332, 1333, 1334, 1335, - 1344, 1345, 1346, 1347, 1366, 1370, 1270, 1271, 1287, 1288, 1289, 1299, 1300, 1301, 1302, 1312, - 1313, 1314, 1315, 1328, 1329, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1360, 1361, 1365, - 1368, 1371, 1328, 1329, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1368, 1371, 1287, 1328, - 1329, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1368, 1371, 1297, 1298, 1310, 1311, 1316, - 1317, 1328, 1329, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1368, 1371, 1287, 1288, 1289, - 1299, 1300, 1301, 1302, 1312, 1313, 1314, 1315, 1328, 1329, 1336, 1337, 1338, 1339, 1340, 1341, - 1342, 1343, 1360, 1361, 1365, 1367, 1369, 1371, 1328, 1329, 1336, 1337, 1338, 1339, 1340, 1341, - 1342, 1343, 1367, 1369, 1371, 1272, 1273, 1274, 1275, 1282, 1283, 1284, 1285, 1287, 1328, 1329, - 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1367, 1369, 1371, 1280, 1281, 1297, 1298, 1310, - 1311, 1316, 1317, 1328, 1329, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1367, 1369, 1371, - 1293, 1321, 1324, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1294, - 1321, 1324, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1295, 1322, - 1325, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1296, 1322, 1325, - 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1293, 1321, 1324, 1348, - 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1294, 1321, 1324, 1348, 1349, - 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1295, 1322, 1325, 1348, 1349, 1350, - 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1296, 1322, 1325, 1348, 1349, 1350, 1351, - 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1362, 1363, 1364, 1362, 1363, 1364, 1362, 1363, - 1364, 1362, 1363, 1364, 1362, 1363, 1364, 1362, 1363, 1364, 1362, 1363, 1364, 1362, 1363, 1364, - 1372, 1374, 1375, 1376, 1386, 1388, 1387, 1396, 1395, 1397, 1374, 1375, 1377, 1379, 1386, 1388, - 1387, 1396, 1395, 1397, 1374, 1375, 1386, 1394, 1396, 1395, 1397, 1374, 1375, 1386, 1394, 1395, - 1396, 1397, 1373, 1375, 1378, 1384, 1383, 1386, 1393, 1395, 1396, 1397, 1375, 1384, 1383, 1386, - 1393, 1396, 1395, 1397, 1375, 1385, 1386, 1395, 1396, 1397, 1375, 1385, 1386, 1396, 1395, 1397, - 1389, 1395, 1396, 1397, 1380, 1389, 1396, 1395, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1396, - 1395, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1396, 1395, 1397, 1375, 1386, 1396, 1395, 1397, - 1375, 1382, 1386, 1396, 1395, 1397, 1375, 1386, 1395, 1396, 1397, 1375, 1386, 1395, 1396, 1397, - 1375, 1386, 1391, 1396, 1395, 1397, 1375, 1386, 1391, 1396, 1395, 1397, 1375, 1386, 1392, 1395, - 1396, 1397, 1375, 1386, 1392, 1395, 1396, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1395, 1396, - 1397, 1381, 1395, 1396, 1397, 1390, 1395, 1396, 1397, 1390, 1395, 1396, 1397, 1395, 1396, 1397, - 1395, 1396, 1397, 1395, 1396, 1397, 1396, 1395, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1426, - 1396, 1395, 1397, 1395, 1396, 1397, 1396, 1395, 1397, 1396, 1395, 1397, 1396, 1395, 1397, 1395, - 1396, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1427, 1395, 1396, 1397, 1395, 1396, 1397, 1395, - 1396, 1397, 1395, 1396, 1397, 1424, 1396, 1395, 1397, 1396, 1395, 1397, 1418, 1424, 1395, 1396, - 1397, 1395, 1396, 1397, 1422, 1396, 1395, 1397, 1395, 1396, 1397, 1420, 1421, 1395, 1396, 1397, - 1395, 1396, 1397, 1417, 1425, 1395, 1396, 1397, 1396, 1395, 1397, 1398, 1399, 1400, 1401, 1402, - 1404, 1405, 1406, 1407, 1409, 1410, 1411, 1412, 1419, 1425, 1396, 1395, 1397, 1403, 1408, 1414, - 1415, 1416, 1396, 1395, 1397, 1423, 1395, 1396, 1397, 1395, 1396, 1397, 1413, 1395, 1396, 1397, - 1395, 1396, 1397, 1387, 1388, 1396, 1395, 1397, 1379, 1387, 1388, 1396, 1395, 1397, 1394, 1396, - 1395, 1397, 1394, 1396, 1395, 1397, 1384, 1383, 1393, 1395, 1396, 1397, 1383, 1384, 1393, 1395, - 1396, 1397, 1385, 1396, 1395, 1397, 1385, 1395, 1396, 1397, 1389, 1395, 1396, 1397, 1380, 1389, - 1395, 1396, 1397, 1395, 1396, 1397, 1396, 1395, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1396, - 1395, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1382, 1396, 1395, 1397, 1395, 1396, 1397, 1396, - 1395, 1397, 1391, 1395, 1396, 1397, 1391, 1395, 1396, 1397, 1392, 1395, 1396, 1397, 1392, 1395, - 1396, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1396, 1395, 1397, 1381, 1396, 1395, 1397, 1390, - 1396, 1395, 1397, 1390, 1396, 1395, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1395, 1396, 1397, - 1395, 1396, 1397, 1396, 1395, 1397, 1395, 1396, 1397, 1426, 1396, 1395, 1397, 1396, 1395, 1397, - 1395, 1396, 1397, 1396, 1395, 1397, 1396, 1395, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1395, - 1396, 1397, 1427, 1396, 1395, 1397, 1396, 1395, 1397, 1396, 1395, 1397, 1396, 1395, 1397, 1396, - 1395, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1396, 1395, 1397, 1396, 1395, - 1397, 1396, 1395, 1397, 1395, 1396, 1397, 1428, 1429, 1430, 1395, 1396, 1397, 1396, 1395, 1397, - 1396, 1395, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1395, 1396, 1397, 1431, - 1395, 1396, 1397, 1435, 1434, 1437, 1436, 1441, 1433, 1432, 1443, 1447, 1440, 1446, 1449, 1448, - 1445, 1443, 1444, 1438, 1439, 1442, 1450, 1451, 1454, 1507, 1513, 1457, 1507, 1516, 1453, 1508, - 1512, 1456, 1508, 1515, 1452, 1509, 1511, 1455, 1509, 1514, 1510, 1510, 1463, 1464, 1465, 1466, - 1467, 1473, 1479, 1485, 1491, 1497, 1459, 1460, 1461, 1462, 1468, 1474, 1480, 1486, 1492, 1498, - 1469, 1475, 1481, 1487, 1493, 1499, 1458, 1471, 1477, 1483, 1489, 1495, 1501, 1472, 1478, 1484, - 1490, 1496, 1502, 1470, 1476, 1482, 1488, 1494, 1500, 1503, 1517, 1518, 1506, 1521, 1504, 1519, - 1505, 1522, 1520, 1545, 1544, 1538, 1541, 1542, 1538, 1540, 1543, 1545, 1544, 1541, 1542, 1540, - 1543, 1529, 1530, 1531, 1532, 1533, 1534, 1545, 1523, 1524, 1525, 1526, 1527, 1528, 1535, 1536, - 1537, 1539, 1544, 1538, 1541, 1542, 1538, 1540, 1543, 1529, 1530, 1531, 1532, 1533, 1534, 1545, - 1523, 1524, 1525, 1526, 1527, 1528, 1544, 1541, 1542, 1540, 1543, 1538, 1538, 1535, 1536, 1537, - 1539, 1538, 1538, 1562, 1290, 1291, 1306, 1307, 1308, 1568, 1319, 1320, 1573, 1574, 1575, 1576, - 1323, 1578, 1326, 1327, 1330, 1331, 1332, 1333, 1334, 1335, 1344, 1345, 1346, 1347, 1591, 1290, - 1291, 1306, 1307, 1308, 1568, 1320, 1573, 1574, 1575, 1576, 1323, 1578, 1326, 1327, 1330, 1331, - 1332, 1333, 1334, 1335, 1344, 1345, 1346, 1347, 1591, 1290, 1291, 1306, 1307, 1308, 1568, 1320, - 1573, 1574, 1575, 1576, 1323, 1578, 1326, 1327, 1330, 1331, 1332, 1333, 1334, 1335, 1344, 1345, - 1346, 1347, 1591, 1547, 1556, 1557, 1290, 1291, 1292, 1306, 1307, 1308, 1309, 1568, 1318, 1320, - 1573, 1574, 1575, 1576, 1323, 1578, 1326, 1327, 1330, 1331, 1332, 1333, 1334, 1335, 1344, 1345, - 1346, 1347, 1591, 1562, 1290, 1291, 1306, 1307, 1308, 1568, 1319, 1320, 1573, 1574, 1575, 1576, - 1323, 1578, 1326, 1327, 1330, 1331, 1332, 1333, 1334, 1335, 1344, 1345, 1346, 1347, 1587, 1591, - 1290, 1291, 1306, 1307, 1308, 1568, 1320, 1573, 1574, 1575, 1576, 1323, 1578, 1326, 1327, 1330, - 1331, 1332, 1333, 1334, 1335, 1344, 1345, 1346, 1347, 1587, 1591, 1290, 1291, 1306, 1307, 1308, - 1568, 1320, 1573, 1574, 1575, 1576, 1323, 1578, 1326, 1327, 1330, 1331, 1332, 1333, 1334, 1335, - 1344, 1345, 1346, 1347, 1587, 1591, 1546, 1556, 1557, 1290, 1291, 1292, 1306, 1307, 1308, 1309, - 1568, 1318, 1320, 1573, 1574, 1575, 1576, 1323, 1578, 1326, 1327, 1330, 1331, 1332, 1333, 1334, - 1335, 1344, 1345, 1346, 1347, 1587, 1591, 1270, 1271, 1299, 1300, 1301, 1302, 1312, 1313, 1314, - 1315, 1569, 1570, 1571, 1572, 1578, 1328, 1329, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, - 1583, 1584, 1585, 1586, 1365, 1589, 1592, 1569, 1570, 1571, 1572, 1578, 1328, 1329, 1336, 1337, - 1338, 1339, 1340, 1341, 1342, 1343, 1589, 1592, 1569, 1570, 1571, 1572, 1578, 1328, 1329, 1336, - 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1589, 1592, 1554, 1555, 1297, 1298, 1310, 1311, 1316, - 1317, 1569, 1570, 1571, 1572, 1578, 1328, 1329, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, - 1579, 1580, 1581, 1582, 1589, 1592, 1299, 1300, 1301, 1302, 1312, 1313, 1314, 1315, 1569, 1570, - 1571, 1572, 1578, 1328, 1329, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1583, 1584, 1585, - 1586, 1365, 1588, 1590, 1592, 1569, 1570, 1571, 1572, 1578, 1328, 1329, 1336, 1337, 1338, 1339, - 1340, 1341, 1342, 1343, 1588, 1590, 1592, 1272, 1273, 1274, 1275, 1282, 1283, 1284, 1285, 1569, - 1570, 1571, 1572, 1578, 1328, 1329, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1588, 1590, - 1592, 1554, 1555, 1280, 1281, 1297, 1298, 1310, 1311, 1316, 1317, 1569, 1570, 1571, 1572, 1578, - 1328, 1329, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1579, 1580, 1581, 1582, 1588, 1590, - 1592, 1566, 1567, 1568, 1321, 1577, 1324, 1578, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, - 1356, 1357, 1358, 1359, 1567, 1568, 1321, 1577, 1324, 1578, 1348, 1349, 1350, 1351, 1352, 1353, - 1354, 1355, 1356, 1357, 1358, 1359, 1568, 1577, 1322, 1325, 1578, 1348, 1349, 1350, 1351, 1352, - 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1568, 1577, 1322, 1325, 1578, 1348, 1349, 1350, 1351, - 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1566, 1567, 1568, 1321, 1577, 1324, 1578, 1348, - 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1567, 1568, 1321, 1577, 1324, - 1578, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1568, 1577, 1322, - 1325, 1578, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1568, 1577, - 1322, 1325, 1578, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1578, - 1362, 1363, 1364, 1578, 1362, 1363, 1364, 1578, 1362, 1363, 1364, 1548, 1549, 1550, 1551, 1552, - 1553, 1558, 1559, 1560, 1561, 1563, 1564, 1565, 1578, 1362, 1363, 1364, 1578, 1362, 1363, 1364, - 1578, 1362, 1363, 1364, 1578, 1362, 1363, 1364, 1548, 1549, 1550, 1551, 1552, 1553, 1558, 1559, - 1560, 1561, 1563, 1564, 1565, 1578, 1362, 1363, 1364, + 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1629, 1630, 1631, 1632, 1633, 1634, 1635, + 1636, 1637, 1638, 1638, 1639, 1639, 1640, 1640, 1641, 1641, 1642, 1642, 1643, 1643, 1644, 1644, + 1645, 1645, 1646, 1646, 1647, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, + 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1669, 1670, 1670, 1671, + 1671, 1671, 1672, 1673, 1671, 1674, 1674, 1217, 1218, 1219, 1220, 1225, 1231, 1221, 1230, 1231, + 1230, 1228, 1226, 1228, 1224, 1226, 1214, 1215, 1222, 1231, 1210, 1211, 1212, 1213, 1216, 1230, + 1231, 1230, 1229, 1227, 1223, 1229, 1227, 1231, 1230, 1231, 1209, 1230, 1231, 1230, 1231, 1230, + 1244, 1243, 1236, 1244, 1243, 1250, 1250, 1232, 1233, 1234, 1235, 1241, 1240, 1249, 1232, 1233, + 1234, 1235, 1240, 1241, 1249, 1242, 1242, 1245, 1237, 1245, 1239, 1247, 1247, 1248, 1248, 1238, + 1246, 1246, 1261, 1269, 1268, 1261, 1265, 1266, 1264, 1267, 1261, 1269, 1268, 1251, 1252, 1253, + 1254, 1261, 1265, 1266, 1264, 1267, 1269, 1268, 1265, 1266, 1264, 1267, 1269, 1268, 1265, 1266, + 1264, 1267, 1251, 1252, 1253, 1254, 1258, 1259, 1260, 1263, 1255, 1256, 1257, 1262, 1258, 1259, + 1260, 1263, 1255, 1256, 1257, 1262, 1288, 1292, 1293, 1305, 1306, 1308, 1309, 1310, 1321, 1322, + 1325, 1328, 1329, 1332, 1333, 1334, 1335, 1336, 1337, 1346, 1347, 1348, 1349, 1372, 1288, 1292, + 1293, 1305, 1307, 1308, 1309, 1310, 1322, 1325, 1328, 1329, 1332, 1333, 1334, 1335, 1336, 1337, + 1346, 1347, 1348, 1349, 1372, 1292, 1293, 1305, 1306, 1308, 1309, 1310, 1322, 1325, 1328, 1329, + 1332, 1333, 1334, 1335, 1336, 1337, 1346, 1347, 1348, 1349, 1372, 1278, 1279, 1280, 1281, 1292, + 1293, 1294, 1305, 1307, 1308, 1309, 1310, 1311, 1320, 1322, 1325, 1328, 1329, 1332, 1333, 1334, + 1335, 1336, 1337, 1346, 1347, 1348, 1349, 1372, 1292, 1293, 1306, 1308, 1309, 1310, 1321, 1322, + 1325, 1328, 1329, 1332, 1333, 1334, 1335, 1336, 1337, 1346, 1347, 1348, 1349, 1368, 1372, 1292, + 1293, 1307, 1308, 1309, 1310, 1322, 1325, 1328, 1329, 1332, 1333, 1334, 1335, 1336, 1337, 1346, + 1347, 1348, 1349, 1368, 1372, 1292, 1293, 1306, 1308, 1309, 1310, 1322, 1325, 1328, 1329, 1332, + 1333, 1334, 1335, 1336, 1337, 1346, 1347, 1348, 1349, 1368, 1372, 1278, 1279, 1280, 1281, 1292, + 1293, 1294, 1307, 1308, 1309, 1310, 1311, 1320, 1322, 1325, 1328, 1329, 1332, 1333, 1334, 1335, + 1336, 1337, 1346, 1347, 1348, 1349, 1368, 1372, 1270, 1271, 1289, 1290, 1291, 1301, 1302, 1303, + 1304, 1314, 1315, 1316, 1317, 1330, 1331, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1362, + 1363, 1367, 1370, 1373, 1330, 1331, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1370, 1373, + 1289, 1330, 1331, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1370, 1373, 1299, 1300, 1312, + 1313, 1318, 1319, 1330, 1331, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1370, 1373, 1289, + 1290, 1291, 1301, 1302, 1303, 1304, 1314, 1315, 1316, 1317, 1330, 1331, 1338, 1339, 1340, 1341, + 1342, 1343, 1344, 1345, 1362, 1363, 1367, 1369, 1371, 1373, 1330, 1331, 1338, 1339, 1340, 1341, + 1342, 1343, 1344, 1345, 1369, 1371, 1373, 1272, 1273, 1274, 1275, 1284, 1285, 1286, 1287, 1289, + 1330, 1331, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1369, 1371, 1373, 1276, 1277, 1282, + 1283, 1299, 1300, 1312, 1313, 1318, 1319, 1330, 1331, 1338, 1339, 1340, 1341, 1342, 1343, 1344, + 1345, 1369, 1371, 1373, 1295, 1323, 1326, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, + 1359, 1360, 1361, 1296, 1323, 1326, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, + 1360, 1361, 1297, 1324, 1327, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, + 1361, 1298, 1324, 1327, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, + 1295, 1323, 1326, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1296, + 1323, 1326, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1297, 1324, + 1327, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1298, 1324, 1327, + 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1364, 1365, 1366, 1364, + 1365, 1366, 1364, 1365, 1366, 1364, 1365, 1366, 1364, 1365, 1366, 1364, 1365, 1366, 1364, 1365, + 1366, 1364, 1365, 1366, 1374, 1376, 1377, 1378, 1388, 1389, 1390, 1398, 1397, 1399, 1376, 1377, + 1379, 1381, 1388, 1390, 1389, 1397, 1398, 1399, 1376, 1377, 1388, 1396, 1398, 1397, 1399, 1376, + 1377, 1388, 1396, 1398, 1397, 1399, 1375, 1377, 1380, 1386, 1385, 1388, 1395, 1397, 1398, 1399, + 1377, 1385, 1386, 1388, 1395, 1397, 1398, 1399, 1377, 1387, 1388, 1398, 1397, 1399, 1377, 1387, + 1388, 1397, 1398, 1399, 1391, 1398, 1397, 1399, 1382, 1391, 1397, 1398, 1399, 1398, 1397, 1399, + 1397, 1398, 1399, 1398, 1397, 1399, 1398, 1397, 1399, 1398, 1397, 1399, 1397, 1398, 1399, 1377, + 1388, 1397, 1398, 1399, 1377, 1384, 1388, 1398, 1397, 1399, 1377, 1388, 1397, 1398, 1399, 1377, + 1388, 1397, 1398, 1399, 1377, 1388, 1393, 1397, 1398, 1399, 1377, 1388, 1393, 1398, 1397, 1399, + 1377, 1388, 1394, 1398, 1397, 1399, 1377, 1388, 1394, 1397, 1398, 1399, 1398, 1397, 1399, 1397, + 1398, 1399, 1397, 1398, 1399, 1383, 1397, 1398, 1399, 1392, 1397, 1398, 1399, 1392, 1398, 1397, + 1399, 1397, 1398, 1399, 1397, 1398, 1399, 1397, 1398, 1399, 1397, 1398, 1399, 1398, 1397, 1399, + 1398, 1397, 1399, 1428, 1397, 1398, 1399, 1397, 1398, 1399, 1398, 1397, 1399, 1398, 1397, 1399, + 1397, 1398, 1399, 1397, 1398, 1399, 1398, 1397, 1399, 1398, 1397, 1399, 1429, 1397, 1398, 1399, + 1398, 1397, 1399, 1397, 1398, 1399, 1398, 1397, 1399, 1426, 1397, 1398, 1399, 1397, 1398, 1399, + 1420, 1426, 1398, 1397, 1399, 1397, 1398, 1399, 1424, 1397, 1398, 1399, 1397, 1398, 1399, 1422, + 1423, 1397, 1398, 1399, 1397, 1398, 1399, 1419, 1427, 1398, 1397, 1399, 1398, 1397, 1399, 1400, + 1401, 1402, 1403, 1404, 1406, 1407, 1408, 1409, 1411, 1412, 1413, 1414, 1421, 1427, 1398, 1397, + 1399, 1405, 1410, 1416, 1417, 1418, 1398, 1397, 1399, 1425, 1397, 1398, 1399, 1398, 1397, 1399, + 1415, 1398, 1397, 1399, 1398, 1397, 1399, 1389, 1390, 1397, 1398, 1399, 1381, 1390, 1389, 1398, + 1397, 1399, 1396, 1398, 1397, 1399, 1396, 1398, 1397, 1399, 1385, 1386, 1395, 1398, 1397, 1399, + 1386, 1385, 1395, 1397, 1398, 1399, 1387, 1397, 1398, 1399, 1387, 1398, 1397, 1399, 1391, 1398, + 1397, 1399, 1382, 1391, 1397, 1398, 1399, 1398, 1397, 1399, 1397, 1398, 1399, 1397, 1398, 1399, + 1397, 1398, 1399, 1397, 1398, 1399, 1397, 1398, 1399, 1397, 1398, 1399, 1384, 1397, 1398, 1399, + 1397, 1398, 1399, 1397, 1398, 1399, 1393, 1398, 1397, 1399, 1393, 1398, 1397, 1399, 1394, 1397, + 1398, 1399, 1394, 1398, 1397, 1399, 1397, 1398, 1399, 1397, 1398, 1399, 1397, 1398, 1399, 1383, + 1397, 1398, 1399, 1392, 1397, 1398, 1399, 1392, 1398, 1397, 1399, 1398, 1397, 1399, 1398, 1397, + 1399, 1397, 1398, 1399, 1397, 1398, 1399, 1397, 1398, 1399, 1398, 1397, 1399, 1428, 1398, 1397, + 1399, 1397, 1398, 1399, 1397, 1398, 1399, 1398, 1397, 1399, 1398, 1397, 1399, 1397, 1398, 1399, + 1397, 1398, 1399, 1398, 1397, 1399, 1429, 1397, 1398, 1399, 1397, 1398, 1399, 1398, 1397, 1399, + 1398, 1397, 1399, 1397, 1398, 1399, 1398, 1397, 1399, 1397, 1398, 1399, 1398, 1397, 1399, 1397, + 1398, 1399, 1398, 1397, 1399, 1397, 1398, 1399, 1397, 1398, 1399, 1430, 1431, 1432, 1398, 1397, + 1399, 1398, 1397, 1399, 1398, 1397, 1399, 1397, 1398, 1399, 1397, 1398, 1399, 1397, 1398, 1399, + 1397, 1398, 1399, 1433, 1398, 1397, 1399, 1437, 1436, 1439, 1438, 1443, 1435, 1434, 1445, 1449, + 1442, 1448, 1451, 1450, 1447, 1445, 1446, 1440, 1441, 1444, 1452, 1453, 1456, 1509, 1515, 1459, + 1509, 1518, 1455, 1510, 1514, 1458, 1510, 1517, 1454, 1511, 1513, 1457, 1511, 1516, 1512, 1512, + 1465, 1466, 1467, 1468, 1469, 1475, 1481, 1487, 1493, 1499, 1461, 1462, 1463, 1464, 1470, 1476, + 1482, 1488, 1494, 1500, 1471, 1477, 1483, 1489, 1495, 1501, 1460, 1473, 1479, 1485, 1491, 1497, + 1503, 1474, 1480, 1486, 1492, 1498, 1504, 1472, 1478, 1484, 1490, 1496, 1502, 1505, 1519, 1520, + 1508, 1523, 1506, 1521, 1507, 1524, 1522, 1547, 1546, 1540, 1542, 1545, 1540, 1543, 1544, 1547, + 1546, 1542, 1545, 1543, 1544, 1531, 1532, 1533, 1534, 1535, 1536, 1547, 1525, 1526, 1527, 1528, + 1529, 1530, 1537, 1538, 1539, 1541, 1546, 1540, 1542, 1545, 1540, 1543, 1544, 1531, 1532, 1533, + 1534, 1535, 1536, 1547, 1525, 1526, 1527, 1528, 1529, 1530, 1546, 1542, 1545, 1543, 1544, 1540, + 1540, 1537, 1538, 1539, 1541, 1540, 1540, 1564, 1292, 1293, 1308, 1309, 1310, 1570, 1321, 1322, + 1575, 1576, 1577, 1578, 1325, 1580, 1328, 1329, 1332, 1333, 1334, 1335, 1336, 1337, 1346, 1347, + 1348, 1349, 1593, 1292, 1293, 1308, 1309, 1310, 1570, 1322, 1575, 1576, 1577, 1578, 1325, 1580, + 1328, 1329, 1332, 1333, 1334, 1335, 1336, 1337, 1346, 1347, 1348, 1349, 1593, 1292, 1293, 1308, + 1309, 1310, 1570, 1322, 1575, 1576, 1577, 1578, 1325, 1580, 1328, 1329, 1332, 1333, 1334, 1335, + 1336, 1337, 1346, 1347, 1348, 1349, 1593, 1549, 1558, 1559, 1292, 1293, 1294, 1308, 1309, 1310, + 1311, 1570, 1320, 1322, 1575, 1576, 1577, 1578, 1325, 1580, 1328, 1329, 1332, 1333, 1334, 1335, + 1336, 1337, 1346, 1347, 1348, 1349, 1593, 1564, 1292, 1293, 1308, 1309, 1310, 1570, 1321, 1322, + 1575, 1576, 1577, 1578, 1325, 1580, 1328, 1329, 1332, 1333, 1334, 1335, 1336, 1337, 1346, 1347, + 1348, 1349, 1589, 1593, 1292, 1293, 1308, 1309, 1310, 1570, 1322, 1575, 1576, 1577, 1578, 1325, + 1580, 1328, 1329, 1332, 1333, 1334, 1335, 1336, 1337, 1346, 1347, 1348, 1349, 1589, 1593, 1292, + 1293, 1308, 1309, 1310, 1570, 1322, 1575, 1576, 1577, 1578, 1325, 1580, 1328, 1329, 1332, 1333, + 1334, 1335, 1336, 1337, 1346, 1347, 1348, 1349, 1589, 1593, 1548, 1558, 1559, 1292, 1293, 1294, + 1308, 1309, 1310, 1311, 1570, 1320, 1322, 1575, 1576, 1577, 1578, 1325, 1580, 1328, 1329, 1332, + 1333, 1334, 1335, 1336, 1337, 1346, 1347, 1348, 1349, 1589, 1593, 1270, 1271, 1301, 1302, 1303, + 1304, 1314, 1315, 1316, 1317, 1571, 1572, 1573, 1574, 1580, 1330, 1331, 1338, 1339, 1340, 1341, + 1342, 1343, 1344, 1345, 1585, 1586, 1587, 1588, 1367, 1591, 1594, 1571, 1572, 1573, 1574, 1580, + 1330, 1331, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1591, 1594, 1571, 1572, 1573, 1574, + 1580, 1330, 1331, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1591, 1594, 1556, 1557, 1299, + 1300, 1312, 1313, 1318, 1319, 1571, 1572, 1573, 1574, 1580, 1330, 1331, 1338, 1339, 1340, 1341, + 1342, 1343, 1344, 1345, 1581, 1582, 1583, 1584, 1591, 1594, 1301, 1302, 1303, 1304, 1314, 1315, + 1316, 1317, 1571, 1572, 1573, 1574, 1580, 1330, 1331, 1338, 1339, 1340, 1341, 1342, 1343, 1344, + 1345, 1585, 1586, 1587, 1588, 1367, 1590, 1592, 1594, 1571, 1572, 1573, 1574, 1580, 1330, 1331, + 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1590, 1592, 1594, 1272, 1273, 1274, 1275, 1284, + 1285, 1286, 1287, 1571, 1572, 1573, 1574, 1580, 1330, 1331, 1338, 1339, 1340, 1341, 1342, 1343, + 1344, 1345, 1590, 1592, 1594, 1556, 1557, 1282, 1283, 1299, 1300, 1312, 1313, 1318, 1319, 1571, + 1572, 1573, 1574, 1580, 1330, 1331, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1581, 1582, + 1583, 1584, 1590, 1592, 1594, 1568, 1569, 1570, 1323, 1579, 1326, 1580, 1350, 1351, 1352, 1353, + 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1569, 1570, 1323, 1579, 1326, 1580, 1350, 1351, + 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1570, 1579, 1324, 1327, 1580, 1350, + 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1570, 1324, 1579, 1327, 1580, + 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1568, 1569, 1570, 1323, + 1579, 1326, 1580, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1569, + 1570, 1323, 1579, 1326, 1580, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, + 1361, 1570, 1324, 1579, 1327, 1580, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, + 1360, 1361, 1570, 1579, 1324, 1327, 1580, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, + 1359, 1360, 1361, 1580, 1364, 1365, 1366, 1580, 1364, 1365, 1366, 1580, 1364, 1365, 1366, 1550, + 1551, 1552, 1553, 1554, 1555, 1560, 1561, 1562, 1563, 1565, 1566, 1567, 1580, 1364, 1365, 1366, + 1580, 1364, 1365, 1366, 1580, 1364, 1365, 1366, 1580, 1364, 1365, 1366, 1550, 1551, 1552, 1553, + 1554, 1555, 1560, 1561, 1562, 1563, 1565, 1566, 1567, 1580, 1364, 1365, 1366, } DECODE_INDEX_A32 := [256]lib.Decode_Index{ @@ -2392,393 +2394,393 @@ DECODE_INDEX_T32 := [128]lib.Decode_Index{ 0x74 = { 2900, 23}, 0x75 = { 2923, 19}, 0x76 = { 2942, 19}, - 0x77 = { 2961, 102}, - 0x78 = { 3063, 26}, - 0x79 = { 3089, 33}, - 0x7A = { 3122, 18}, - 0x7B = { 3140, 9}, - 0x7C = { 3149, 20}, - 0x7D = { 3169, 71}, - 0x7E = { 3240, 23}, - 0x7F = { 3263, 126}, + 0x77 = { 2961, 104}, + 0x78 = { 3065, 26}, + 0x79 = { 3091, 33}, + 0x7A = { 3124, 18}, + 0x7B = { 3142, 9}, + 0x7C = { 3151, 20}, + 0x7D = { 3171, 71}, + 0x7E = { 3242, 23}, + 0x7F = { 3265, 126}, } DECODE_INDEX_T16 := [64]lib.Decode_Index{ - 0x00 = { 3389, 1}, - 0x01 = { 3390, 1}, - 0x02 = { 3391, 1}, - 0x03 = { 3392, 1}, - 0x04 = { 3393, 1}, - 0x05 = { 3394, 1}, - 0x06 = { 3395, 2}, - 0x07 = { 3397, 2}, - 0x08 = { 3399, 1}, - 0x09 = { 3400, 1}, - 0x0A = { 3401, 1}, - 0x0B = { 3402, 1}, - 0x0C = { 3403, 1}, - 0x0D = { 3404, 1}, - 0x0E = { 3405, 1}, - 0x0F = { 3406, 1}, - 0x10 = { 3407, 16}, - 0x11 = { 3423, 7}, - 0x12 = { 3430, 1}, - 0x13 = { 3431, 1}, - 0x14 = { 3432, 2}, - 0x15 = { 3434, 2}, - 0x16 = { 3436, 2}, - 0x17 = { 3438, 2}, - 0x18 = { 3440, 1}, - 0x19 = { 3441, 1}, - 0x1A = { 3442, 1}, - 0x1B = { 3443, 1}, - 0x1C = { 3444, 1}, - 0x1D = { 3445, 1}, - 0x1E = { 3446, 1}, - 0x1F = { 3447, 1}, - 0x20 = { 3448, 1}, - 0x21 = { 3449, 1}, - 0x22 = { 3450, 1}, - 0x23 = { 3451, 1}, - 0x24 = { 3452, 1}, - 0x25 = { 3453, 1}, - 0x26 = { 3454, 1}, - 0x27 = { 3455, 1}, - 0x28 = { 3456, 1}, - 0x29 = { 3457, 1}, - 0x2A = { 3458, 1}, - 0x2B = { 3459, 1}, - 0x2C = { 3460, 7}, - 0x2D = { 3467, 2}, - 0x2E = { 3469, 4}, - 0x2F = { 3473, 8}, - 0x30 = { 3481, 1}, - 0x31 = { 3482, 1}, - 0x32 = { 3483, 1}, - 0x33 = { 3484, 1}, - 0x34 = { 3485, 1}, - 0x35 = { 3486, 1}, - 0x36 = { 3487, 1}, - 0x37 = { 3488, 3}, - 0x38 = { 3491, 1}, - 0x39 = { 3492, 1}, + 0x00 = { 3391, 1}, + 0x01 = { 3392, 1}, + 0x02 = { 3393, 1}, + 0x03 = { 3394, 1}, + 0x04 = { 3395, 1}, + 0x05 = { 3396, 1}, + 0x06 = { 3397, 2}, + 0x07 = { 3399, 2}, + 0x08 = { 3401, 1}, + 0x09 = { 3402, 1}, + 0x0A = { 3403, 1}, + 0x0B = { 3404, 1}, + 0x0C = { 3405, 1}, + 0x0D = { 3406, 1}, + 0x0E = { 3407, 1}, + 0x0F = { 3408, 1}, + 0x10 = { 3409, 16}, + 0x11 = { 3425, 7}, + 0x12 = { 3432, 1}, + 0x13 = { 3433, 1}, + 0x14 = { 3434, 2}, + 0x15 = { 3436, 2}, + 0x16 = { 3438, 2}, + 0x17 = { 3440, 2}, + 0x18 = { 3442, 1}, + 0x19 = { 3443, 1}, + 0x1A = { 3444, 1}, + 0x1B = { 3445, 1}, + 0x1C = { 3446, 1}, + 0x1D = { 3447, 1}, + 0x1E = { 3448, 1}, + 0x1F = { 3449, 1}, + 0x20 = { 3450, 1}, + 0x21 = { 3451, 1}, + 0x22 = { 3452, 1}, + 0x23 = { 3453, 1}, + 0x24 = { 3454, 1}, + 0x25 = { 3455, 1}, + 0x26 = { 3456, 1}, + 0x27 = { 3457, 1}, + 0x28 = { 3458, 1}, + 0x29 = { 3459, 1}, + 0x2A = { 3460, 1}, + 0x2B = { 3461, 1}, + 0x2C = { 3462, 7}, + 0x2D = { 3469, 2}, + 0x2E = { 3471, 4}, + 0x2F = { 3475, 8}, + 0x30 = { 3483, 1}, + 0x31 = { 3484, 1}, + 0x32 = { 3485, 1}, + 0x33 = { 3486, 1}, + 0x34 = { 3487, 1}, + 0x35 = { 3488, 1}, + 0x36 = { 3489, 1}, + 0x37 = { 3490, 3}, + 0x38 = { 3493, 1}, + 0x39 = { 3494, 1}, } DECODE_INDEX_T32_SUB := [4096]lib.Decode_Index{ - 0xE84 = { 3493, 6}, - 0xE85 = { 3499, 2}, - 0xE86 = { 3501, 1}, - 0xE87 = { 3502, 1}, - 0xE88 = { 3503, 1}, - 0xE89 = { 3504, 1}, - 0xE8A = { 3505, 1}, - 0xE8B = { 3506, 2}, - 0xE8C = { 3508, 4}, - 0xE8D = { 3512, 6}, - 0xE8E = { 3518, 1}, - 0xE8F = { 3519, 1}, - 0xE90 = { 3520, 1}, - 0xE91 = { 3521, 1}, - 0xE92 = { 3522, 2}, - 0xE93 = { 3524, 1}, - 0xE94 = { 3525, 1}, - 0xE95 = { 3526, 1}, - 0xE96 = { 3527, 1}, - 0xE97 = { 3528, 2}, - 0xE9C = { 3530, 1}, - 0xE9D = { 3531, 1}, - 0xE9E = { 3532, 1}, - 0xE9F = { 3533, 1}, - 0xEA0 = { 3534, 2}, - 0xEA1 = { 3536, 3}, - 0xEA2 = { 3539, 1}, - 0xEA3 = { 3540, 1}, - 0xEA4 = { 3541, 7}, - 0xEA5 = { 3548, 7}, - 0xEA6 = { 3555, 1}, - 0xEA7 = { 3556, 1}, - 0xEA8 = { 3557, 1}, - 0xEA9 = { 3558, 2}, - 0xEB1 = { 3560, 1}, - 0xEB4 = { 3561, 1}, - 0xEB5 = { 3562, 1}, - 0xEB6 = { 3563, 1}, - 0xEB7 = { 3564, 1}, - 0xEBB = { 3565, 1}, - 0xEBC = { 3566, 1}, - 0xEBD = { 3567, 1}, - 0xEC0 = { 3568, 2}, - 0xEC1 = { 3570, 1}, - 0xEC2 = { 3571, 3}, - 0xEC3 = { 3574, 2}, - 0xEC4 = { 3576, 2}, - 0xEC5 = { 3578, 1}, - 0xEC6 = { 3579, 7}, - 0xEC7 = { 3586, 2}, - 0xEC8 = { 3588, 1}, - 0xEC9 = { 3589, 1}, - 0xECA = { 3590, 2}, - 0xECB = { 3592, 2}, - 0xECC = { 3594, 1}, - 0xECD = { 3595, 1}, - 0xECE = { 3596, 2}, - 0xECF = { 3598, 2}, - 0xED6 = { 3600, 4}, - 0xED8 = { 3604, 4}, - 0xED9 = { 3608, 4}, - 0xEDC = { 3612, 4}, - 0xEDD = { 3616, 4}, - 0xEE0 = { 3620, 24}, - 0xEE1 = { 3644, 23}, - 0xEE2 = { 3667, 22}, - 0xEE3 = { 3689, 29}, - 0xEE4 = { 3718, 23}, - 0xEE5 = { 3741, 22}, - 0xEE6 = { 3763, 22}, - 0xEE7 = { 3785, 29}, - 0xEE8 = { 3814, 28}, - 0xEE9 = { 3842, 12}, - 0xEEA = { 3854, 13}, - 0xEEB = { 3867, 18}, - 0xEEC = { 3885, 27}, - 0xEED = { 3912, 13}, - 0xEEE = { 3925, 22}, - 0xEEF = { 3947, 21}, - 0xEF0 = { 3968, 15}, - 0xEF1 = { 3983, 15}, - 0xEF2 = { 3998, 15}, - 0xEF3 = { 4013, 15}, - 0xEF4 = { 4028, 15}, - 0xEF5 = { 4043, 15}, - 0xEF6 = { 4058, 15}, - 0xEF7 = { 4073, 15}, - 0xEF8 = { 4088, 3}, - 0xEF9 = { 4091, 3}, - 0xEFA = { 4094, 3}, - 0xEFB = { 4097, 3}, - 0xEFC = { 4100, 3}, - 0xEFD = { 4103, 3}, - 0xEFE = { 4106, 3}, - 0xEFF = { 4109, 3}, - 0xF00 = { 4112, 10}, - 0xF01 = { 4122, 10}, - 0xF02 = { 4132, 7}, - 0xF03 = { 4139, 7}, - 0xF04 = { 4146, 10}, - 0xF05 = { 4156, 8}, - 0xF06 = { 4164, 6}, - 0xF07 = { 4170, 6}, - 0xF08 = { 4176, 4}, - 0xF09 = { 4180, 5}, - 0xF0A = { 4185, 3}, - 0xF0B = { 4188, 3}, - 0xF0C = { 4191, 3}, - 0xF0D = { 4194, 3}, - 0xF0E = { 4197, 3}, - 0xF0F = { 4200, 3}, - 0xF10 = { 4203, 5}, - 0xF11 = { 4208, 6}, - 0xF12 = { 4214, 5}, - 0xF13 = { 4219, 5}, - 0xF14 = { 4224, 6}, - 0xF15 = { 4230, 6}, - 0xF16 = { 4236, 6}, - 0xF17 = { 4242, 6}, - 0xF18 = { 4248, 3}, - 0xF19 = { 4251, 3}, - 0xF1A = { 4254, 3}, - 0xF1B = { 4257, 4}, - 0xF1C = { 4261, 4}, - 0xF1D = { 4265, 4}, - 0xF1E = { 4269, 3}, - 0xF1F = { 4272, 3}, - 0xF20 = { 4275, 3}, - 0xF21 = { 4278, 3}, - 0xF22 = { 4281, 3}, - 0xF23 = { 4284, 3}, - 0xF24 = { 4287, 4}, - 0xF25 = { 4291, 3}, - 0xF26 = { 4294, 3}, - 0xF27 = { 4297, 3}, - 0xF28 = { 4300, 3}, - 0xF29 = { 4303, 3}, - 0xF2A = { 4306, 3}, - 0xF2B = { 4309, 3}, - 0xF2C = { 4312, 4}, - 0xF2D = { 4316, 3}, - 0xF2E = { 4319, 3}, - 0xF2F = { 4322, 3}, - 0xF30 = { 4325, 4}, - 0xF31 = { 4329, 3}, - 0xF32 = { 4332, 5}, - 0xF33 = { 4337, 3}, - 0xF34 = { 4340, 4}, - 0xF35 = { 4344, 3}, - 0xF36 = { 4347, 5}, - 0xF37 = { 4352, 3}, - 0xF38 = { 4355, 5}, - 0xF39 = { 4360, 3}, - 0xF3A = { 4363, 18}, - 0xF3B = { 4381, 8}, - 0xF3C = { 4389, 4}, - 0xF3D = { 4393, 3}, - 0xF3E = { 4396, 4}, - 0xF3F = { 4400, 3}, - 0xF40 = { 4403, 5}, - 0xF41 = { 4408, 6}, - 0xF42 = { 4414, 4}, - 0xF43 = { 4418, 4}, - 0xF44 = { 4422, 6}, - 0xF45 = { 4428, 6}, - 0xF46 = { 4434, 4}, - 0xF47 = { 4438, 4}, - 0xF48 = { 4442, 4}, - 0xF49 = { 4446, 5}, - 0xF4A = { 4451, 3}, - 0xF4B = { 4454, 3}, - 0xF4C = { 4457, 3}, - 0xF4D = { 4460, 3}, - 0xF4E = { 4463, 3}, - 0xF4F = { 4466, 3}, - 0xF50 = { 4469, 3}, - 0xF51 = { 4472, 4}, - 0xF52 = { 4476, 3}, - 0xF53 = { 4479, 3}, - 0xF54 = { 4482, 4}, - 0xF55 = { 4486, 4}, - 0xF56 = { 4490, 4}, - 0xF57 = { 4494, 4}, - 0xF58 = { 4498, 3}, - 0xF59 = { 4501, 3}, - 0xF5A = { 4504, 3}, - 0xF5B = { 4507, 4}, - 0xF5C = { 4511, 4}, - 0xF5D = { 4515, 4}, - 0xF5E = { 4519, 3}, - 0xF5F = { 4522, 3}, - 0xF60 = { 4525, 3}, - 0xF61 = { 4528, 3}, - 0xF62 = { 4531, 3}, - 0xF63 = { 4534, 3}, - 0xF64 = { 4537, 4}, - 0xF65 = { 4541, 3}, - 0xF66 = { 4544, 3}, - 0xF67 = { 4547, 3}, - 0xF68 = { 4550, 3}, - 0xF69 = { 4553, 3}, - 0xF6A = { 4556, 3}, - 0xF6B = { 4559, 3}, - 0xF6C = { 4562, 4}, - 0xF6D = { 4566, 3}, - 0xF6E = { 4569, 3}, - 0xF6F = { 4572, 3}, - 0xF70 = { 4575, 3}, - 0xF71 = { 4578, 3}, - 0xF72 = { 4581, 3}, - 0xF73 = { 4584, 3}, - 0xF74 = { 4587, 3}, - 0xF75 = { 4590, 3}, - 0xF76 = { 4593, 3}, - 0xF77 = { 4596, 3}, - 0xF78 = { 4599, 6}, - 0xF79 = { 4605, 3}, - 0xF7A = { 4608, 3}, - 0xF7B = { 4611, 3}, - 0xF7C = { 4614, 3}, - 0xF7D = { 4617, 3}, - 0xF7E = { 4620, 3}, - 0xF7F = { 4623, 4}, - 0xF80 = { 4627, 1}, - 0xF81 = { 4628, 1}, - 0xF82 = { 4629, 1}, - 0xF83 = { 4630, 2}, - 0xF84 = { 4632, 1}, - 0xF85 = { 4633, 2}, - 0xF88 = { 4635, 1}, - 0xF89 = { 4636, 2}, - 0xF8A = { 4638, 1}, - 0xF8B = { 4639, 1}, - 0xF8C = { 4640, 1}, - 0xF8D = { 4641, 2}, - 0xF91 = { 4643, 1}, - 0xF93 = { 4644, 1}, - 0xF99 = { 4645, 2}, - 0xF9B = { 4647, 1}, - 0xFA0 = { 4648, 3}, - 0xFA1 = { 4651, 3}, - 0xFA2 = { 4654, 3}, - 0xFA3 = { 4657, 3}, - 0xFA4 = { 4660, 3}, - 0xFA5 = { 4663, 3}, - 0xFA6 = { 4666, 1}, - 0xFA7 = { 4667, 1}, - 0xFA8 = { 4668, 10}, - 0xFA9 = { 4678, 10}, - 0xFAA = { 4688, 6}, - 0xFAB = { 4694, 1}, - 0xFAC = { 4695, 6}, - 0xFAD = { 4701, 6}, - 0xFAE = { 4707, 6}, - 0xFB0 = { 4713, 3}, - 0xFB5 = { 4716, 1}, - 0xFB8 = { 4717, 1}, - 0xFB9 = { 4718, 1}, - 0xFBA = { 4719, 1}, - 0xFBB = { 4720, 1}, - 0xFBC = { 4721, 1}, - 0xFBE = { 4722, 1}, - 0xFC0 = { 4723, 1}, - 0xFC1 = { 4724, 1}, - 0xFC2 = { 4725, 3}, - 0xFC3 = { 4728, 3}, - 0xFC4 = { 4731, 1}, - 0xFC5 = { 4732, 1}, - 0xFC6 = { 4733, 2}, - 0xFC7 = { 4735, 2}, - 0xFC8 = { 4737, 7}, - 0xFC9 = { 4744, 11}, - 0xFCA = { 4755, 3}, - 0xFCB = { 4758, 3}, - 0xFCC = { 4761, 7}, - 0xFCD = { 4768, 7}, - 0xFCE = { 4775, 2}, - 0xFCF = { 4777, 2}, - 0xFD2 = { 4779, 1}, - 0xFD3 = { 4780, 1}, - 0xFD9 = { 4781, 4}, - 0xFDA = { 4785, 1}, - 0xFDB = { 4786, 1}, - 0xFE0 = { 4787, 28}, - 0xFE1 = { 4815, 26}, - 0xFE2 = { 4841, 26}, - 0xFE3 = { 4867, 32}, - 0xFE4 = { 4899, 29}, - 0xFE5 = { 4928, 27}, - 0xFE6 = { 4955, 27}, - 0xFE7 = { 4982, 33}, - 0xFE8 = { 5015, 32}, - 0xFE9 = { 5047, 17}, - 0xFEA = { 5064, 17}, - 0xFEB = { 5081, 29}, - 0xFEC = { 5110, 31}, - 0xFED = { 5141, 18}, - 0xFEE = { 5159, 26}, - 0xFEF = { 5185, 32}, - 0xFF0 = { 5217, 19}, - 0xFF1 = { 5236, 18}, - 0xFF2 = { 5254, 17}, - 0xFF3 = { 5271, 17}, - 0xFF4 = { 5288, 19}, - 0xFF5 = { 5307, 18}, - 0xFF6 = { 5325, 17}, - 0xFF7 = { 5342, 17}, - 0xFF8 = { 5359, 4}, - 0xFF9 = { 5363, 4}, - 0xFFA = { 5367, 4}, - 0xFFB = { 5371, 17}, - 0xFFC = { 5388, 4}, - 0xFFD = { 5392, 4}, - 0xFFE = { 5396, 4}, - 0xFFF = { 5400, 17}, + 0xE84 = { 3495, 6}, + 0xE85 = { 3501, 2}, + 0xE86 = { 3503, 1}, + 0xE87 = { 3504, 1}, + 0xE88 = { 3505, 1}, + 0xE89 = { 3506, 1}, + 0xE8A = { 3507, 1}, + 0xE8B = { 3508, 2}, + 0xE8C = { 3510, 4}, + 0xE8D = { 3514, 6}, + 0xE8E = { 3520, 1}, + 0xE8F = { 3521, 1}, + 0xE90 = { 3522, 1}, + 0xE91 = { 3523, 1}, + 0xE92 = { 3524, 2}, + 0xE93 = { 3526, 1}, + 0xE94 = { 3527, 1}, + 0xE95 = { 3528, 1}, + 0xE96 = { 3529, 1}, + 0xE97 = { 3530, 2}, + 0xE9C = { 3532, 1}, + 0xE9D = { 3533, 1}, + 0xE9E = { 3534, 1}, + 0xE9F = { 3535, 1}, + 0xEA0 = { 3536, 2}, + 0xEA1 = { 3538, 3}, + 0xEA2 = { 3541, 1}, + 0xEA3 = { 3542, 1}, + 0xEA4 = { 3543, 7}, + 0xEA5 = { 3550, 7}, + 0xEA6 = { 3557, 1}, + 0xEA7 = { 3558, 1}, + 0xEA8 = { 3559, 1}, + 0xEA9 = { 3560, 2}, + 0xEB1 = { 3562, 1}, + 0xEB4 = { 3563, 1}, + 0xEB5 = { 3564, 1}, + 0xEB6 = { 3565, 1}, + 0xEB7 = { 3566, 1}, + 0xEBB = { 3567, 1}, + 0xEBC = { 3568, 1}, + 0xEBD = { 3569, 1}, + 0xEC0 = { 3570, 2}, + 0xEC1 = { 3572, 1}, + 0xEC2 = { 3573, 3}, + 0xEC3 = { 3576, 2}, + 0xEC4 = { 3578, 2}, + 0xEC5 = { 3580, 1}, + 0xEC6 = { 3581, 7}, + 0xEC7 = { 3588, 2}, + 0xEC8 = { 3590, 1}, + 0xEC9 = { 3591, 1}, + 0xECA = { 3592, 2}, + 0xECB = { 3594, 2}, + 0xECC = { 3596, 1}, + 0xECD = { 3597, 1}, + 0xECE = { 3598, 2}, + 0xECF = { 3600, 2}, + 0xED6 = { 3602, 4}, + 0xED8 = { 3606, 4}, + 0xED9 = { 3610, 4}, + 0xEDC = { 3614, 4}, + 0xEDD = { 3618, 4}, + 0xEE0 = { 3622, 24}, + 0xEE1 = { 3646, 23}, + 0xEE2 = { 3669, 22}, + 0xEE3 = { 3691, 29}, + 0xEE4 = { 3720, 23}, + 0xEE5 = { 3743, 22}, + 0xEE6 = { 3765, 22}, + 0xEE7 = { 3787, 29}, + 0xEE8 = { 3816, 28}, + 0xEE9 = { 3844, 12}, + 0xEEA = { 3856, 13}, + 0xEEB = { 3869, 18}, + 0xEEC = { 3887, 27}, + 0xEED = { 3914, 13}, + 0xEEE = { 3927, 22}, + 0xEEF = { 3949, 23}, + 0xEF0 = { 3972, 15}, + 0xEF1 = { 3987, 15}, + 0xEF2 = { 4002, 15}, + 0xEF3 = { 4017, 15}, + 0xEF4 = { 4032, 15}, + 0xEF5 = { 4047, 15}, + 0xEF6 = { 4062, 15}, + 0xEF7 = { 4077, 15}, + 0xEF8 = { 4092, 3}, + 0xEF9 = { 4095, 3}, + 0xEFA = { 4098, 3}, + 0xEFB = { 4101, 3}, + 0xEFC = { 4104, 3}, + 0xEFD = { 4107, 3}, + 0xEFE = { 4110, 3}, + 0xEFF = { 4113, 3}, + 0xF00 = { 4116, 10}, + 0xF01 = { 4126, 10}, + 0xF02 = { 4136, 7}, + 0xF03 = { 4143, 7}, + 0xF04 = { 4150, 10}, + 0xF05 = { 4160, 8}, + 0xF06 = { 4168, 6}, + 0xF07 = { 4174, 6}, + 0xF08 = { 4180, 4}, + 0xF09 = { 4184, 5}, + 0xF0A = { 4189, 3}, + 0xF0B = { 4192, 3}, + 0xF0C = { 4195, 3}, + 0xF0D = { 4198, 3}, + 0xF0E = { 4201, 3}, + 0xF0F = { 4204, 3}, + 0xF10 = { 4207, 5}, + 0xF11 = { 4212, 6}, + 0xF12 = { 4218, 5}, + 0xF13 = { 4223, 5}, + 0xF14 = { 4228, 6}, + 0xF15 = { 4234, 6}, + 0xF16 = { 4240, 6}, + 0xF17 = { 4246, 6}, + 0xF18 = { 4252, 3}, + 0xF19 = { 4255, 3}, + 0xF1A = { 4258, 3}, + 0xF1B = { 4261, 4}, + 0xF1C = { 4265, 4}, + 0xF1D = { 4269, 4}, + 0xF1E = { 4273, 3}, + 0xF1F = { 4276, 3}, + 0xF20 = { 4279, 3}, + 0xF21 = { 4282, 3}, + 0xF22 = { 4285, 3}, + 0xF23 = { 4288, 3}, + 0xF24 = { 4291, 4}, + 0xF25 = { 4295, 3}, + 0xF26 = { 4298, 3}, + 0xF27 = { 4301, 3}, + 0xF28 = { 4304, 3}, + 0xF29 = { 4307, 3}, + 0xF2A = { 4310, 3}, + 0xF2B = { 4313, 3}, + 0xF2C = { 4316, 4}, + 0xF2D = { 4320, 3}, + 0xF2E = { 4323, 3}, + 0xF2F = { 4326, 3}, + 0xF30 = { 4329, 4}, + 0xF31 = { 4333, 3}, + 0xF32 = { 4336, 5}, + 0xF33 = { 4341, 3}, + 0xF34 = { 4344, 4}, + 0xF35 = { 4348, 3}, + 0xF36 = { 4351, 5}, + 0xF37 = { 4356, 3}, + 0xF38 = { 4359, 5}, + 0xF39 = { 4364, 3}, + 0xF3A = { 4367, 18}, + 0xF3B = { 4385, 8}, + 0xF3C = { 4393, 4}, + 0xF3D = { 4397, 3}, + 0xF3E = { 4400, 4}, + 0xF3F = { 4404, 3}, + 0xF40 = { 4407, 5}, + 0xF41 = { 4412, 6}, + 0xF42 = { 4418, 4}, + 0xF43 = { 4422, 4}, + 0xF44 = { 4426, 6}, + 0xF45 = { 4432, 6}, + 0xF46 = { 4438, 4}, + 0xF47 = { 4442, 4}, + 0xF48 = { 4446, 4}, + 0xF49 = { 4450, 5}, + 0xF4A = { 4455, 3}, + 0xF4B = { 4458, 3}, + 0xF4C = { 4461, 3}, + 0xF4D = { 4464, 3}, + 0xF4E = { 4467, 3}, + 0xF4F = { 4470, 3}, + 0xF50 = { 4473, 3}, + 0xF51 = { 4476, 4}, + 0xF52 = { 4480, 3}, + 0xF53 = { 4483, 3}, + 0xF54 = { 4486, 4}, + 0xF55 = { 4490, 4}, + 0xF56 = { 4494, 4}, + 0xF57 = { 4498, 4}, + 0xF58 = { 4502, 3}, + 0xF59 = { 4505, 3}, + 0xF5A = { 4508, 3}, + 0xF5B = { 4511, 4}, + 0xF5C = { 4515, 4}, + 0xF5D = { 4519, 4}, + 0xF5E = { 4523, 3}, + 0xF5F = { 4526, 3}, + 0xF60 = { 4529, 3}, + 0xF61 = { 4532, 3}, + 0xF62 = { 4535, 3}, + 0xF63 = { 4538, 3}, + 0xF64 = { 4541, 4}, + 0xF65 = { 4545, 3}, + 0xF66 = { 4548, 3}, + 0xF67 = { 4551, 3}, + 0xF68 = { 4554, 3}, + 0xF69 = { 4557, 3}, + 0xF6A = { 4560, 3}, + 0xF6B = { 4563, 3}, + 0xF6C = { 4566, 4}, + 0xF6D = { 4570, 3}, + 0xF6E = { 4573, 3}, + 0xF6F = { 4576, 3}, + 0xF70 = { 4579, 3}, + 0xF71 = { 4582, 3}, + 0xF72 = { 4585, 3}, + 0xF73 = { 4588, 3}, + 0xF74 = { 4591, 3}, + 0xF75 = { 4594, 3}, + 0xF76 = { 4597, 3}, + 0xF77 = { 4600, 3}, + 0xF78 = { 4603, 6}, + 0xF79 = { 4609, 3}, + 0xF7A = { 4612, 3}, + 0xF7B = { 4615, 3}, + 0xF7C = { 4618, 3}, + 0xF7D = { 4621, 3}, + 0xF7E = { 4624, 3}, + 0xF7F = { 4627, 4}, + 0xF80 = { 4631, 1}, + 0xF81 = { 4632, 1}, + 0xF82 = { 4633, 1}, + 0xF83 = { 4634, 2}, + 0xF84 = { 4636, 1}, + 0xF85 = { 4637, 2}, + 0xF88 = { 4639, 1}, + 0xF89 = { 4640, 2}, + 0xF8A = { 4642, 1}, + 0xF8B = { 4643, 1}, + 0xF8C = { 4644, 1}, + 0xF8D = { 4645, 2}, + 0xF91 = { 4647, 1}, + 0xF93 = { 4648, 1}, + 0xF99 = { 4649, 2}, + 0xF9B = { 4651, 1}, + 0xFA0 = { 4652, 3}, + 0xFA1 = { 4655, 3}, + 0xFA2 = { 4658, 3}, + 0xFA3 = { 4661, 3}, + 0xFA4 = { 4664, 3}, + 0xFA5 = { 4667, 3}, + 0xFA6 = { 4670, 1}, + 0xFA7 = { 4671, 1}, + 0xFA8 = { 4672, 10}, + 0xFA9 = { 4682, 10}, + 0xFAA = { 4692, 6}, + 0xFAB = { 4698, 1}, + 0xFAC = { 4699, 6}, + 0xFAD = { 4705, 6}, + 0xFAE = { 4711, 6}, + 0xFB0 = { 4717, 3}, + 0xFB5 = { 4720, 1}, + 0xFB8 = { 4721, 1}, + 0xFB9 = { 4722, 1}, + 0xFBA = { 4723, 1}, + 0xFBB = { 4724, 1}, + 0xFBC = { 4725, 1}, + 0xFBE = { 4726, 1}, + 0xFC0 = { 4727, 1}, + 0xFC1 = { 4728, 1}, + 0xFC2 = { 4729, 3}, + 0xFC3 = { 4732, 3}, + 0xFC4 = { 4735, 1}, + 0xFC5 = { 4736, 1}, + 0xFC6 = { 4737, 2}, + 0xFC7 = { 4739, 2}, + 0xFC8 = { 4741, 7}, + 0xFC9 = { 4748, 11}, + 0xFCA = { 4759, 3}, + 0xFCB = { 4762, 3}, + 0xFCC = { 4765, 7}, + 0xFCD = { 4772, 7}, + 0xFCE = { 4779, 2}, + 0xFCF = { 4781, 2}, + 0xFD2 = { 4783, 1}, + 0xFD3 = { 4784, 1}, + 0xFD9 = { 4785, 4}, + 0xFDA = { 4789, 1}, + 0xFDB = { 4790, 1}, + 0xFE0 = { 4791, 28}, + 0xFE1 = { 4819, 26}, + 0xFE2 = { 4845, 26}, + 0xFE3 = { 4871, 32}, + 0xFE4 = { 4903, 29}, + 0xFE5 = { 4932, 27}, + 0xFE6 = { 4959, 27}, + 0xFE7 = { 4986, 33}, + 0xFE8 = { 5019, 32}, + 0xFE9 = { 5051, 17}, + 0xFEA = { 5068, 17}, + 0xFEB = { 5085, 29}, + 0xFEC = { 5114, 31}, + 0xFED = { 5145, 18}, + 0xFEE = { 5163, 26}, + 0xFEF = { 5189, 32}, + 0xFF0 = { 5221, 19}, + 0xFF1 = { 5240, 18}, + 0xFF2 = { 5258, 17}, + 0xFF3 = { 5275, 17}, + 0xFF4 = { 5292, 19}, + 0xFF5 = { 5311, 18}, + 0xFF6 = { 5329, 17}, + 0xFF7 = { 5346, 17}, + 0xFF8 = { 5363, 4}, + 0xFF9 = { 5367, 4}, + 0xFFA = { 5371, 4}, + 0xFFB = { 5375, 17}, + 0xFFC = { 5392, 4}, + 0xFFD = { 5396, 4}, + 0xFFE = { 5400, 4}, + 0xFFF = { 5404, 17}, } diff --git a/core/rexcode/arm32/tablegen/generated/encode_tables.odin b/core/rexcode/arm32/tablegen/generated/encode_tables.odin index e7106940d..019ea1e55 100644 --- a/core/rexcode/arm32/tablegen/generated/encode_tables.odin +++ b/core/rexcode/arm32/tablegen/generated/encode_tables.odin @@ -8,7 +8,7 @@ package rexcode_arm32_generated import lib "../.." @(rodata) -ENCODE_FORMS := [1673]lib.Encoding{ +ENCODE_FORMS := [1675]lib.Encoding{ // .AND { .AND, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02000000, 0x0FE00000, .BASE, .A32, {} }, { .AND, {.GPR,.GPR,.GPR_SHIFTED,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000000, 0x0FE00010, .BASE, .A32, {} }, @@ -2172,6 +2172,10 @@ ENCODE_FORMS := [1673]lib.Encoding{ { .VMLAV, {.GPR,.QPR,.QPR,.NONE}, {.RD_T32,.VN_Q,.VM_Q,.NONE}, 0xEEB00F00, 0xEFB10F51, .MVE_INT, .T32, {thumb32=true} }, // .VMLAVA { .VMLAVA, {.GPR,.QPR,.QPR,.NONE}, {.RD_T32,.VN_Q,.VM_Q,.NONE}, 0xEEB00F20, 0xEFB10F51, .MVE_INT, .T32, {thumb32=true} }, + // .VMLSV + { .VMLSV, {.GPR,.QPR,.QPR,.NONE}, {.RDLO_A32,.VN_Q_MVE,.VM_Q_MVE,.NONE}, 0xEEF00E01, 0xFFF10FF1, .MVE_INT, .T32, {thumb32=true} }, + // .VMLSVA + { .VMLSVA, {.GPR,.QPR,.QPR,.NONE}, {.RDLO_A32,.VN_Q_MVE,.VM_Q_MVE,.NONE}, 0xEEF00E21, 0xFFF10FF1, .MVE_INT, .T32, {thumb32=true} }, // .VCMUL { .VCMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xEE300E00, 0xEFB10F51, .MVE_FP, .T32, {thumb32=true} }, // .VHCADD @@ -2722,7 +2726,6 @@ ENCODE_RUNS := [lib.Mnemonic]lib.Encode_Run{ .SHA256H2 = { 1365, 1}, .SHA256SU0 = { 1366, 1}, .SHA256SU1 = { 1367, 1}, - .VRINT = { 1368, 0}, .VJCVT = { 1368, 1}, .VSDOT = { 1369, 2}, .VUDOT = { 1371, 2}, @@ -2873,76 +2876,74 @@ ENCODE_RUNS := [lib.Mnemonic]lib.Encode_Run{ .VRMLSLDAVHAX = { 1603, 1}, .VMLAV = { 1604, 1}, .VMLAVA = { 1605, 1}, - .VMLSV = { 1606, 0}, - .VMLSVA = { 1606, 0}, - .VCMUL = { 1606, 1}, - .VHCADD = { 1607, 1}, - .VBRSR = { 1608, 1}, - .VSHLC = { 1609, 1}, - .VRSHL_MVE = { 1610, 0}, - .VDDUP = { 1610, 1}, - .VIDUP = { 1611, 1}, - .VDWDUP = { 1612, 1}, - .VIWDUP = { 1613, 1}, - .VMOVNB = { 1614, 1}, - .VMOVNT = { 1615, 1}, - .VQMOVNB = { 1616, 1}, - .VQMOVNT = { 1617, 1}, - .VQMOVUNB = { 1618, 1}, - .VQMOVUNT = { 1619, 1}, - .VSHLLB = { 1620, 1}, - .VSHLLT = { 1621, 1}, - .VMULLB = { 1622, 1}, - .VMULLT = { 1623, 1}, - .VMLALB = { 1624, 1}, - .VMLALT = { 1625, 1}, - .VMLSLB = { 1626, 1}, - .VMLSLT = { 1627, 1}, - .VSHRNB = { 1628, 1}, - .VSHRNT = { 1629, 1}, - .VRSHRNB = { 1630, 1}, - .VRSHRNT = { 1631, 1}, - .VQSHRNB = { 1632, 1}, - .VQSHRNT = { 1633, 1}, - .VQRSHRNB = { 1634, 1}, - .VQRSHRNT = { 1635, 1}, - .VQSHRUNB = { 1636, 1}, - .VQSHRUNT = { 1637, 1}, - .VQRSHRUNB = { 1638, 1}, - .VQRSHRUNT = { 1639, 1}, - .VMOV_Q_R = { 1640, 1}, - .VMOV_R_Q = { 1641, 1}, - .VMOV_2GPR_Q = { 1642, 1}, - .VQDMLADH = { 1643, 1}, - .VQDMLADHX = { 1644, 1}, - .VQDMLSDH = { 1645, 1}, - .VQDMLSDHX = { 1646, 1}, - .VQRDMLADH = { 1647, 1}, - .VQRDMLADHX = { 1648, 1}, - .VQRDMLSDH = { 1649, 1}, - .VQRDMLSDHX = { 1650, 1}, - .VPRINT = { 1651, 0}, - .VHCADD_SAT = { 1651, 1}, - .VCMLA_MVE = { 1652, 1}, - .VLDRB = { 1653, 1}, - .VLDRH = { 1654, 1}, - .VLDRW = { 1655, 1}, - .VLDRD = { 1656, 1}, - .VSTRB = { 1657, 1}, - .VSTRH = { 1658, 1}, - .VSTRW = { 1659, 1}, - .VSTRD = { 1660, 1}, - .VLD20 = { 1661, 1}, - .VLD21 = { 1662, 1}, - .VLD40 = { 1663, 1}, - .VLD41 = { 1664, 1}, - .VLD42 = { 1665, 1}, - .VLD43 = { 1666, 1}, - .VST20 = { 1667, 1}, - .VST21 = { 1668, 1}, - .VST40 = { 1669, 1}, - .VST41 = { 1670, 1}, - .VST42 = { 1671, 1}, - .VST43 = { 1672, 1}, - ._COUNT = { 1673, 0}, + .VMLSV = { 1606, 1}, + .VMLSVA = { 1607, 1}, + .VCMUL = { 1608, 1}, + .VHCADD = { 1609, 1}, + .VBRSR = { 1610, 1}, + .VSHLC = { 1611, 1}, + .VDDUP = { 1612, 1}, + .VIDUP = { 1613, 1}, + .VDWDUP = { 1614, 1}, + .VIWDUP = { 1615, 1}, + .VMOVNB = { 1616, 1}, + .VMOVNT = { 1617, 1}, + .VQMOVNB = { 1618, 1}, + .VQMOVNT = { 1619, 1}, + .VQMOVUNB = { 1620, 1}, + .VQMOVUNT = { 1621, 1}, + .VSHLLB = { 1622, 1}, + .VSHLLT = { 1623, 1}, + .VMULLB = { 1624, 1}, + .VMULLT = { 1625, 1}, + .VMLALB = { 1626, 1}, + .VMLALT = { 1627, 1}, + .VMLSLB = { 1628, 1}, + .VMLSLT = { 1629, 1}, + .VSHRNB = { 1630, 1}, + .VSHRNT = { 1631, 1}, + .VRSHRNB = { 1632, 1}, + .VRSHRNT = { 1633, 1}, + .VQSHRNB = { 1634, 1}, + .VQSHRNT = { 1635, 1}, + .VQRSHRNB = { 1636, 1}, + .VQRSHRNT = { 1637, 1}, + .VQSHRUNB = { 1638, 1}, + .VQSHRUNT = { 1639, 1}, + .VQRSHRUNB = { 1640, 1}, + .VQRSHRUNT = { 1641, 1}, + .VMOV_Q_R = { 1642, 1}, + .VMOV_R_Q = { 1643, 1}, + .VMOV_2GPR_Q = { 1644, 1}, + .VQDMLADH = { 1645, 1}, + .VQDMLADHX = { 1646, 1}, + .VQDMLSDH = { 1647, 1}, + .VQDMLSDHX = { 1648, 1}, + .VQRDMLADH = { 1649, 1}, + .VQRDMLADHX = { 1650, 1}, + .VQRDMLSDH = { 1651, 1}, + .VQRDMLSDHX = { 1652, 1}, + .VHCADD_SAT = { 1653, 1}, + .VCMLA_MVE = { 1654, 1}, + .VLDRB = { 1655, 1}, + .VLDRH = { 1656, 1}, + .VLDRW = { 1657, 1}, + .VLDRD = { 1658, 1}, + .VSTRB = { 1659, 1}, + .VSTRH = { 1660, 1}, + .VSTRW = { 1661, 1}, + .VSTRD = { 1662, 1}, + .VLD20 = { 1663, 1}, + .VLD21 = { 1664, 1}, + .VLD40 = { 1665, 1}, + .VLD41 = { 1666, 1}, + .VLD42 = { 1667, 1}, + .VLD43 = { 1668, 1}, + .VST20 = { 1669, 1}, + .VST21 = { 1670, 1}, + .VST40 = { 1671, 1}, + .VST41 = { 1672, 1}, + .VST42 = { 1673, 1}, + .VST43 = { 1674, 1}, + ._COUNT = { 1675, 0}, } diff --git a/core/rexcode/arm32/tables/arm32.bucket_list.bin b/core/rexcode/arm32/tables/arm32.bucket_list.bin index 42760220ab0359f02624a78cb351e33eba0e1de0..eef85fd706af0c1944fdede7767d1fedf3bdea16 100644 GIT binary patch delta 3828 zcmcZ>2*pk^&CO?%@WzJ*EpUf$(E!o1> z%GS!(#@5Ex4u&0UoowxFU2I*GJ*8(_e`Wc?@|NWz%O{o(ET384vVi!HS)Q;wWqF1q z4ibf_fwL#e%4pYfu!6!!l2r;EE^@4ztXizPtOl%xtR}3ctY)m{tQM@6tWK=XtS+ps ztTC)G_0mxF_*J8tjYVxelF|QI{u|-vLJCzoHC%S07~|tEok|H5)7 z+<9&&{(>m}!}6B}l$B9kis?{@YJOI2R=vpw#U)t<;4DE_9aep?m=K&rq`G=YMkbz& zV@+U9WKCktVFeX(Wvr#FLRg2`TJAs&XJjB~%517tfl=ngT8=bLv@(Ss@w{ zSu1RVT7$u;xI`NMx-? z2qUu!;fixu3*m}$Sc_2D5ThZMLDOjdzkPGhQps4T4q*9;J82ss6+38DZZ1|cCL z5E3E+A*VuhKzPXVlb|vXu^!e*Q0GJV6Ie@G>p>M0gxkm3kD|Prbuv^r#NZ0nO4cgY zYStRoI@WsD2G&N_X4V$gR@OGwUbxCy)+W{t)=t(gsLqK{6CozFLq#DxQ2K%TKNVcV zLWIG!D{DDC>3~v2F;pX{c7>&vY^c%MP&xeR0^&tXvK}Io0W}Q5gOIRzhtWk)HLx@Q zQH4z6ig$>|ASAN-Qr5D1)^e!(r$A|B1rRL|5>p%&?+_V?DhP=zf}aibKcr~_(Tq$& zG-Hx8p^lx)I)`;W>pa%Qtg~5Xu`Xp@$-0Pj1?y_oRjkWdm$EKnUBJ4KbqVVl*0rn~ zSf8@KX5GyCl=U6!de&#GuUI#+K4X1b&$^EFIqOT-jjYdE->|-5eZjhubrowLptovDyvYuwW$am$~WtdCj0 zuzq5#2Q|A`*x1-O*;v@v**L(>Fc1&K{>}P_^)Kr`*8i*wY}{;LS--J1JVLsb`Y`x7t9hG&xo!Hc)#6)(q2S)nUWc zGOY;drUZU7>tPLhkl`e{ z9qx29HVcA|hp0hs7%A67yB^qs2cik&BlHFmeqX^n1<|j-rpTrQ?$qe9>ae-7y0dz) zda`=4db9elPF^R^CJ?|H$cn6F@&b7gK9Hai8>k}$?gSx(bXc|7U_wG5RjB5JG~+W7 gSvwX>DnKUcK>JtdG;)6s)(?dA{LodR^9kz&012+Wj{pDw delta 3788 zcmcZ=aw%j3hlF${YZhw`Yc^{xYaVMpYXNH^YY}S+YcXpnYuRLF32S=@JDD|wHI+4u zHG?&sH4{U9F>48HDeDy0sjSmjr?XCCoy-amnZY`9@?43V^=xeHY#eNyY+P*IY~NVE zv;1KB$?}WkHwzCNFB=~lKbruXAe#`IFq;UQD4Q6YIGY5UB%2f)11lpd6Du<-3o9$D zG@A^YEE^XqH!BaT9Gf7k5UVh&2&*Wo7^@VkG^;$D467`w0-GGGJgWk$BC8UsGOG%! zDytf+I;#e&qAZ&dn=+dUn<|?cn>w2YnxE z`fLVlhHOS`L9D^7A*`XS#%v~RrfgPHawW&TP(XE|cd=>5E6R#jwS)#j(Y+C9oy3C9x&5rLd*2rA~e*r8=2QT1&K< zt%a?HtrZO0*xK1z**e%dCi_aywEn{KmE|qV2bNDPA6Y)Lyk!CLAG17RdCKw(NgN~! zQv+vDR+Q1MXJZA0kvOXaI9z1F{?}&JW7TIhVl`$pVKrqnV>M@WV0C15Vs&PXVuh)f zgsRtI#itt8Y%FT)k&OPs@|Wcw%YPP-CLUICR+tsCtZJ-Sv?A#Q=^)MnVXRSL55vr^ z$7e81G0bQ}YEeA^vjVU4>sg&yLDqm0IXf!{Dhk>I6F=mP*wmXdr)#WV6DeA9HN~xr-ZXc;&2Q^29|$exfAX@ zClr4{6oaxcsw*)a2~o+*s>!M|d9S!6D<7Q2&#J|$3l{vheji-fv`*J!LaYdCP5a1uqQyxg6QvJod9(Z zM7EE$gtZ=2i9xtMti34Govag~e2Dfk)^gSg)=JhY)*9AY);iXD)<)JQ)@Ifg)^65` zP>ZTr8(7;|+gUrH{C=nj5F1)ic-gEutWf_avw}I`uz=O9Fd9^w!qP}OYX&^MWJ0aT zgc^#RE+E!HNQmPhYzT=gQV$VIgBk|mK@{Xe4TjOM_=eFCwGa}bBNb{&9vTf%gGrXK z7T2?uLal+tJH#l6Vh9^TLPU_s$xv$`@|YyDS_m6c4b=aTW(lSuhzKS*9qQ=Wtg~3> zvd&>$$U2jC2J2$h<*W->m$9y7UBSAPbusG_)_JV+Sr@UcVqML;j`cC?OV*97k6GWa zu4R3~`hs->>l4=3^{i`HpRzt@UC;WI^%d(g)@Q8SS$DARWZlKOoAn^;an`e}msxMJ zZf4!Wx|MYs>mJratS4B{v0h=l#k!aEFzZRy^Q>1{Z?kS<-OqZI^)%~6*6XZySr4!t zV?D!qiS-8SJ=T4!M_5m>USPe(dWZEs>s!`$tdCefvOZva&-#${6YB@odQLVDHYPS! zHa0dUHWoH^HV_}g1F?Uy{$l;j`iJ!|>pxabw$H3zSiiDN&tRfXrlKV`78pW@2NiXOjZA*g!2b8CC^0P+JVv1k+~KV#C!cF-Os*!Ah>4dQe*r zzeU{OCMT%9!2@joftrz^_6c#8;`LxXP9GYxk>f{Fb=5-}d0=f6`4eOUs6_*7a>Lp( ziqLko78|y9i+(+{Egi~g%4WfaUomkiKz#({rUZU7>tT(0kl`e{9qx1!HZy{bhp0hs z6e-r@4IYRlkdM$CNcepP^AtqC9Gg6w0=Pq?!>YyR!s^QE#_G=M!RpEC#X9+nI2RAH x^yGcw5?l&wpw17t(D461JEMX$10$oT7!ylGxB$Ze_5y|n z{Ok-25J7I9$neR6e8P?q;Qdr! z<-5ULAIicYz_5VLfZ+i@D+7ZG1ET~h19un?0|NuYXN86fAahK?f=pnQ4`3=Gf)JGr zFqLKuj1r6tAe9FE3)nvJe*l>Y5rn8z`267m*lp%em7**R2K*0TN+F`$VVf@s^>Z_N zPEM2)(e?#719x5U|{f?d|xh@(Q~q~yuFwo0|UcG z1_p+|3=HgyGLslsG#D5J{U&$F+iLrZfh<>GX85pypMim4DuW&)1A{*cSdj6!m|Ns9SD1!a_KZ6As6&Ar&Iv`Xc2_jT3hNu)}U|>i`KNkbTCWzN3d#YT5*gb)jfuR5tmOB_2wHX-L>?a$lifB84 zteL=qDrE;2WEX&`XVGS05OJJbpej-il8RtpVE6}00t`DCKvIIX3=9kzuyg?x6afj& zKoSI5$_Mu9g&zzI;PeP_2_MKzhJYUj_>l!2L2iiu!N5=t$_+aqZnmihi8jD|0u{9f z2`)er1beIj<}s*BuuTmxkL`rG9wZn5_YzbPmh<7whWV-)P%Lco;U#W1jJ~F zCmdj&*ada(i5276s zx)Wdyg9_S#!%P6?vfWUZfx_$n%uP^1utOi934$GZ0OnArO0Yu@z#O_8;ZRU2grp6q zpe@7XOX|=tYk)ZoVhSY87+@~j196${WC0Cum~CMA!1w`@1ffz63=A6>E-;`9+JOWo zFn-_%C+*-&p@Oyyla(}~VYUF~G>9pXFjIiJY#-ERlM^(-VRiu# zW>6^y28IiWFoO!(fdt`Uwh!TyFt}47Dj~r$;U_f1LIuIGFYptZVfRDbP!FmtF2F(p zDryfBgvTRP&;cX}k4LDW9Y_%Fru_&v#lhVKQ3-L=2AG?mf_4m(i?oEbZ9zVR#1S(C z!vToX>_LK%I6??IOx~a+GI_lg>*SMKst&dw+u`~S!u5S%fa`+_f*lWuTV@6ZsG!|s zJ#Eb_a8}s>%PNN+`0hW}GLj@-v)D{r~M=f0H zBvfkiYwgu6_0BGC?hFhJd;;LQm*FLYu9A)pRPdhw0|TfIdc~lt#Hi!!!sadjRw)3g z9bO{~{u5vj0I7U~Bq+cqzyMbH7FiIc@*PN!(YfA(jh%tPfro(s+!}cg5rqi;0VO6@ zP0iL22e^!W#r@(U{KeLVh~_x_$&Yu_c)@LrlxAq}COvEdU`dm1BLJ0sj8xJoSs0YOV4fds)ufdpZW&O|tx8E$eW%w&cDX1JrX z5Gq;W7G=RyYB2<`!fnb%C}n{w&4wwRESr)6@(DZKz8tvJ>=aGyC z$tA#`t^*eQ3>D0S32uI$lEMgzM1+O{m>fd@X9G+_AwrM?Ecjo5fuRU4D8K=?uNW>E zfDkNUufm@Ih~Rv??vfk9n|fq{W-+vf}X`~QnFFf4{Uf`OL->|BuGWQ9VJ`Xvab za2S9cEy}>K6fWq%!vGUp1~){21L9|K28LyDl>rxS?g0PNd^1@<~dKN5( z9ALqs{s2PdRz@yPJ_aofO$G-pxOK>aaP7!~aNi*d%EPVShA@-~Zs@kj7fVF6QKVqO zk1Pl`Wcy@+QW3@N2&35GPC*u&{INttoDHsP2SPpfgvo}b!u8y6Z95Ti%y4HR3&K_I zLa1bit3(!rtK1Ebt^*7ZK|ThC-SC(>zyJ*uJ_d$82&K?S0SQi4EECb*3zu@>gV@K# zz{upJ&kxtN522nP5_e$r@a)A8H)KB} z7Z(GAmJS1h1N(;m7x_2;mu6Hr02e%f5Io4p!NI_wqQ=1Bz_sBYs8r==R5%0|Jiz4% z7d_0#rOm~l#iPT(z&GK~Mg9-}q!|^Czy&ApP5AQ>B6t)o=)eybJT|$oTtxdgT#A7& z;SJP~6L7%^dMBA#6GCuuK$Qp&k`&iu!zvL*W-!SPBI~)~ zimxMF%+LUHFp?k(HbD-!;0=TW7#m;?MiOMjCdg?57rlwl&xB2o4Iwx=v06m?7D7EU zTnb5$9U(Y*LA6NzZAK0b0ch^u2W|rLGB6+u?#Cv$3!C6>Y=Zmv4)E^>b)k{X+yxf| z)%T!|B?E&4HRkMd4(hh8uV-UC&j4p z8thO|KrlXV`0)QfNTtFXBteD`|NnzjD!c_5$&d&tV-N6uVEh1by~;brdeA%%L{uIo z`X25k#s~bMnGujjzcMN^3NR#bCxZgu9Rowde_2L_Z^(lGpn~6#1RG!~e;^CORQ_aC ztY>5tNaE&6W?*o5$G~s^WauwOMTFo#sNioT!2>Xre~<-XD*u868I!;P4YD3==09XX zn9Bc*ij4J)P^EA~8JH9q;es%wj7*9g0t`tiAm1yzVPG%-Ih2t}kyC&nNgX6;025?F zR{002k_lNQOpuvLk%OaNAW20nnSmhzrk|Nfk&{y(NnJCUfuR5<$O2LdQwh`0f~*oI z$O=-)k))!k#=y`3)6NP~$(aQ1y-a`!vVm3BLzTkxvmq;m39>U8X>oBSFlg&A@H77V z(9Z~JDsV6vfhNBg7#Mu{3;%(#gEXT8Cljpm#K_P1?<4=l|I&;KTuh)e1H!)ihA@@f zOrTW81DZBud;v9Vj7`SynGl(DGUF81^8gb&Cys$w;n~#Z+k&A&F)L!B5 ze0P!mKS+unE~tPI6qx*=K}1Oq$*2b~qlDms4g8NLGd7CU!=*&vQVjg>z~;*^Du^Np zzJUpf!37%-D#eim;VLDVK-Dg{whjX$f5W>#fsG(HOTq;i_&0dG3*-ljO2I`H_&2}= zrQw1M@*Ca-%7azPzy%c$g0ho8Hi~G=fr5jJn@3wmfv*9kULG#UAlCphSz)q4lSsWH z+$cuA4gUfKz|o}y7gR(DD#HaC<=`q+;DU+>K~=bQj1V_~;#CbUsE80$uZN2=f?Ni% zUIQ+uh!E6-3o?KL5)x!ua6tu-AS86O;erhEaNp{{1rQ zFwln!GRjR(Y!;r}+00#U2=^`nB8rUQf=KaZ3>M@xF=b%n`|$1~|3^?5n7{=U5rU@h z48y=@0FE3PMg=p3AU^|GP?}M}yq<}Ri;+P~o0lO$j`3Zgd?P3^Suk-iiZW>NN--SZ zXL$FKADoLUnYb7Q7_@kk8S>;A-_=1>S|J4a;eysoT#SqYTD&~T3G$5Z3Lq+N5Q6-0 zL0cwGSSO^B&+y+xd2lDhjtMR(2N$%TJh4SY+W{`cC};c*s@@SU*vMxH6Lgw;?*rgU9T2_` zgbO+%!YK$Lh)@{}7d(Ja8G;Z*s0?M|s)vsBAK-^ODhydE%=zI={EQ3?T6_!)0^AJm zYH9KDGw?IK5rn9Wf`=#rBABC@xVQo#fzN;l z=NM$A{{rP3K{mxA1mzfDf^l#`Mueg9lMUNNv=fk}VCoYQf(S#BCKt4e)F*?aKtp=Q z4jc-9KFTNllVMayVdBzeV9)|B1CX2WmO*|4$R(+8!3MbrZyO+jX>dUXdAMLYT(AKl zm;o1LkZXXMnOP4PZIEk#8JYzbWRQmoX2S&=5P~^Oh9HN6W~$^S{P`~jc4#hKPyr#B z2Nz^S2<9`@!}Kd6L<`_b9T9?saKS``U=du9L9PL2eKA~60U=ld7i2^TmNFUIK%K9M R5G{i%bwmi3!vzx&f&he<$0`5- delta 9604 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 diff --git a/core/rexcode/arm32/tables/arm32.encode_runs.bin b/core/rexcode/arm32/tables/arm32.encode_runs.bin index 6c203837947aa55deae512c34275b47bdef18341..c5afc73b47f85f49e02a02ee296fce3bc5f505c1 100644 GIT binary patch delta 46 wcmaE$enNf28=lQycs8(1-Xf^5`Hr9m<76G-4I+#T3=Cat3=AN;n~ebs0Fo38AOHXW delta 46 zcmX@1{y=@h8y-f6%};r@vv4vnFfh2WF)%Ppo+_x$$gp{{ A+yDRo diff --git a/core/rexcode/arm32/tables/arm32.entries.bin b/core/rexcode/arm32/tables/arm32.entries.bin index 30420da2c064f50ce21675fccf6a54abbd737efc..3f46963f35f79cdafd132d7b0a211bdd685b4d1f 100644 GIT binary patch delta 9581 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 Oj^77VQ9OVdCjtO(ru^vu delta 9694 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 diff --git a/core/rexcode/arm32/tables/arm32.form_idx.bin b/core/rexcode/arm32/tables/arm32.form_idx.bin index f7c700b7235230015a688315a5f8b40903d372c4..8c1d371a14db08a38c57208fedc3316b9c9afcbf 100644 GIT binary patch delta 607 zcmbOvHBD+m3?nBW11AFq0~-U^yB?$uk+Vnb{baC$lp}GqW;qPEKXYbrxfg zWDsW%WsqQi0WJn^1}+9c1`!561_1_P27U$}25tsk1|bFp1~#xFP6ieR4hAL$Rt9zk zW(Ky&qRh3-j0`N3r!uQDvor8c-pee{%+A0$`98BTGaCcPW>FSf#(Gu;W(H;k2+7RA z$iN8ZGcYhQfOsI90nB1#U|;}YuuWhqL3&ugo?&NTVgRw2z#fBG4^hj=zyvmlm4ShQ zg#p9^nZm@tz`)AD$iTwDTo0B8DFzwA3|0nm4infRAcY`hAjKe!Am>1w#liqG669Ej z1uRe_AtE5lK1;l z@-Ph23o;L)7bFjoVPgO}79s|+0VEFMfmAX~KF=n}%*4R3`88WKlPt&pkQ6%u2LmTK sRzbc88N$NAIysrMb}|Q#z+@eErOkX?zZfS!;ACNDWMJ6L&%?|J0Fu8ReExV-RP60WJn^1|9}M23`gc24Mzn20jKZ1_1_s1|bGEs1g#`2uw4`fgnRbG9bMy3`oW? zfb@c_h3E%`2FP@feh3CRihBvqUa_r9;V3;I0Yul@caS*+i)Ok diff --git a/core/rexcode/arm32/tables/arm32.idx_t16.bin b/core/rexcode/arm32/tables/arm32.idx_t16.bin index 2dcd45976fd2359f514d38dab90c92917dcf61f1..b8cc677725fb84360a8fc25c093b4dcc4dc95bf0 100644 GIT binary patch delta 190 zcmZo*YG8`D=VfGY;ALcRuT=4E7X;bmlS=;$>v;=4E8? z;bmm-<7H&<=VfFF;ALb8Y;$>pU;bmgT<7Hwf;ANVa z?j6R+(8|lm(8kNo(96rj(9g@lFqxNwVKy%#!yH~lhPk|q4D)yy8RqjcGA!U_WLU_{ U$gqf)nPDj}Bf~OYMh08}0C?XO_W%F@ delta 148 zcmZo*YG6{guT=4E1VrOe$Z(LCk>L<8Bg0`{MusE2 zObo|(85xfAGBTXtWn?(X%gAtwmkGnKXLuPI&hj!coa1F=IM2(-aDkVJ;Sw)1!&P2J zhHJcx4A*(t8Se42Gd$&GWO&BQ$ncz(k>LdvbC3;w#mflizUF0Qc*D!c@Rpa6;T@7V zNWptvMurc(j0_)<#6R&eF?``=WcbR<%!vp~~hG_z9408mS8RiQxGb|EdW>_k~!mv_+g<-7#3&TbMW`->S%naKF zm>G5nFf;5GU}iWVz|3%1fQ8|>05iiW0cM7?0?Z5-1eh5v3otWW6JTbzDZtEdM}URl zfdDhZV*zG{X9CO&F9lc_-U=`?d=Ow|_$t86@I!!w;g0|_!+!x*1{OhP26jPK1|C6X z27W;y21P**22DX023Ig3Ju31eqDm3NkZX5M*Y!EXd4oO^}7* zmLN03T|s7s2ZGEDj|G_-o(VEDycA?+cq7Qn@LrIa;gcXU!&gCOh982=48H~07#M|^ z8CZmv8Q6uG8MuU)8F+=583crw8H9yc7{rAb86<=l86<@m8Ki`m7-WPP8DxbJ=~`Zh zkwHO-i9tz-kwICAkwHa>kwFzn9+allg&_G)14@I$kg+CIy*3tk9U*20eIaHBBOzu6 zQz2#s3n69(YawO^J0V5}dm%;!2O%y7FCi|55Fs{(C?Q6MXdyO+L?JeYbRjmd6}dvp zU>cbyK(eP$h>@X4h>@XKh>@X0h>@WbDpv-j%Y_&jDufsrDutLCYJ`{>>V+5?8iW`b z8ikk`nuVAcT7}pddW5(crVBAM%o1W|m@CB2utbQRVYLtw!&<1nKz6SeVr19=H50@~ z#v6rL7`6&AGHk;lzgq2;%updB#Ly)o$S_+(kYSC8FvETkA%=@0 rf((yD1Q|YyurPcVVPW_!!ou)hM36y1l!ZY=l!ZY;l!ZY?RFDAx0kXkD 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)sjPmh!SOtmb86 zSj)@Eu#T6JVLdM+!vLO@Bf~*nMutPY zObkbO85xf9GBOME@bC3;w!OIBezT{WcbX>%fFMuy+K>msLx2DaLx=z?L!G5oFf;5CU}o4az`}4?fSKW#05ii$0cM6X0?Z8O1(+Ew2{1EU6<}t#A;7|L zM}V2(z5p}BBLQZHrvfYtF9nzx-UzTVd=y}2_#(i<@I!!^;kN)Q1A`zl1G6A21BW0p z1Gk_MgRCG2gQ_44gQg%egN`5zgMlD3gRvkhgM}a)gPkA?gOeZ&gPR~5gO4B^Ly#Z~ zLzo~7LzEy3L!2NhL$V+24E#bY48lT;3?f2|45C7e3}Qk|3=%?&43a{KbS*8! z$RH!c#2_cc$RIDo$e$XFGsULA|Ph7dD@wh%Leo)9yG zp%62Ji4Ze`xezmhl@KF?wGbnNjSv@un-CX6fDju)m=GgFxDXpdtPmSRvJe~CicBG9 zFpW&)AlZ{E#K@2*#K@2@#K=$}#K=$xl`DeM#X^h>B|?l0r9#XM6++Am)k2I6HA0LG zwL(k`^+HSxjY8}U9YWj;lZBWWrU@}K%oJj0SRlmCuw00VVI|aGAiGx!F*2-ynhD|~ z$?Q88%^&-z+46VsI2uU`P}ZW+)L6VrUZ)WSA}@$go00m|?ew5W`s! rL56!Gf(-9PSQtKwurPcVVPW_!BFMla%EBNZ%EBNb%EBNaD#!o;o$|i$